]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/RSA_set_method.3
This commit was generated by cvs2svn to compensate for changes in r107579,
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / RSA_set_method.3
1 .\" Automatically generated by Pod::Man version 1.15
2 .\" Tue Jul 30 09:21:54 2002
3 .\"
4 .\" Standard preamble:
5 .\" ======================================================================
6 .de Sh \" Subsection heading
7 .br
8 .if t .Sp
9 .ne 5
10 .PP
11 \fB\\$1\fR
12 .PP
13 ..
14 .de Sp \" Vertical space (when we can't use .PP)
15 .if t .sp .5v
16 .if n .sp
17 ..
18 .de Ip \" List item
19 .br
20 .ie \\n(.$>=3 .ne \\$3
21 .el .ne 3
22 .IP "\\$1" \\$2
23 ..
24 .de Vb \" Begin verbatim text
25 .ft CW
26 .nf
27 .ne \\$1
28 ..
29 .de Ve \" End verbatim text
30 .ft R
31
32 .fi
33 ..
34 .\" Set up some character translations and predefined strings.  \*(-- will
35 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
36 .\" double quote, and \*(R" will give a right double quote.  | will give a
37 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used
38 .\" to do unbreakable dashes and therefore won't be available.  \*(C` and
39 .\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
40 .tr \(*W-|\(bv\*(Tr
41 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
42 .ie n \{\
43 .    ds -- \(*W-
44 .    ds PI pi
45 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
46 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
47 .    ds L" ""
48 .    ds R" ""
49 .    ds C` ""
50 .    ds C' ""
51 'br\}
52 .el\{\
53 .    ds -- \|\(em\|
54 .    ds PI \(*p
55 .    ds L" ``
56 .    ds R" ''
57 'br\}
58 .\"
59 .\" If the F register is turned on, we'll generate index entries on stderr
60 .\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
61 .\" index entries marked with X<> in POD.  Of course, you'll have to process
62 .\" the output yourself in some meaningful fashion.
63 .if \nF \{\
64 .    de IX
65 .    tm Index:\\$1\t\\n%\t"\\$2"
66 ..
67 .    nr % 0
68 .    rr F
69 .\}
70 .\"
71 .\" For nroff, turn off justification.  Always turn off hyphenation; it
72 .\" makes way too many mistakes in technical documents.
73 .hy 0
74 .if n .na
75 .\"
76 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
77 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
78 .bd B 3
79 .    \" fudge factors for nroff and troff
80 .if n \{\
81 .    ds #H 0
82 .    ds #V .8m
83 .    ds #F .3m
84 .    ds #[ \f1
85 .    ds #] \fP
86 .\}
87 .if t \{\
88 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
89 .    ds #V .6m
90 .    ds #F 0
91 .    ds #[ \&
92 .    ds #] \&
93 .\}
94 .    \" simple accents for nroff and troff
95 .if n \{\
96 .    ds ' \&
97 .    ds ` \&
98 .    ds ^ \&
99 .    ds , \&
100 .    ds ~ ~
101 .    ds /
102 .\}
103 .if t \{\
104 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
105 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
106 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
107 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
108 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
109 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
110 .\}
111 .    \" troff and (daisy-wheel) nroff accents
112 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
113 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
114 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
115 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
116 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
117 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
118 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
119 .ds ae a\h'-(\w'a'u*4/10)'e
120 .ds Ae A\h'-(\w'A'u*4/10)'E
121 .    \" corrections for vroff
122 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
123 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
124 .    \" for low resolution devices (crt and lpr)
125 .if \n(.H>23 .if \n(.V>19 \
126 \{\
127 .    ds : e
128 .    ds 8 ss
129 .    ds o a
130 .    ds d- d\h'-1'\(ga
131 .    ds D- D\h'-1'\(hy
132 .    ds th \o'bp'
133 .    ds Th \o'LP'
134 .    ds ae ae
135 .    ds Ae AE
136 .\}
137 .rm #[ #] #H #V #F C
138 .\" ======================================================================
139 .\"
140 .IX Title "RSA_set_method 3"
141 .TH RSA_set_method 3 "0.9.6e" "2000-11-12" "OpenSSL"
142 .UC
143 .SH "NAME"
144 RSA_set_default_method, RSA_get_default_method, RSA_set_method,
145 RSA_get_method, RSA_PKCS1_SSLeay, RSA_PKCS1_RSAref,
146 RSA_null_method, RSA_flags, RSA_new_method \- select \s-1RSA\s0 method
147 .SH "SYNOPSIS"
148 .IX Header "SYNOPSIS"
149 .Vb 1
150 \& #include <openssl/rsa.h>
151 .Ve
152 .Vb 1
153 \& void RSA_set_default_method(RSA_METHOD *meth);
154 .Ve
155 .Vb 1
156 \& RSA_METHOD *RSA_get_default_method(void);
157 .Ve
158 .Vb 1
159 \& RSA_METHOD *RSA_set_method(RSA *rsa, RSA_METHOD *meth);
160 .Ve
161 .Vb 1
162 \& RSA_METHOD *RSA_get_method(RSA *rsa);
163 .Ve
164 .Vb 1
165 \& RSA_METHOD *RSA_PKCS1_SSLeay(void);
166 .Ve
167 .Vb 1
168 \& RSA_METHOD *RSA_PKCS1_RSAref(void);
169 .Ve
170 .Vb 1
171 \& RSA_METHOD *RSA_null_method(void);
172 .Ve
173 .Vb 1
174 \& int RSA_flags(RSA *rsa);
175 .Ve
176 .Vb 1
177 \& RSA *RSA_new_method(RSA_METHOD *method);
178 .Ve
179 .SH "DESCRIPTION"
180 .IX Header "DESCRIPTION"
181 An \fB\s-1RSA_METHOD\s0\fR specifies the functions that OpenSSL uses for \s-1RSA\s0
182 operations. By modifying the method, alternative implementations
183 such as hardware accelerators may be used.
184 .PP
185 Initially, the default is to use the OpenSSL internal implementation,
186 unless OpenSSL was configured with the \f(CW\*(C`rsaref\*(C'\fR or \f(CW\*(C`\-DRSA_NULL\*(C'\fR
187 options. \fIRSA_PKCS1_SSLeay()\fR returns a pointer to that method.
188 .PP
189 \&\fIRSA_PKCS1_RSAref()\fR returns a pointer to a method that uses the RSAref
190 library. This is the default method in the \f(CW\*(C`rsaref\*(C'\fR configuration;
191 the function is not available in other configurations.
192 \&\fIRSA_null_method()\fR returns a pointer to a method that does not support
193 the \s-1RSA\s0 transformation. It is the default if OpenSSL is compiled with
194 \&\f(CW\*(C`\-DRSA_NULL\*(C'\fR. These methods may be useful in the \s-1USA\s0 because of a
195 patent on the \s-1RSA\s0 cryptosystem.
196 .PP
197 \&\fIRSA_set_default_method()\fR makes \fBmeth\fR the default method for all \fB\s-1RSA\s0\fR
198 structures created later.
199 .PP
200 \&\fIRSA_get_default_method()\fR returns a pointer to the current default
201 method.
202 .PP
203 \&\fIRSA_set_method()\fR selects \fBmeth\fR for all operations using the key
204 \&\fBrsa\fR.
205 .PP
206 \&\fIRSA_get_method()\fR returns a pointer to the method currently selected
207 for \fBrsa\fR.
208 .PP
209 \&\fIRSA_flags()\fR returns the \fBflags\fR that are set for \fBrsa\fR's current method.
210 .PP
211 \&\fIRSA_new_method()\fR allocates and initializes an \fB\s-1RSA\s0\fR structure so that
212 \&\fBmethod\fR will be used for the \s-1RSA\s0 operations. If \fBmethod\fR is \fB\s-1NULL\s0\fR,
213 the default method is used.
214 .SH "THE RSA_METHOD STRUCTURE"
215 .IX Header "THE RSA_METHOD STRUCTURE"
216 .Vb 4
217 \& typedef struct rsa_meth_st
218 \& {
219 \&     /* name of the implementation */
220 \&        const char *name;
221 .Ve
222 .Vb 3
223 \&     /* encrypt */
224 \&        int (*rsa_pub_enc)(int flen, unsigned char *from,
225 \&          unsigned char *to, RSA *rsa, int padding);
226 .Ve
227 .Vb 3
228 \&     /* verify arbitrary data */
229 \&        int (*rsa_pub_dec)(int flen, unsigned char *from,
230 \&          unsigned char *to, RSA *rsa, int padding);
231 .Ve
232 .Vb 3
233 \&     /* sign arbitrary data */
234 \&        int (*rsa_priv_enc)(int flen, unsigned char *from,
235 \&          unsigned char *to, RSA *rsa, int padding);
236 .Ve
237 .Vb 3
238 \&     /* decrypt */
239 \&        int (*rsa_priv_dec)(int flen, unsigned char *from,
240 \&          unsigned char *to, RSA *rsa, int padding);
241 .Ve
242 .Vb 3
243 \&     /* compute r0 = r0 ^ I mod rsa->n (May be NULL for some
244 \&                                        implementations) */
245 \&        int (*rsa_mod_exp)(BIGNUM *r0, BIGNUM *I, RSA *rsa);
246 .Ve
247 .Vb 3
248 \&     /* compute r = a ^ p mod m (May be NULL for some implementations) */
249 \&        int (*bn_mod_exp)(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
250 \&          const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
251 .Ve
252 .Vb 2
253 \&     /* called at RSA_new */
254 \&        int (*init)(RSA *rsa);
255 .Ve
256 .Vb 2
257 \&     /* called at RSA_free */
258 \&        int (*finish)(RSA *rsa);
259 .Ve
260 .Vb 7
261 \&     /* RSA_FLAG_EXT_PKEY        - rsa_mod_exp is called for private key
262 \&      *                            operations, even if p,q,dmp1,dmq1,iqmp
263 \&      *                            are NULL
264 \&      * RSA_FLAG_SIGN_VER        - enable rsa_sign and rsa_verify
265 \&      * RSA_METHOD_FLAG_NO_CHECK - don't check pub/private match
266 \&      */
267 \&        int flags;
268 .Ve
269 .Vb 1
270 \&        char *app_data; /* ?? */
271 .Ve
272 .Vb 5
273 \&     /* sign. For backward compatibility, this is used only
274 \&      * if (flags & RSA_FLAG_SIGN_VER)
275 \&      */
276 \&        int (*rsa_sign)(int type, unsigned char *m, unsigned int m_len,
277 \&           unsigned char *sigret, unsigned int *siglen, RSA *rsa);
278 .Ve
279 .Vb 5
280 \&     /* verify. For backward compatibility, this is used only
281 \&      * if (flags & RSA_FLAG_SIGN_VER)
282 \&      */
283 \&        int (*rsa_verify)(int type, unsigned char *m, unsigned int m_len,
284 \&           unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
285 .Ve
286 .Vb 1
287 \& } RSA_METHOD;
288 .Ve
289 .SH "RETURN VALUES"
290 .IX Header "RETURN VALUES"
291 \&\fIRSA_PKCS1_SSLeay()\fR, \fIRSA_PKCS1_RSAref()\fR, \fIRSA_PKCS1_null_method()\fR,
292 \&\fIRSA_get_default_method()\fR and \fIRSA_get_method()\fR return pointers to the
293 respective \fB\s-1RSA_METHOD\s0\fRs.
294 .PP
295 \&\fIRSA_set_default_method()\fR returns no value.
296 .PP
297 \&\fIRSA_set_method()\fR returns a pointer to the \fB\s-1RSA_METHOD\s0\fR previously
298 associated with \fBrsa\fR.
299 .PP
300 \&\fIRSA_new_method()\fR returns \fB\s-1NULL\s0\fR and sets an error code that can be
301 obtained by ERR_get_error(3) if the allocation fails. Otherwise it
302 returns a pointer to the newly allocated structure.
303 .SH "SEE ALSO"
304 .IX Header "SEE ALSO"
305 rsa(3), RSA_new(3)
306 .SH "HISTORY"
307 .IX Header "HISTORY"
308 \&\fIRSA_new_method()\fR and \fIRSA_set_default_method()\fR appeared in SSLeay 0.8.
309 \&\fIRSA_get_default_method()\fR, \fIRSA_set_method()\fR and \fIRSA_get_method()\fR as
310 well as the rsa_sign and rsa_verify components of \s-1RSA_METHOD\s0 were
311 added in OpenSSL 0.9.4.