=pod

=head1 NAME

BN_zero, BN_one, BN_set_word, BN_get_word - BIGNUM assignment operations

=head1 SYNOPSIS

 #include <openssl/bn.h>

 int BN_zero(BIGNUM *a);
 int BN_one(BIGNUM *a);

 BIGNUM *BN_value_one(void);

 int BN_set_word(BIGNUM *a, unsigned long w);
 unsigned long BN_get_word(BIGNUM *a);

=head1 DESCRIPTION

BN_zero(), BN_one() and BN_set_word() set B<a> to the values 0, 1 and
B<w> respectively.  BN_zero() and BN_one() are macros.

BN_value_one() returns a B<BIGNUM> constant of value 1. This constant
is useful for use in comparisons and assignment.

BN_get_word() returns B<a>, if it can be represented as an unsigned
long.

=head1 RETURN VALUES

BN_get_word() returns the value B<a>, and 0xffffffffL if B<a> cannot
be represented as an unsigned long.

BN_zero(), BN_one() and BN_set_word() return 1 on success, 0 otherwise.
BN_value_one() returns the constant.

=head1 BUGS

Someone might change the constant.

If a B<BIGNUM> is equal to 0xffffffffL it can be represented as an
unsigned long but this value is also returned on error.

=head1 SEE ALSO

L<bn(3)|bn(3)>, L<BN_bn2bin(3)|BN_bn2bin(3)>

=head1 HISTORY

BN_zero(), BN_one() and BN_set_word() are available in all versions of
SSLeay and OpenSSL. BN_value_one() and BN_get_word() were added in
SSLeay 0.8.

=cut
