.Dd $Mdocdate: February 23 2015 $ .Dt BN_CTX_START 3 .Os .Sh NAME .Nm BN_CTX_start , .Nm BN_CTX_get , .Nm BN_CTX_end .Nd use temporary BIGNUM variables .Sh SYNOPSIS .In openssl/bn.h .Ft void .Fo BN_CTX_start .Fa "BN_CTX *ctx" .Fc .Ft BIGNUM * .Fo BN_CTX_get .Fa "BN_CTX *ctx" .Fc .Ft void .Fo BN_CTX_end .Fa "BN_CTX *ctx" .Fc .Sh DESCRIPTION These functions are used to obtain temporary .Vt BIGNUM variables from a .Vt BN_CTX (which can been created by using .Xr BN_CTX_new 3 ) in order to save the overhead of repeatedly creating and freeing .Vt BIGNUM Ns s in functions that are called from inside a loop. .Pp A function must call .Fn BN_CTX_start first. Then, .Fn BN_CTX_get may be called repeatedly to obtain temporary .Vt BIGNUM Ns s. All .Fn BN_CTX_get calls must be made before calling any other functions that use the .Fa ctx as an argument. .Pp Finally, .Fn BN_CTX_end must be called before returning from the function. When .Fn BN_CTX_end is called, the .Vt BIGNUM pointers obtained from .Fn BN_CTX_get become invalid. .Sh RETURN VALUES .Fn BN_CTX_start and .Fn BN_CTX_end return no values. .Pp .Fn BN_CTX_get returns a pointer to the .Vt BIGNUM , or .Dv NULL on error. Once .Fn BN_CTX_get has failed, the subsequent calls will return .Dv NULL as well, so it is sufficient to check the return value of the last .Fn BN_CTX_get call. In case of an error, an error code is set, which can be obtained by .Xr ERR_get_error 3 . .Sh SEE ALSO .Xr BN_CTX_new 3 .Sh HISTORY .Fn BN_CTX_start , .Fn BN_CTX_get , and .Fn BN_CTX_end were added in OpenSSL 0.9.5.