]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/crypto/rsa.pod
ex_data part 2: doc fixes and CRYPTO_free_ex_index.
[thirdparty/openssl.git] / doc / crypto / rsa.pod
CommitLineData
2186cd8e
UM
1=pod
2
3=head1 NAME
4
5rsa - RSA public key cryptosystem
6
7=head1 SYNOPSIS
8
9 #include <openssl/rsa.h>
5270e702 10 #include <openssl/engine.h>
2186cd8e
UM
11
12 RSA * RSA_new(void);
2186cd8e
UM
13 void RSA_free(RSA *rsa);
14
15 int RSA_public_encrypt(int flen, unsigned char *from,
16 unsigned char *to, RSA *rsa, int padding);
2186cd8e
UM
17 int RSA_private_decrypt(int flen, unsigned char *from,
18 unsigned char *to, RSA *rsa, int padding);
ac120e20
GT
19 int RSA_private_encrypt(int flen, unsigned char *from,
20 unsigned char *to, RSA *rsa,int padding);
21 int RSA_public_decrypt(int flen, unsigned char *from,
22 unsigned char *to, RSA *rsa,int padding);
2186cd8e
UM
23
24 int RSA_sign(int type, unsigned char *m, unsigned int m_len,
25 unsigned char *sigret, unsigned int *siglen, RSA *rsa);
2186cd8e
UM
26 int RSA_verify(int type, unsigned char *m, unsigned int m_len,
27 unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
28
2186cd8e
UM
29 RSA *RSA_generate_key(int num, unsigned long e,
30 void (*callback)(int,int,void *), void *cb_arg);
31
32 int RSA_check_key(RSA *rsa);
33
34 int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
2186cd8e
UM
35 void RSA_blinding_off(RSA *rsa);
36
ac120e20
GT
37 void RSA_set_default_method(const RSA_METHOD *meth);
38 const RSA_METHOD *RSA_get_default_method(void);
39 int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
40 const RSA_METHOD *RSA_get_method(const RSA *rsa);
a528d4f0 41 RSA_METHOD *RSA_PKCS1_OpenSSL(void);
2186cd8e 42 RSA_METHOD *RSA_null_method(void);
ac120e20 43 int RSA_flags(const RSA *rsa);
5270e702 44 RSA *RSA_new_method(ENGINE *engine);
2186cd8e
UM
45
46 int RSA_print(BIO *bp, RSA *x, int offset);
2186cd8e
UM
47 int RSA_print_fp(FILE *fp, RSA *x, int offset);
48
2186cd8e
UM
49 int RSA_sign_ASN1_OCTET_STRING(int dummy, unsigned char *m,
50 unsigned int m_len, unsigned char *sigret, unsigned int *siglen,
51 RSA *rsa);
2186cd8e
UM
52 int RSA_verify_ASN1_OCTET_STRING(int dummy, unsigned char *m,
53 unsigned int m_len, unsigned char *sigbuf, unsigned int siglen,
54 RSA *rsa);
55
2186cd8e
UM
56=head1 DESCRIPTION
57
58These functions implement RSA public key encryption and signatures
59as defined in PKCS #1 v2.0 [RFC 2437].
60
61The B<RSA> structure consists of several BIGNUM components. It can
62contain public as well as private RSA keys:
63
64 struct
65 {
66 BIGNUM *n; // public modulus
67 BIGNUM *e; // public exponent
68 BIGNUM *d; // private exponent
69 BIGNUM *p; // secret prime factor
70 BIGNUM *q; // secret prime factor
71 BIGNUM *dmp1; // d mod (p-1)
72 BIGNUM *dmq1; // d mod (q-1)
73 BIGNUM *iqmp; // q^-1 mod p
74 // ...
75 };
76 RSA
77
78In public keys, the private exponent and the related secret values are
79B<NULL>.
80
e4947bfe
UM
81B<p>, B<q>, B<dmp1>, B<dmq1> and B<iqmp> may be B<NULL> in private
82keys, but the RSA operations are much faster when these values are
83available.
2186cd8e 84
ac120e20
GT
85Note that RSA keys may use non-standard B<RSA_METHOD> implementations,
86either directly or by the use of B<ENGINE> modules. In some cases (eg. an
87ENGINE providing support for hardware-embedded keys), these BIGNUM values
88will not be used by the implementation or may be used for alternative data
89storage. For this reason, applications should generally avoid using RSA
90structure elements directly and instead use API functions to query or
91modify keys.
92
38e33cef
UM
93=head1 CONFORMING TO
94
95SSL, PKCS #1 v2.0
96
2186cd8e
UM
97=head1 PATENTS
98
89681b18 99RSA was covered by a US patent which expired in September 2000.
2186cd8e
UM
100
101=head1 SEE ALSO
102
9b86974e
RS
103L<rsa(1)>, L<bn(3)>, L<dsa(3)>, L<dh(3)>,
104L<rand(3)>, L<engine(3)>, L<RSA_new(3)>,
105L<RSA_public_encrypt(3)>,
106L<RSA_sign(3)>, L<RSA_size(3)>,
107L<RSA_generate_key(3)>,
108L<RSA_check_key(3)>,
109L<RSA_blinding_on(3)>,
110L<RSA_set_method(3)>, L<RSA_print(3)>,
111L<RSA_get_ex_new_index(3)>,
112L<RSA_private_encrypt(3)>,
113L<RSA_sign_ASN1_OCTET_STRING(3)>,
114L<RSA_padding_add_PKCS1_type_1(3)>
2186cd8e
UM
115
116=cut