RSA_generate_key.pod 3.0 KB
Newer Older
U
Ulf Möller 已提交
1 2 3 4
=pod

=head1 NAME

P
Paul Yang 已提交
5 6
RSA_generate_key_ex, RSA_generate_key,
RSA_generate_multi_prime_key - generate RSA key pair
U
Ulf Möller 已提交
7 8 9 10 11

=head1 SYNOPSIS

 #include <openssl/rsa.h>

M
Matt Caswell 已提交
12
 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
P
Paul Yang 已提交
13
 int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb);
M
Matt Caswell 已提交
14 15 16

Deprecated:

17
 #if OPENSSL_API_COMPAT < 0x00908000L
U
Ulf Möller 已提交
18
 RSA *RSA_generate_key(int num, unsigned long e,
19
                       void (*callback)(int, int, void *), void *cb_arg);
20
 #endif
U
Ulf Möller 已提交
21 22 23

=head1 DESCRIPTION

P
Paul Yang 已提交
24 25
RSA_generate_key_ex() generates a 2-prime RSA key pair and stores it in the
B<RSA> structure provided in B<rsa>. The pseudo-random number generator must
M
Matt Caswell 已提交
26
be seeded prior to calling RSA_generate_key_ex().
U
Ulf Möller 已提交
27

P
Paul Yang 已提交
28 29 30 31 32 33 34 35 36
RSA_generate_multi_prime_key() generates a multi-prime RSA key pair and stores
it in the B<RSA> structure provided in B<rsa>. The number of primes is given by
the B<primes> parameter. The pseudo-random number generator must be seeded prior
to calling RSA_generate_multi_prime_key().

The modulus size will be of length B<bits>, the number of primes to form the
modulus will be B<primes>, and the public exponent will be B<e>. Key sizes
with B<num> E<lt> 1024 should be considered insecure. The exponent is an odd
number, typically 3, 17 or 65537.
U
Ulf Möller 已提交
37 38

A callback function may be used to provide feedback about the
M
Matt Caswell 已提交
39 40
progress of the key generation. If B<cb> is not B<NULL>, it
will be called as follows using the BN_GENCB_call() function
R
Rich Salz 已提交
41
described on the L<BN_generate_prime(3)> page.
U
Ulf Möller 已提交
42

43 44 45 46
RSA_generate_prime() is similar to RSA_generate_prime_ex() but
expects an old-style callback function; see
L<BN_generate_prime(3)> for information on the old-style callback.

R
Rich Salz 已提交
47
=over 2
U
Ulf Möller 已提交
48 49 50 51

=item *

While a random prime number is generated, it is called as
R
Rich Salz 已提交
52
described in L<BN_generate_prime(3)>.
U
Ulf Möller 已提交
53 54 55 56

=item *

When the n-th randomly generated prime is rejected as not
M
Matt Caswell 已提交
57
suitable for the key, B<BN_GENCB_call(cb, 2, n)> is called.
U
Ulf Möller 已提交
58 59 60 61

=item *

When a random p has been found with p-1 relatively prime to B<e>,
M
Matt Caswell 已提交
62
it is called as B<BN_GENCB_call(cb, 3, 0)>.
U
Ulf Möller 已提交
63 64 65

=back

P
Paul Yang 已提交
66 67
The process is then repeated for prime q and other primes (if any)
with B<BN_GENCB_call(cb, 3, i)> where B<i> indicates the i-th prime.
M
Matt Caswell 已提交
68

U
Ulf Möller 已提交
69
=head1 RETURN VALUE
U
Ulf Möller 已提交
70

P
Paul Yang 已提交
71
RSA_generate_multi_prime_key() returns 1 on success or 0 on error.
R
Doc fix  
Rich Salz 已提交
72
RSA_generate_key_ex() returns 1 on success or 0 on error.
R
Rich Salz 已提交
73
The error codes can be obtained by L<ERR_get_error(3)>.
U
Ulf Möller 已提交
74

75 76 77
RSA_generate_key() returns a pointer to the RSA structure or
B<NULL> if the key generation fails.

U
Ulf Möller 已提交
78 79
=head1 BUGS

M
Matt Caswell 已提交
80
B<BN_GENCB_call(cb, 2, x)> is used with two different meanings.
U
Ulf Möller 已提交
81 82 83

=head1 SEE ALSO

84
L<ERR_get_error(3)>, L<RAND_bytes(3)>,
85 86 87 88 89 90
L<RSA_generate_key_ex(3)>, L<BN_generate_prime(3)>

=head1 HISTORY

RSA_generate_key() was deprecated in OpenSSL 0.9.8; use
RSA_generate_key_ex() intsead.
U
Ulf Möller 已提交
91

R
Rich Salz 已提交
92 93
=head1 COPYRIGHT

P
Paul Yang 已提交
94
Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
R
Rich Salz 已提交
95 96 97 98 99 100 101

Licensed under the OpenSSL license (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut