=pod

=head1 NAME

RSA_new, RSA_free - allocate and free RSA objects

=head1 SYNOPSIS

 #include <openssl/rsa.h>

 RSA * RSA_new(void);

 void RSA_free(RSA *rsa);

=head1 DESCRIPTION

RSA_new() allocates and initializes an B<RSA> structure. It is equivalent to
calling RSA_new_method(NULL).

RSA_free() frees the B<RSA> structure and its components. The key is
erased before the memory is returned to the system.

=head1 RETURN VALUES

If the allocation fails, RSA_new() returns B<NULL> and sets an error
code that can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. Otherwise it returns
a pointer to the newly allocated structure.

RSA_free() returns no value.

=head1 SEE ALSO

L<ERR_get_error(3)|ERR_get_error(3)>, L<rsa(3)|rsa(3)>,
L<RSA_generate_key(3)|RSA_generate_key(3)>,
L<RSA_new_method(3)|RSA_new_method(3)>

=head1 HISTORY

RSA_new() and RSA_free() are available in all versions of SSLeay and OpenSSL.

=cut
