Document the RSA library.
[openssl.git] / doc / crypto / RSA_padding_add_PKCS1_type_1.pod
1 =pod
2
3 =head1 NAME
4
5 RSA_padding_add_PKCS1_type_1, RSA_padding_check_PKCS1_type_1,
6 RSA_padding_add_PKCS1_type_2, RSA_padding_check_PKCS1_type_2,
7 RSA_padding_add_PKCS1_OAEP, RSA_padding_check_PKCS1_OAEP,
8 RSA_padding_add_SSLv23, RSA_padding_check_SSLv23,
9 RSA_padding_add_none, RSA_padding_check_none - Asymmetric encryption
10 padding
11
12 =head1 SYNOPSIS
13
14  #include <openssl/rsa.h>
15
16  int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
17     unsigned char *f, int fl);
18
19  int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen,
20     unsigned char *f, int fl, int rsa_len);
21
22  int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen,
23     unsigned char *f, int fl);
24
25  int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
26     unsigned char *f, int fl, int rsa_len);
27
28  int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
29     unsigned char *f, int fl, unsigned char *p, int pl);
30
31  int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
32     unsigned char *f, int fl, int rsa_len, unsigned char *p, int pl);
33
34  int RSA_padding_add_SSLv23(unsigned char *to, int tlen,
35     unsigned char *f, int fl);
36
37  int RSA_padding_check_SSLv23(unsigned char *to, int tlen,
38     unsigned char *f, int fl, int rsa_len);
39
40  int RSA_padding_add_none(unsigned char *to, int tlen,
41     unsigned char *f, int fl);
42
43  int RSA_padding_check_none(unsigned char *to, int tlen,
44     unsigned char *f, int fl, int rsa_len);
45
46 =head1 DESCRIPTION
47
48 The RSA_padding_xxx_xxx() functions are called from the RSA encrypt,
49 decrypt, sign and verify functions.
50
51 They can also be called directly to implement padding for other
52 asymmetric ciphers. RSA_padding_add_PKCS1_OAEP() and
53 RSA_padding_check_PKCS1_OAEP() may be used in an application combined
54 with B<RSA_NO_PADDING> in order to implement OAEP with an encoding
55 parameter.
56
57 RSA_padding_add_xxx() encodes B<fl> bytes from B<f> so as to fit into
58 B<tlen> bytes and stores the result at B<to>. An error occurs if B<fl>
59 does not meet the size requirements of the encoding method.
60
61 The following encoding methods are implemented:
62
63 =over 4
64
65 =item PKCS1_type_1
66
67 PKCS #1 v2.0 EMSA-PKCS1-v1_5 (PKCS #1 v1.5 block type 1); used for signatures
68
69 =item PKCS1_type_2
70
71 PKCS #1 v2.0 EME-PKCS1-v1_5 (PKCS #1 v1.5 block type 2)
72
73 =item PKCS1_OAEP
74
75 PKCS #1 EME-OAEP
76
77 =item SSLv23
78
79 PKCS #1 EME-PKCS1-v1_5 with SSL-specific modification
80
81 =item none
82
83 simply copy the data
84
85 =back
86
87 The random number generator must be seeded prior to calling
88 RSA_padding_add_xxx().
89
90 RSA_padding_check_xxx() verifies that the B<fl> bytes at B<f> contain
91 a valid encoding for a B<rsa_len> byte RSA key in the respective
92 encoding method and stores the recovered data of at most B<tlen> bytes
93 at B<to>.
94
95 For RSA_padding_xxx_OAEP(), B<p> points to the encoding parameter
96 of length B<pl>. B<p> may be B<NULL> if B<pl> is 0.
97
98 =head1 RETURN VALUES
99
100 The RSA_padding_add_xxx() functions return 1 on success, 0 on error.
101 The RSA_padding_check_xxx() functions return the length of the
102 recovered data, -1 on error. Error codes can be obtained by calling
103 ERR_get_error(3).
104
105 =head1 SEE ALSO
106
107 RSA_public_encrypt(3), RSA_private_decrypt(3), RSA_sign(3), RSA_verify(3)
108
109 =head1 HISTORY
110
111 RSA_padding_add_PKCS1_type_1(), RSA_padding_check_PKCS1_type_1(),
112 RSA_padding_add_PKCS1_type_2(), RSA_padding_check_PKCS1_type_2(),
113 RSA_padding_add_SSLv23(), RSA_padding_check_SSLv23(),
114 RSA_padding_add_none() and RSA_padding_check_none() appeared in
115 SSLeay 0.9.0.
116
117 RSA_padding_add_PKCS1_OAEP() and RSA_padding_check_PKCS1_OAEP() were
118 added in OpenSSL 0.9.2b.
119
120 =cut