1*4724848cSchristos=pod 2*4724848cSchristos 3*4724848cSchristos=head1 NAME 4*4724848cSchristos 5*4724848cSchristosBN_new, BN_secure_new, BN_clear, BN_free, BN_clear_free - allocate and free BIGNUMs 6*4724848cSchristos 7*4724848cSchristos=head1 SYNOPSIS 8*4724848cSchristos 9*4724848cSchristos #include <openssl/bn.h> 10*4724848cSchristos 11*4724848cSchristos BIGNUM *BN_new(void); 12*4724848cSchristos 13*4724848cSchristos BIGNUM *BN_secure_new(void); 14*4724848cSchristos 15*4724848cSchristos void BN_clear(BIGNUM *a); 16*4724848cSchristos 17*4724848cSchristos void BN_free(BIGNUM *a); 18*4724848cSchristos 19*4724848cSchristos void BN_clear_free(BIGNUM *a); 20*4724848cSchristos 21*4724848cSchristos=head1 DESCRIPTION 22*4724848cSchristos 23*4724848cSchristosBN_new() allocates and initializes a B<BIGNUM> structure. 24*4724848cSchristosBN_secure_new() does the same except that the secure heap 25*4724848cSchristosL<OPENSSL_secure_malloc(3)> is used to store the value. 26*4724848cSchristos 27*4724848cSchristosBN_clear() is used to destroy sensitive data such as keys when they 28*4724848cSchristosare no longer needed. It erases the memory used by B<a> and sets it 29*4724848cSchristosto the value 0. 30*4724848cSchristosIf B<a> is NULL, nothing is done. 31*4724848cSchristos 32*4724848cSchristosBN_free() frees the components of the B<BIGNUM>, and if it was created 33*4724848cSchristosby BN_new(), also the structure itself. BN_clear_free() additionally 34*4724848cSchristosoverwrites the data before the memory is returned to the system. 35*4724848cSchristosIf B<a> is NULL, nothing is done. 36*4724848cSchristos 37*4724848cSchristos=head1 RETURN VALUES 38*4724848cSchristos 39*4724848cSchristosBN_new() and BN_secure_new() 40*4724848cSchristosreturn a pointer to the B<BIGNUM> initialised to the value 0. 41*4724848cSchristosIf the allocation fails, 42*4724848cSchristosthey return B<NULL> and set an error code that can be obtained 43*4724848cSchristosby L<ERR_get_error(3)>. 44*4724848cSchristos 45*4724848cSchristosBN_clear(), BN_free() and BN_clear_free() have no return values. 46*4724848cSchristos 47*4724848cSchristos=head1 SEE ALSO 48*4724848cSchristos 49*4724848cSchristosL<ERR_get_error(3)>, L<OPENSSL_secure_malloc(3)> 50*4724848cSchristos 51*4724848cSchristos=head1 HISTORY 52*4724848cSchristos 53*4724848cSchristosBN_init() was removed in OpenSSL 1.1.0; use BN_new() instead. 54*4724848cSchristos 55*4724848cSchristos=head1 COPYRIGHT 56*4724848cSchristos 57*4724848cSchristosCopyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. 58*4724848cSchristos 59*4724848cSchristosLicensed under the OpenSSL license (the "License"). You may not use 60*4724848cSchristosthis file except in compliance with the License. You can obtain a copy 61*4724848cSchristosin the file LICENSE in the source distribution or at 62*4724848cSchristosL<https://www.openssl.org/source/license.html>. 63*4724848cSchristos 64*4724848cSchristos=cut 65