]>
Commit | Line | Data |
---|---|---|
2186cd8e UM |
1 | =pod |
2 | ||
3 | =head1 NAME | |
4 | ||
5 | rsa - 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 | ||
58 | These functions implement RSA public key encryption and signatures | |
59 | as defined in PKCS #1 v2.0 [RFC 2437]. | |
60 | ||
61 | The B<RSA> structure consists of several BIGNUM components. It can | |
62 | contain 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 | ||
78 | In public keys, the private exponent and the related secret values are | |
79 | B<NULL>. | |
80 | ||
e4947bfe UM |
81 | B<p>, B<q>, B<dmp1>, B<dmq1> and B<iqmp> may be B<NULL> in private |
82 | keys, but the RSA operations are much faster when these values are | |
83 | available. | |
2186cd8e | 84 | |
ac120e20 GT |
85 | Note that RSA keys may use non-standard B<RSA_METHOD> implementations, |
86 | either directly or by the use of B<ENGINE> modules. In some cases (eg. an | |
87 | ENGINE providing support for hardware-embedded keys), these BIGNUM values | |
88 | will not be used by the implementation or may be used for alternative data | |
89 | storage. For this reason, applications should generally avoid using RSA | |
90 | structure elements directly and instead use API functions to query or | |
91 | modify keys. | |
92 | ||
38e33cef UM |
93 | =head1 CONFORMING TO |
94 | ||
95 | SSL, PKCS #1 v2.0 | |
96 | ||
2186cd8e UM |
97 | =head1 PATENTS |
98 | ||
89681b18 | 99 | RSA was covered by a US patent which expired in September 2000. |
2186cd8e UM |
100 | |
101 | =head1 SEE ALSO | |
102 | ||
9b86974e RS |
103 | L<rsa(1)>, L<bn(3)>, L<dsa(3)>, L<dh(3)>, |
104 | L<rand(3)>, L<engine(3)>, L<RSA_new(3)>, | |
105 | L<RSA_public_encrypt(3)>, | |
106 | L<RSA_sign(3)>, L<RSA_size(3)>, | |
107 | L<RSA_generate_key(3)>, | |
108 | L<RSA_check_key(3)>, | |
109 | L<RSA_blinding_on(3)>, | |
110 | L<RSA_set_method(3)>, L<RSA_print(3)>, | |
111 | L<RSA_get_ex_new_index(3)>, | |
112 | L<RSA_private_encrypt(3)>, | |
113 | L<RSA_sign_ASN1_OCTET_STRING(3)>, | |
114 | L<RSA_padding_add_PKCS1_type_1(3)> | |
2186cd8e UM |
115 | |
116 | =cut |