Deleted Added
full compact
RSA_set_method.3 (206048) RSA_set_method.3 (215698)
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.37
1.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
2.\"
3.\" Standard preamble:
4.\" ========================================================================
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
5.de Sp \" Vertical space (when we can't use .PP)
6.if t .sp .5v
7.if n .sp
8..
9.de Vb \" Begin verbatim text
10.ft CW
11.nf
12.ne \\$1
13..
14.de Ve \" End verbatim text
15.ft R
16.fi
17..
18.\" Set up some character translations and predefined strings. \*(-- will
19.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
20.\" double quote, and \*(R" will give a right double quote. \*(C+ will
21.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23.\" nothing in troff, for use with C<>.
24.tr \(*W-
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
25.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26.ie n \{\
27. ds -- \(*W-
28. ds PI pi
29. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31. ds L" ""
32. ds R" ""
33. ds C` ""
34. ds C' ""
35'br\}
36.el\{\
37. ds -- \|\(em\|
38. ds PI \(*p
39. ds L" ``
40. ds R" ''
41'br\}
42.\"
43.\" Escape single quotes in literal strings from groff's Unicode transform.
44.ie \n(.g .ds Aq \(aq
45.el .ds Aq '
46.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
47.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
48.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
49.\" entries marked with X<> in POD. Of course, you'll have to process the
50.\" output yourself in some meaningful fashion.
55.if \nF \{\
51.ie \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
52. de IX
53. tm Index:\\$1\t\\n%\t"\\$2"
54..
55. nr % 0
56. rr F
57.\}
58.el \{\
59. de IX
60..
61.\}
62.\"
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "RSA_set_method 3"
63.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64.\" Fear. Run. Save yourself. No user-serviceable parts.
65. \" fudge factors for nroff and troff
66.if n \{\
67. ds #H 0
68. ds #V .8m
69. ds #F .3m
70. ds #[ \f1
71. ds #] \fP
72.\}
73.if t \{\
74. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75. ds #V .6m
76. ds #F 0
77. ds #[ \&
78. ds #] \&
79.\}
80. \" simple accents for nroff and troff
81.if n \{\
82. ds ' \&
83. ds ` \&
84. ds ^ \&
85. ds , \&
86. ds ~ ~
87. ds /
88.\}
89.if t \{\
90. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96.\}
97. \" troff and (daisy-wheel) nroff accents
98.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105.ds ae a\h'-(\w'a'u*4/10)'e
106.ds Ae A\h'-(\w'A'u*4/10)'E
107. \" corrections for vroff
108.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110. \" for low resolution devices (crt and lpr)
111.if \n(.H>23 .if \n(.V>19 \
112\{\
113. ds : e
114. ds 8 ss
115. ds o a
116. ds d- d\h'-1'\(ga
117. ds D- D\h'-1'\(hy
118. ds th \o'bp'
119. ds Th \o'LP'
120. ds ae ae
121. ds Ae AE
122.\}
123.rm #[ #] #H #V #F C
124.\" ========================================================================
125.\"
126.IX Title "RSA_set_method 3"
132.TH RSA_set_method 3 "2010-03-24" "0.9.8n" "OpenSSL"
127.TH RSA_set_method 3 "2010-11-16" "0.9.8p" "OpenSSL"
128.\" For nroff, turn off justification. Always turn off hyphenation; it makes
129.\" way too many mistakes in technical documents.
130.if n .ad l
131.nh
133.SH "NAME"
134RSA_set_default_method, RSA_get_default_method, RSA_set_method,
135RSA_get_method, RSA_PKCS1_SSLeay, RSA_null_method, RSA_flags,
136RSA_new_method \- select RSA method
137.SH "SYNOPSIS"
138.IX Header "SYNOPSIS"
139.Vb 1
140\& #include <openssl/rsa.h>
132.SH "NAME"
133RSA_set_default_method, RSA_get_default_method, RSA_set_method,
134RSA_get_method, RSA_PKCS1_SSLeay, RSA_null_method, RSA_flags,
135RSA_new_method \- select RSA method
136.SH "SYNOPSIS"
137.IX Header "SYNOPSIS"
138.Vb 1
139\& #include <openssl/rsa.h>
141.Ve
142.PP
143.Vb 1
140\&
144\& void RSA_set_default_method(const RSA_METHOD *meth);
141\& void RSA_set_default_method(const RSA_METHOD *meth);
145.Ve
146.PP
147.Vb 1
142\&
148\& RSA_METHOD *RSA_get_default_method(void);
143\& RSA_METHOD *RSA_get_default_method(void);
149.Ve
150.PP
151.Vb 1
144\&
152\& int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
145\& int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
153.Ve
154.PP
155.Vb 1
146\&
156\& RSA_METHOD *RSA_get_method(const RSA *rsa);
147\& RSA_METHOD *RSA_get_method(const RSA *rsa);
157.Ve
158.PP
159.Vb 1
148\&
160\& RSA_METHOD *RSA_PKCS1_SSLeay(void);
149\& RSA_METHOD *RSA_PKCS1_SSLeay(void);
161.Ve
162.PP
163.Vb 1
150\&
164\& RSA_METHOD *RSA_null_method(void);
151\& RSA_METHOD *RSA_null_method(void);
165.Ve
166.PP
167.Vb 1
152\&
168\& int RSA_flags(const RSA *rsa);
153\& int RSA_flags(const RSA *rsa);
169.Ve
170.PP
171.Vb 1
154\&
172\& RSA *RSA_new_method(RSA_METHOD *method);
173.Ve
174.SH "DESCRIPTION"
175.IX Header "DESCRIPTION"
176An \fB\s-1RSA_METHOD\s0\fR specifies the functions that OpenSSL uses for \s-1RSA\s0
177operations. By modifying the method, alternative implementations such as
178hardware accelerators may be used. \s-1IMPORTANT:\s0 See the \s-1NOTES\s0 section for
179important information about how these \s-1RSA\s0 \s-1API\s0 functions are affected by the
180use of \fB\s-1ENGINE\s0\fR \s-1API\s0 calls.
181.PP
182Initially, the default \s-1RSA_METHOD\s0 is the OpenSSL internal implementation,
183as returned by \fIRSA_PKCS1_SSLeay()\fR.
184.PP
185\&\fIRSA_set_default_method()\fR makes \fBmeth\fR the default method for all \s-1RSA\s0
186structures created later. \fB\s-1NB\s0\fR: This is true only whilst no \s-1ENGINE\s0 has
187been set as a default for \s-1RSA\s0, so this function is no longer recommended.
188.PP
189\&\fIRSA_get_default_method()\fR returns a pointer to the current default
190\&\s-1RSA_METHOD\s0. However, the meaningfulness of this result is dependent on
191whether the \s-1ENGINE\s0 \s-1API\s0 is being used, so this function is no longer
192recommended.
193.PP
194\&\fIRSA_set_method()\fR selects \fBmeth\fR to perform all operations using the key
195\&\fBrsa\fR. This will replace the \s-1RSA_METHOD\s0 used by the \s-1RSA\s0 key and if the
196previous method was supplied by an \s-1ENGINE\s0, the handle to that \s-1ENGINE\s0 will
197be released during the change. It is possible to have \s-1RSA\s0 keys that only
198work with certain \s-1RSA_METHOD\s0 implementations (eg. from an \s-1ENGINE\s0 module
199that supports embedded hardware-protected keys), and in such cases
200attempting to change the \s-1RSA_METHOD\s0 for the key can have unexpected
201results.
202.PP
203\&\fIRSA_get_method()\fR returns a pointer to the \s-1RSA_METHOD\s0 being used by \fBrsa\fR.
204This method may or may not be supplied by an \s-1ENGINE\s0 implementation, but if
205it is, the return value can only be guaranteed to be valid as long as the
206\&\s-1RSA\s0 key itself is valid and does not have its implementation changed by
207\&\fIRSA_set_method()\fR.
208.PP
209\&\fIRSA_flags()\fR returns the \fBflags\fR that are set for \fBrsa\fR's current
210\&\s-1RSA_METHOD\s0. See the \s-1BUGS\s0 section.
211.PP
212\&\fIRSA_new_method()\fR allocates and initializes an \s-1RSA\s0 structure so that
213\&\fBengine\fR will be used for the \s-1RSA\s0 operations. If \fBengine\fR is \s-1NULL\s0, the
214default \s-1ENGINE\s0 for \s-1RSA\s0 operations is used, and if no default \s-1ENGINE\s0 is set,
215the \s-1RSA_METHOD\s0 controlled by \fIRSA_set_default_method()\fR is used.
216.PP
217\&\fIRSA_flags()\fR returns the \fBflags\fR that are set for \fBrsa\fR's current method.
218.PP
219\&\fIRSA_new_method()\fR allocates and initializes an \fB\s-1RSA\s0\fR structure so that
220\&\fBmethod\fR will be used for the \s-1RSA\s0 operations. If \fBmethod\fR is \fB\s-1NULL\s0\fR,
221the default method is used.
222.SH "THE RSA_METHOD STRUCTURE"
223.IX Header "THE RSA_METHOD STRUCTURE"
224.Vb 4
225\& typedef struct rsa_meth_st
226\& {
227\& /* name of the implementation */
228\& const char *name;
155\& RSA *RSA_new_method(RSA_METHOD *method);
156.Ve
157.SH "DESCRIPTION"
158.IX Header "DESCRIPTION"
159An \fB\s-1RSA_METHOD\s0\fR specifies the functions that OpenSSL uses for \s-1RSA\s0
160operations. By modifying the method, alternative implementations such as
161hardware accelerators may be used. \s-1IMPORTANT:\s0 See the \s-1NOTES\s0 section for
162important information about how these \s-1RSA\s0 \s-1API\s0 functions are affected by the
163use of \fB\s-1ENGINE\s0\fR \s-1API\s0 calls.
164.PP
165Initially, the default \s-1RSA_METHOD\s0 is the OpenSSL internal implementation,
166as returned by \fIRSA_PKCS1_SSLeay()\fR.
167.PP
168\&\fIRSA_set_default_method()\fR makes \fBmeth\fR the default method for all \s-1RSA\s0
169structures created later. \fB\s-1NB\s0\fR: This is true only whilst no \s-1ENGINE\s0 has
170been set as a default for \s-1RSA\s0, so this function is no longer recommended.
171.PP
172\&\fIRSA_get_default_method()\fR returns a pointer to the current default
173\&\s-1RSA_METHOD\s0. However, the meaningfulness of this result is dependent on
174whether the \s-1ENGINE\s0 \s-1API\s0 is being used, so this function is no longer
175recommended.
176.PP
177\&\fIRSA_set_method()\fR selects \fBmeth\fR to perform all operations using the key
178\&\fBrsa\fR. This will replace the \s-1RSA_METHOD\s0 used by the \s-1RSA\s0 key and if the
179previous method was supplied by an \s-1ENGINE\s0, the handle to that \s-1ENGINE\s0 will
180be released during the change. It is possible to have \s-1RSA\s0 keys that only
181work with certain \s-1RSA_METHOD\s0 implementations (eg. from an \s-1ENGINE\s0 module
182that supports embedded hardware-protected keys), and in such cases
183attempting to change the \s-1RSA_METHOD\s0 for the key can have unexpected
184results.
185.PP
186\&\fIRSA_get_method()\fR returns a pointer to the \s-1RSA_METHOD\s0 being used by \fBrsa\fR.
187This method may or may not be supplied by an \s-1ENGINE\s0 implementation, but if
188it is, the return value can only be guaranteed to be valid as long as the
189\&\s-1RSA\s0 key itself is valid and does not have its implementation changed by
190\&\fIRSA_set_method()\fR.
191.PP
192\&\fIRSA_flags()\fR returns the \fBflags\fR that are set for \fBrsa\fR's current
193\&\s-1RSA_METHOD\s0. See the \s-1BUGS\s0 section.
194.PP
195\&\fIRSA_new_method()\fR allocates and initializes an \s-1RSA\s0 structure so that
196\&\fBengine\fR will be used for the \s-1RSA\s0 operations. If \fBengine\fR is \s-1NULL\s0, the
197default \s-1ENGINE\s0 for \s-1RSA\s0 operations is used, and if no default \s-1ENGINE\s0 is set,
198the \s-1RSA_METHOD\s0 controlled by \fIRSA_set_default_method()\fR is used.
199.PP
200\&\fIRSA_flags()\fR returns the \fBflags\fR that are set for \fBrsa\fR's current method.
201.PP
202\&\fIRSA_new_method()\fR allocates and initializes an \fB\s-1RSA\s0\fR structure so that
203\&\fBmethod\fR will be used for the \s-1RSA\s0 operations. If \fBmethod\fR is \fB\s-1NULL\s0\fR,
204the default method is used.
205.SH "THE RSA_METHOD STRUCTURE"
206.IX Header "THE RSA_METHOD STRUCTURE"
207.Vb 4
208\& typedef struct rsa_meth_st
209\& {
210\& /* name of the implementation */
211\& const char *name;
229.Ve
230.PP
231.Vb 3
212\&
232\& /* encrypt */
233\& int (*rsa_pub_enc)(int flen, unsigned char *from,
234\& unsigned char *to, RSA *rsa, int padding);
213\& /* encrypt */
214\& int (*rsa_pub_enc)(int flen, unsigned char *from,
215\& unsigned char *to, RSA *rsa, int padding);
235.Ve
236.PP
237.Vb 3
216\&
238\& /* verify arbitrary data */
239\& int (*rsa_pub_dec)(int flen, unsigned char *from,
240\& unsigned char *to, RSA *rsa, int padding);
217\& /* verify arbitrary data */
218\& int (*rsa_pub_dec)(int flen, unsigned char *from,
219\& unsigned char *to, RSA *rsa, int padding);
241.Ve
242.PP
243.Vb 3
220\&
244\& /* sign arbitrary data */
245\& int (*rsa_priv_enc)(int flen, unsigned char *from,
246\& unsigned char *to, RSA *rsa, int padding);
221\& /* sign arbitrary data */
222\& int (*rsa_priv_enc)(int flen, unsigned char *from,
223\& unsigned char *to, RSA *rsa, int padding);
247.Ve
248.PP
249.Vb 3
224\&
250\& /* decrypt */
251\& int (*rsa_priv_dec)(int flen, unsigned char *from,
252\& unsigned char *to, RSA *rsa, int padding);
225\& /* decrypt */
226\& int (*rsa_priv_dec)(int flen, unsigned char *from,
227\& unsigned char *to, RSA *rsa, int padding);
253.Ve
254.PP
255.Vb 3
256\& /* compute r0 = r0 ^ I mod rsa->n (May be NULL for some
228\&
229\& /* compute r0 = r0 ^ I mod rsa\->n (May be NULL for some
257\& implementations) */
258\& int (*rsa_mod_exp)(BIGNUM *r0, BIGNUM *I, RSA *rsa);
230\& implementations) */
231\& int (*rsa_mod_exp)(BIGNUM *r0, BIGNUM *I, RSA *rsa);
259.Ve
260.PP
261.Vb 3
232\&
262\& /* compute r = a ^ p mod m (May be NULL for some implementations) */
263\& int (*bn_mod_exp)(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
264\& const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
233\& /* compute r = a ^ p mod m (May be NULL for some implementations) */
234\& int (*bn_mod_exp)(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
235\& const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
265.Ve
266.PP
267.Vb 2
236\&
268\& /* called at RSA_new */
269\& int (*init)(RSA *rsa);
237\& /* called at RSA_new */
238\& int (*init)(RSA *rsa);
270.Ve
271.PP
272.Vb 2
239\&
273\& /* called at RSA_free */
274\& int (*finish)(RSA *rsa);
240\& /* called at RSA_free */
241\& int (*finish)(RSA *rsa);
275.Ve
276.PP
277.Vb 7
278\& /* RSA_FLAG_EXT_PKEY - rsa_mod_exp is called for private key
242\&
243\& /* RSA_FLAG_EXT_PKEY \- rsa_mod_exp is called for private key
279\& * operations, even if p,q,dmp1,dmq1,iqmp
280\& * are NULL
244\& * operations, even if p,q,dmp1,dmq1,iqmp
245\& * are NULL
281\& * RSA_FLAG_SIGN_VER - enable rsa_sign and rsa_verify
282\& * RSA_METHOD_FLAG_NO_CHECK - don't check pub/private match
246\& * RSA_FLAG_SIGN_VER \- enable rsa_sign and rsa_verify
247\& * RSA_METHOD_FLAG_NO_CHECK \- don\*(Aqt check pub/private match
283\& */
284\& int flags;
248\& */
249\& int flags;
285.Ve
286.PP
287.Vb 1
250\&
288\& char *app_data; /* ?? */
251\& char *app_data; /* ?? */
289.Ve
290.PP
291.Vb 5
252\&
292\& /* sign. For backward compatibility, this is used only
293\& * if (flags & RSA_FLAG_SIGN_VER)
294\& */
295\& int (*rsa_sign)(int type, unsigned char *m, unsigned int m_len,
296\& unsigned char *sigret, unsigned int *siglen, RSA *rsa);
253\& /* sign. For backward compatibility, this is used only
254\& * if (flags & RSA_FLAG_SIGN_VER)
255\& */
256\& int (*rsa_sign)(int type, unsigned char *m, unsigned int m_len,
257\& unsigned char *sigret, unsigned int *siglen, RSA *rsa);
297.Ve
298.PP
299.Vb 5
258\&
300\& /* verify. For backward compatibility, this is used only
301\& * if (flags & RSA_FLAG_SIGN_VER)
302\& */
303\& int (*rsa_verify)(int type, unsigned char *m, unsigned int m_len,
304\& unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
259\& /* verify. For backward compatibility, this is used only
260\& * if (flags & RSA_FLAG_SIGN_VER)
261\& */
262\& int (*rsa_verify)(int type, unsigned char *m, unsigned int m_len,
263\& unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
305.Ve
306.PP
307.Vb 1
264\&
308\& } RSA_METHOD;
309.Ve
310.SH "RETURN VALUES"
311.IX Header "RETURN VALUES"
312\&\fIRSA_PKCS1_SSLeay()\fR, \fIRSA_PKCS1_null_method()\fR, \fIRSA_get_default_method()\fR
313and \fIRSA_get_method()\fR return pointers to the respective RSA_METHODs.
314.PP
315\&\fIRSA_set_default_method()\fR returns no value.
316.PP
317\&\fIRSA_set_method()\fR returns a pointer to the old \s-1RSA_METHOD\s0 implementation
318that was replaced. However, this return value should probably be ignored
319because if it was supplied by an \s-1ENGINE\s0, the pointer could be invalidated
320at any time if the \s-1ENGINE\s0 is unloaded (in fact it could be unloaded as a
321result of the \fIRSA_set_method()\fR function releasing its handle to the
322\&\s-1ENGINE\s0). For this reason, the return type may be replaced with a \fBvoid\fR
323declaration in a future release.
324.PP
325\&\fIRSA_new_method()\fR returns \s-1NULL\s0 and sets an error code that can be obtained
326by \fIERR_get_error\fR\|(3) if the allocation fails. Otherwise
327it returns a pointer to the newly allocated structure.
328.SH "NOTES"
329.IX Header "NOTES"
330As of version 0.9.7, \s-1RSA_METHOD\s0 implementations are grouped together with
331other algorithmic APIs (eg. \s-1DSA_METHOD\s0, \s-1EVP_CIPHER\s0, etc) into \fB\s-1ENGINE\s0\fR
332modules. If a default \s-1ENGINE\s0 is specified for \s-1RSA\s0 functionality using an
333\&\s-1ENGINE\s0 \s-1API\s0 function, that will override any \s-1RSA\s0 defaults set using the \s-1RSA\s0
334\&\s-1API\s0 (ie. \fIRSA_set_default_method()\fR). For this reason, the \s-1ENGINE\s0 \s-1API\s0 is the
335recommended way to control default implementations for use in \s-1RSA\s0 and other
336cryptographic algorithms.
337.SH "BUGS"
338.IX Header "BUGS"
339The behaviour of \fIRSA_flags()\fR is a mis-feature that is left as-is for now
340to avoid creating compatibility problems. \s-1RSA\s0 functionality, such as the
341encryption functions, are controlled by the \fBflags\fR value in the \s-1RSA\s0 key
342itself, not by the \fBflags\fR value in the \s-1RSA_METHOD\s0 attached to the \s-1RSA\s0 key
343(which is what this function returns). If the flags element of an \s-1RSA\s0 key
344is changed, the changes will be honoured by \s-1RSA\s0 functionality but will not
345be reflected in the return value of the \fIRSA_flags()\fR function \- in effect
346\&\fIRSA_flags()\fR behaves more like an \fIRSA_default_flags()\fR function (which does
347not currently exist).
348.SH "SEE ALSO"
349.IX Header "SEE ALSO"
350\&\fIrsa\fR\|(3), \fIRSA_new\fR\|(3)
351.SH "HISTORY"
352.IX Header "HISTORY"
353\&\fIRSA_new_method()\fR and \fIRSA_set_default_method()\fR appeared in SSLeay 0.8.
354\&\fIRSA_get_default_method()\fR, \fIRSA_set_method()\fR and \fIRSA_get_method()\fR as
355well as the rsa_sign and rsa_verify components of \s-1RSA_METHOD\s0 were
356added in OpenSSL 0.9.4.
357.PP
358\&\fIRSA_set_default_openssl_method()\fR and \fIRSA_get_default_openssl_method()\fR
359replaced \fIRSA_set_default_method()\fR and \fIRSA_get_default_method()\fR
360respectively, and \fIRSA_set_method()\fR and \fIRSA_new_method()\fR were altered to use
361\&\fB\s-1ENGINE\s0\fRs rather than \fB\s-1RSA_METHOD\s0\fRs during development of the engine
362version of OpenSSL 0.9.6. For 0.9.7, the handling of defaults in the \s-1ENGINE\s0
363\&\s-1API\s0 was restructured so that this change was reversed, and behaviour of the
364other functions resembled more closely the previous behaviour. The
365behaviour of defaults in the \s-1ENGINE\s0 \s-1API\s0 now transparently overrides the
366behaviour of defaults in the \s-1RSA\s0 \s-1API\s0 without requiring changing these
367function prototypes.
265\& } RSA_METHOD;
266.Ve
267.SH "RETURN VALUES"
268.IX Header "RETURN VALUES"
269\&\fIRSA_PKCS1_SSLeay()\fR, \fIRSA_PKCS1_null_method()\fR, \fIRSA_get_default_method()\fR
270and \fIRSA_get_method()\fR return pointers to the respective RSA_METHODs.
271.PP
272\&\fIRSA_set_default_method()\fR returns no value.
273.PP
274\&\fIRSA_set_method()\fR returns a pointer to the old \s-1RSA_METHOD\s0 implementation
275that was replaced. However, this return value should probably be ignored
276because if it was supplied by an \s-1ENGINE\s0, the pointer could be invalidated
277at any time if the \s-1ENGINE\s0 is unloaded (in fact it could be unloaded as a
278result of the \fIRSA_set_method()\fR function releasing its handle to the
279\&\s-1ENGINE\s0). For this reason, the return type may be replaced with a \fBvoid\fR
280declaration in a future release.
281.PP
282\&\fIRSA_new_method()\fR returns \s-1NULL\s0 and sets an error code that can be obtained
283by \fIERR_get_error\fR\|(3) if the allocation fails. Otherwise
284it returns a pointer to the newly allocated structure.
285.SH "NOTES"
286.IX Header "NOTES"
287As of version 0.9.7, \s-1RSA_METHOD\s0 implementations are grouped together with
288other algorithmic APIs (eg. \s-1DSA_METHOD\s0, \s-1EVP_CIPHER\s0, etc) into \fB\s-1ENGINE\s0\fR
289modules. If a default \s-1ENGINE\s0 is specified for \s-1RSA\s0 functionality using an
290\&\s-1ENGINE\s0 \s-1API\s0 function, that will override any \s-1RSA\s0 defaults set using the \s-1RSA\s0
291\&\s-1API\s0 (ie. \fIRSA_set_default_method()\fR). For this reason, the \s-1ENGINE\s0 \s-1API\s0 is the
292recommended way to control default implementations for use in \s-1RSA\s0 and other
293cryptographic algorithms.
294.SH "BUGS"
295.IX Header "BUGS"
296The behaviour of \fIRSA_flags()\fR is a mis-feature that is left as-is for now
297to avoid creating compatibility problems. \s-1RSA\s0 functionality, such as the
298encryption functions, are controlled by the \fBflags\fR value in the \s-1RSA\s0 key
299itself, not by the \fBflags\fR value in the \s-1RSA_METHOD\s0 attached to the \s-1RSA\s0 key
300(which is what this function returns). If the flags element of an \s-1RSA\s0 key
301is changed, the changes will be honoured by \s-1RSA\s0 functionality but will not
302be reflected in the return value of the \fIRSA_flags()\fR function \- in effect
303\&\fIRSA_flags()\fR behaves more like an \fIRSA_default_flags()\fR function (which does
304not currently exist).
305.SH "SEE ALSO"
306.IX Header "SEE ALSO"
307\&\fIrsa\fR\|(3), \fIRSA_new\fR\|(3)
308.SH "HISTORY"
309.IX Header "HISTORY"
310\&\fIRSA_new_method()\fR and \fIRSA_set_default_method()\fR appeared in SSLeay 0.8.
311\&\fIRSA_get_default_method()\fR, \fIRSA_set_method()\fR and \fIRSA_get_method()\fR as
312well as the rsa_sign and rsa_verify components of \s-1RSA_METHOD\s0 were
313added in OpenSSL 0.9.4.
314.PP
315\&\fIRSA_set_default_openssl_method()\fR and \fIRSA_get_default_openssl_method()\fR
316replaced \fIRSA_set_default_method()\fR and \fIRSA_get_default_method()\fR
317respectively, and \fIRSA_set_method()\fR and \fIRSA_new_method()\fR were altered to use
318\&\fB\s-1ENGINE\s0\fRs rather than \fB\s-1RSA_METHOD\s0\fRs during development of the engine
319version of OpenSSL 0.9.6. For 0.9.7, the handling of defaults in the \s-1ENGINE\s0
320\&\s-1API\s0 was restructured so that this change was reversed, and behaviour of the
321other functions resembled more closely the previous behaviour. The
322behaviour of defaults in the \s-1ENGINE\s0 \s-1API\s0 now transparently overrides the
323behaviour of defaults in the \s-1RSA\s0 \s-1API\s0 without requiring changing these
324function prototypes.