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.
|