BN_CTX_NEW(3) | Library Functions Manual | BN_CTX_NEW(3)

# NAME

`BN_CTX_new`, `BN_CTX_free` — allocate and free BN_CTX structures

# SYNOPSIS

library “libcrypto”
`#include <openssl/bn.h>`

BN_CTX *
`BN_CTX_new`(void);

void
`BN_CTX_free`(BN_CTX *c);

# DESCRIPTION

A BN_CTX is a structure that holds BIGNUM temporary variables used by library functions. Since dynamic memory allocation to create BIGNUMs is rather expensive when used in conjunction with repeated subroutine calls, the BN_CTX structure is used.

`BN_CTX_new`() allocates and initializes a BN_CTX structure.

`BN_CTX_free`() frees the components of the BN_CTX and, if it was created by `BN_CTX_new`(), also the structure itself. If BN_CTX_start(3) has been used on the BN_CTX, BN_CTX_end(3) must be called before the BN_CTX may be freed by `BN_CTX_free`(). If c is a `NULL` pointer, no action occurs.

# RETURN VALUES

`BN_CTX_new`() returns a pointer to the BN_CTX. If the allocation fails, it returns `NULL` and sets an error code that can be obtained by ERR_get_error(3).

# SEE ALSO

BN_add(3), BN_CTX_start(3), BN_new(3)

# HISTORY

`BN_CTX_new`() and `BN_CTX_free`() first appeared in SSLeay 0.5.1 and have been available since OpenBSD 2.4.

June 8, 2025 | Debian