.Dd $Mdocdate: February 23 2015 $ .Dt BN_CTX_NEW 3 .Os .Sh NAME .Nm BN_CTX_new , .Nm BN_CTX_init , .Nm BN_CTX_free .Nd allocate and free BN_CTX structures .Sh SYNOPSIS .In openssl/bn.h .Ft BN_CTX * .Fo BN_CTX_new .Fa void .Fc .Ft void .Fo BN_CTX_free .Fa "BN_CTX *c" .Fc .Pp Deprecated: .Pp .Ft void .Fo BN_CTX_init .Fa "BN_CTX *c" .Fc .Sh DESCRIPTION A .Vt BN_CTX is a structure that holds .Vt BIGNUM temporary variables used by library functions. Since dynamic memory allocation to create .Vt BIGNUM Ns s is rather expensive when used in conjunction with repeated subroutine calls, the .Vt BN_CTX structure is used. .Pp .Fn BN_CTX_new allocates and initializes a .Vt BN_CTX structure. .Pp .Fn BN_CTX_free frees the components of the .Vt BN_CTX , and if it was created by .Fn BN_CTX_new , also the structure itself. If .Xr BN_CTX_start 3 has been used on the .Vt BN_CTX , .Xr BN_CTX_end 3 must be called before the .Vt BN_CTX may be freed by .Fn BN_CTX_free . .Pp .Fn BN_CTX_init (deprecated) initializes an existing uninitialized .Vt BN_CTX . This should not be used for new programs. Use .Fn BN_CTX_new instead. .Sh RETURN VALUES .Fn BN_CTX_new returns a pointer to the .Vt BN_CTX . If the allocation fails, it returns .Dv NULL and sets an error code that can be obtained by .Xr ERR_get_error 3 . .Pp .Fn BN_CTX_init and .Fn BN_CTX_free return no value. .Sh SEE ALSO .Xr bn 3 , .Xr BN_add 3 , .Xr BN_CTX_start 3 , .Xr ERR_get_error 3 .Sh HISTORY .Fn BN_CTX_new and .Fn BN_CTX_free are available in all versions on SSLeay and OpenSSL. .Fn BN_CTX_init was added in SSLeay 0.9.1b.