1=pod 2 3=head1 NAME 4 5RSA_generate_key - generate RSA key pair 6 7=head1 SYNOPSIS 8 9 #include <openssl/rsa.h> 10 11 RSA *RSA_generate_key(int num, unsigned long e, 12 void (*callback)(int,int,void *), void *cb_arg); 13 14=head1 DESCRIPTION 15 16RSA_generate_key() generates a key pair and returns it in a newly 17allocated B<RSA> structure. The pseudo-random number generator must 18be seeded prior to calling RSA_generate_key(). 19 20The modulus size will be B<num> bits, and the public exponent will be 21B<e>. Key sizes with B<num> E<lt> 1024 should be considered insecure. 22The exponent is an odd number, typically 3, 17 or 65537. 23 24A callback function may be used to provide feedback about the 25progress of the key generation. If B<callback> is not B<NULL>, it 26will be called as follows: 27 28=over 4 29 30=item * 31 32While a random prime number is generated, it is called as 33described in L<BN_generate_prime(3)|BN_generate_prime(3)>. 34 35=item * 36 37When the n-th randomly generated prime is rejected as not 38suitable for the key, B<callback(2, n, cb_arg)> is called. 39 40=item * 41 42When a random p has been found with p-1 relatively prime to B<e>, 43it is called as B<callback(3, 0, cb_arg)>. 44 45=back 46 47The process is then repeated for prime q with B<callback(3, 1, cb_arg)>. 48 49=head1 RETURN VALUE 50 51If key generation fails, RSA_generate_key() returns B<NULL>; the 52error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. 53 54=head1 BUGS 55 56B<callback(2, x, cb_arg)> is used with two different meanings. 57 58RSA_generate_key() goes into an infinite loop for illegal input values. 59 60=head1 SEE ALSO 61 62L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, 63L<RSA_free(3)|RSA_free(3)> 64 65=head1 HISTORY 66 67The B<cb_arg> argument was added in SSLeay 0.9.0. 68 69=cut 70