Caution: As a special service "Fossies" has tried to format the requested manual source page into HTML format but links to other man pages may be missing or even errorneous.
Alternatively you can here view or download the uninterpreted manual source code.
A member file download can also be achieved by clicking within a package contents listing on the according byte size field. See also the last Fossies "Diffs" side-by-side code changes report for "BN_bn2bin.3": 2.9.0_vs_2.9.1.

BN_BN2BIN(3) BSD Library Functions Manual BN_BN2BIN(3)

**NAME**

**BN_bn2bin**,
**BN_bin2bn**, **BN_bn2hex**, **BN_bn2dec**,
**BN_hex2bn**, **BN_dec2bn**, **BN_asc2bn**,
**BN_print**, **BN_print_fp**, **BN_bn2mpi**,
**BN_mpi2bn** — format conversions

**SYNOPSIS**

**#include
<openssl/bn.h>**

*int*

**BN_bn2bin**(*const BIGNUM *a*,
*unsigned char *to*);

*BIGNUM
**

**BN_bin2bn**(*const unsigned char *s*,
*int len*, *BIGNUM *ret*);

*char
**

**BN_bn2hex**(*const BIGNUM *a*);

*char
**

**BN_bn2dec**(*const BIGNUM *a*);

*int*

**BN_hex2bn**(*BIGNUM **a*,
*const char *str*);

*int*

**BN_dec2bn**(*BIGNUM **a*,
*const char *str*);

*int*

**BN_asc2bn**(*BIGNUM **a*,
*const char *str*);

*int*

**BN_print**(*BIO *fp*,
*const BIGNUM *a*);

*int*

**BN_print_fp**(*FILE *fp*,
*const BIGNUM *a*);

*int*

**BN_bn2mpi**(*const BIGNUM *a*,
*unsigned char *to*);

*BIGNUM
**

**BN_mpi2bn**(*unsigned char *s*,
*int len*, *BIGNUM *ret*);

**DESCRIPTION**

**BN_bn2bin**() converts the
absolute value of *a* into big-endian form and stores
it at *to*. *to* must point to
**BN_num_bytes**(*a*) bytes of memory.

**BN_bin2bn**()
converts the positive integer in big-endian form of length
*len* at *s* into a *BIGNUM* and places it in
*ret*. If *ret* is NULL, a new *BIGNUM* is
created.

**BN_bn2hex**()
and **BN_bn2dec**() return printable strings containing
the hexadecimal and decimal encoding of *a*
respectively. For negative numbers, the string is prefaced
with a leading minus sign. The string must be freed later
using free(3).

**BN_hex2bn**()
interprets *str* as a hexadecimal number. The string
may start with a minus sign (‘-’). Conversion
stops at the first byte that is not a hexadecimal digit. The
number is converted to a *BIGNUM* and stored in
**a*. If **a* is NULL, a new *BIGNUM* is
created. If *a* is NULL, it only computes the
number’s length in hexadecimal digits, also counting
the leading minus sign if there is one. A "negative
zero" is converted to zero. **BN_dec2bn**() is the
same using the decimal system. **BN_asc2bn**() infers the
number base from an optional prefix. If *str* starts
with "0x" or "0X", it calls
**BN_hex2bn**(), otherwise **BN_dec2bn**(). If the
number is negative, the minus sign can be given before or
after the prefix.

**BN_print**()
and **BN_print_fp**() write the hexadecimal encoding of
*a*, with a leading minus sign for negative numbers, to
the *BIO* or *FILE fp*.

**BN_bn2mpi**()
and **BN_mpi2bn**() convert *BIGNUM*s from and to a
format that consists of the number’s length in bytes
represented as a 4-byte big-endian number, and the number
itself in big-endian format, where the most significant bit
signals a negative number (the representation of numbers
with the MSB set is prefixed with a NUL byte).

**BN_bn2mpi**()
stores the representation of *a* at *to*, where
*to* must be large enough to hold the result. The size
can be determined by calling **BN_bn2mpi**(*a*,
*NULL*).

**BN_mpi2bn**()
converts the *len* bytes long representation at
*s* to a *BIGNUM* and stores it at *ret*, or
in a newly allocated *BIGNUM* if *ret* is
NULL.

**RETURN VALUES**

**BN_bn2bin**() returns the
length of the big-endian number placed at *to*.
**BN_bin2bn**() returns the *BIGNUM*, or NULL on
error.

**BN_bn2hex**()
and **BN_bn2dec**() return a NUL-terminated string, or
NULL on error. **BN_hex2bn**() and **BN_dec2bn**()
return the number’s length in hexadecimal or decimal
digits, also counting the leading minus sign if there is
one, or 0 on error, in which case no new *BIGNUM* is
created. **BN_asc2bn**() returns 1 on success or 0 on
error, in which case no new *BIGNUM* is created.

**BN_print_fp**()
and **BN_print**() return 1 on success, 0 on write
errors.

**BN_bn2mpi**()
returns the length of the representation. **BN_mpi2bn**()
returns the *BIGNUM*, or NULL on error.

The error codes can be obtained by ERR_get_error(3).

**SEE ALSO**

BN_new(3), BN_num_bytes(3), BN_zero(3), ERR_get_error(3)

**HISTORY**

**BN_bn2bin**(),
**BN_bin2bn**(), and **BN_print**() first appeared in
SSLeay 0.5.1. **BN_print_fp**() first appeared in SSLeay
0.6.0. **BN_bn2hex**(), **BN_bn2dec**(),
**BN_hex2bn**(), **BN_dec2bn**(), **BN_bn2mpi**(),
and **BN_mpi2bn**() first appeared in SSLeay 0.9.0. All
these functions have been available since
OpenBSD 2.4.

**BN_asc2bin**()
first appeared in OpenSSL 1.0.0 and has been available since
OpenBSD 4.9.

BSD December 19, 2018 BSD