2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH RSA_padding_add_PKCS1_type_1 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 RSA_padding_add_PKCS1_type_1, RSA_padding_check_PKCS1_type_1,
192 RSA_padding_add_PKCS1_type_2, RSA_padding_check_PKCS1_type_2,
193 RSA_padding_add_PKCS1_OAEP, RSA_padding_check_PKCS1_OAEP,
194 RSA_padding_add_SSLv23, RSA_padding_check_SSLv23,
195 RSA_padding_add_none, RSA_padding_check_none \- asymmetric encryption
200 \& #include <openssl/rsa.h>
203 \& int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen,
204 \& unsigned char *f, int fl);
207 \& int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen,
208 \& unsigned char *f, int fl, int rsa_len);
211 \& int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen,
212 \& unsigned char *f, int fl);
215 \& int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen,
216 \& unsigned char *f, int fl, int rsa_len);
219 \& int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
220 \& unsigned char *f, int fl, unsigned char *p, int pl);
223 \& int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
224 \& unsigned char *f, int fl, int rsa_len, unsigned char *p, int pl);
227 \& int RSA_padding_add_SSLv23(unsigned char *to, int tlen,
228 \& unsigned char *f, int fl);
231 \& int RSA_padding_check_SSLv23(unsigned char *to, int tlen,
232 \& unsigned char *f, int fl, int rsa_len);
235 \& int RSA_padding_add_none(unsigned char *to, int tlen,
236 \& unsigned char *f, int fl);
239 \& int RSA_padding_check_none(unsigned char *to, int tlen,
240 \& unsigned char *f, int fl, int rsa_len);
243 The \fIRSA_padding_xxx_xxx()\fR functions are called from the RSA encrypt,
244 decrypt, sign and verify functions. Normally they should not be called
245 from application programs.
247 However, they can also be called directly to implement padding for other
248 asymmetric ciphers. \fIRSA_padding_add_PKCS1_OAEP()\fR and
249 \fIRSA_padding_check_PKCS1_OAEP()\fR may be used in an application combined
250 with \fBRSA_NO_PADDING\fR in order to implement OAEP with an encoding
253 \fIRSA_padding_add_xxx()\fR encodes \fBfl\fR bytes from \fBf\fR so as to fit into
254 \fBtlen\fR bytes and stores the result at \fBto\fR. An error occurs if \fBfl\fR
255 does not meet the size requirements of the encoding method.
257 The following encoding methods are implemented:
259 \s-1PKCS\s0 #1 v2.0 \s-1EMSA\s0\-\s-1PKCS1-\s0v1_5 (\s-1PKCS\s0 #1 v1.5 block type 1); used for signatures
261 \s-1PKCS\s0 #1 v2.0 \s-1EME\s0\-\s-1PKCS1-\s0v1_5 (\s-1PKCS\s0 #1 v1.5 block type 2)
262 .Ip "\s-1PKCS1_OAEP\s0" 4
263 \s-1PKCS\s0 #1 v2.0 \s-1EME\s0\-\s-1OAEP\s0
265 \s-1PKCS\s0 #1 \s-1EME\s0\-\s-1PKCS1-\s0v1_5 with \s-1SSL\s0\-specific modification
269 The random number generator must be seeded prior to calling
270 \fIRSA_padding_add_xxx()\fR.
272 \fIRSA_padding_check_xxx()\fR verifies that the \fBfl\fR bytes at \fBf\fR contain
273 a valid encoding for a \fBrsa_len\fR byte \s-1RSA\s0 key in the respective
274 encoding method and stores the recovered data of at most \fBtlen\fR bytes
275 (for \fB\s-1RSA_NO_PADDING\s0\fR: of size \fBtlen\fR)
278 For \fIRSA_padding_xxx_OAEP()\fR, \fBp\fR points to the encoding parameter
279 of length \fBpl\fR. \fBp\fR may be \fB\s-1NULL\s0\fR if \fBpl\fR is 0.
281 The \fIRSA_padding_add_xxx()\fR functions return 1 on success, 0 on error.
282 The \fIRSA_padding_check_xxx()\fR functions return the length of the
283 recovered data, \-1 on error. Error codes can be obtained by calling
286 RSA_public_encrypt(3),
287 RSA_private_decrypt(3),
288 RSA_sign(3), RSA_verify(3)
290 \fIRSA_padding_add_PKCS1_type_1()\fR, \fIRSA_padding_check_PKCS1_type_1()\fR,
291 \fIRSA_padding_add_PKCS1_type_2()\fR, \fIRSA_padding_check_PKCS1_type_2()\fR,
292 \fIRSA_padding_add_SSLv23()\fR, \fIRSA_padding_check_SSLv23()\fR,
293 \fIRSA_padding_add_none()\fR and \fIRSA_padding_check_none()\fR appeared in
296 \fIRSA_padding_add_PKCS1_OAEP()\fR and \fIRSA_padding_check_PKCS1_OAEP()\fR were
297 added in OpenSSL 0.9.2b.
300 .IX Title "RSA_padding_add_PKCS1_type_1 3"
301 .IX Name "RSA_padding_add_PKCS1_type_1, RSA_padding_check_PKCS1_type_1,
302 RSA_padding_add_PKCS1_type_2, RSA_padding_check_PKCS1_type_2,
303 RSA_padding_add_PKCS1_OAEP, RSA_padding_check_PKCS1_OAEP,
304 RSA_padding_add_SSLv23, RSA_padding_check_SSLv23,
305 RSA_padding_add_none, RSA_padding_check_none - asymmetric encryption
310 .IX Header "SYNOPSIS"
312 .IX Header "DESCRIPTION"
314 .IX Item "PKCS1_type_1"
316 .IX Item "PKCS1_type_2"
318 .IX Item "\s-1PKCS1_OAEP\s0"
324 .IX Header "RETURN VALUES"
326 .IX Header "SEE ALSO"