```BN_add(3)							     BN_add(3)

NAME
BN_add,	BN_sub,	 BN_mul,  BN_div,  BN_sqr, BN_mod, BN_mod_mul, BN_exp,
BN_mod_exp, BN_gcd - Arithmetic operations on BIGNUMs

SYNOPSIS
#include <openssl/bn.h>

BIGNUM *r, const BIGNUM *a, const BIGNUM *b ); int BN_sub(
BIGNUM *r, const BIGNUM *a, const BIGNUM *b ); int BN_mul(
BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx ); int BN_div(
BIGNUM *dv, BIGNUM *rem, const  BIGNUM  *a,  const  BIGNUM  *d,
BN_CTX *ctx ); int BN_sqr(
BIGNUM *r, BIGNUM *a, BN_CTX *ctx ); int BN_mod(
BIGNUM  *rem,  const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx );
int BN_mod_mul(
BIGNUM *ret, BIGNUM *a, BIGNUM *b, const BIGNUM *m, BN_CTX *ctx
); int BN_exp(
BIGNUM *r, BIGNUM *a, BIGNUM *p, BN_CTX *ctx ); int BN_mod_exp(
BIGNUM  *r, BIGNUM *a, const BIGNUM *p, const BIGNUM *m, BN_CTX
*ctx ); int BN_gcd(
BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx );

DESCRIPTION
The BN_add() function adds a and b and places the result in r  (r=a+b).
The r value can be the same BIGNUM as a or b.

The  BN_sub()  function	subtracts  b from a and places the result in r
(r=a-b).

The BN_mul() function multiplies a and b and places  the	 result	 in  r
(r=a*b).	 The r value may be the same BIGNUM as a or b. For multiplica‐
tion by powers of 2, use the BN_lshift() function.

The BN_div() function divides a by d and places the result  in  dv  and
the  remainder  in  rem (dv=a/d, rem=a%d).  Either of dv and rem may be
NULL, in which case the respective value is not returned. For  division
by powers of 2, use the BN_rshift() function.

The  BN_sqr() function takes the square of a and places the result in r
(r=a^2). The r and a values may be the same BIGNUM.  This  function  is
faster than BN_mul(r,a,a).

The  BN_mod() function finds the remainder of a divided by m and places
it in rem (rem=a%m).

The BN_mod_mul() function multiplies a by b  and	 finds	the  remainder
when  divided by m (r=(a*b)%m). The r value may be the same BIGNUM as a
or b. For a more efficient algorithm, see BN_mod_mul_montgomery(3); for
repeated	 computations  using the same modulus, see BN_mod_mul_recipro‐
cal(3).

The BN_exp() function raises a to the p power and places the result  in
r  (r=a^p).  This  function  is	faster	than  repeated applications of
BN_mul().

BN_mod_exp() computes a to the p power modulo  m	 (r=a^p	 %  m).	  This
function uses less time and space than BN_exp().

BN_gcd() computes the greatest common divisor of a and b and places the
result in r.  The r value may be the same BIGNUM as a or b.

For all functions, ctx is a previously allocated BN_CTX used for tempo‐
rary variables. See BN_CTX_new(3).

Unless  noted  otherwise,  the result BIGNUM must be different from the
arguments.

RETURN VALUES
For all functions, 1 is returned for success, 0 on  error.  The	return
value  should  always be checked (e.g., if (!BN_add(r,a,b)) goto err;).
The error codes can be obtained by using the ERR_get_error() function.

HISTORY
The BN_add(), BN_sub(),	BN_div(),  BN_sqr(),  BN_mod(),	 BN_mod_mul(),
BN_mod_exp(),  and BN_gcd() are available in all versions of SSLeay and
OpenSSL. The ctx argument to BN_mul() was added in SSLeay  0.9.1b.  The
BN_exp() function appeared in SSLeay 0.9.0.

Functions: bn(3), err(3), BN_CTX_new(3), BN_add_word(3), BN_set_bit(3)

```
[top]

List of man pages available for DigitalUNIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.