summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/man/RSA_set_method.3
diff options
context:
space:
mode:
authorschwarze <>2019-06-08 09:53:15 +0000
committerschwarze <>2019-06-08 09:53:15 +0000
commitc7efff3e254b868e292d5726e03e83b957c0dd15 (patch)
tree19f63916a773468b6ac2c1b73fbac3a6aff56964 /src/lib/libcrypto/man/RSA_set_method.3
parent75842177a9c23b09df0eb4e427a0a4a120a095c4 (diff)
downloadopenbsd-c7efff3e254b868e292d5726e03e83b957c0dd15.tar.gz
openbsd-c7efff3e254b868e292d5726e03e83b957c0dd15.tar.bz2
openbsd-c7efff3e254b868e292d5726e03e83b957c0dd15.zip
In rsa.h rev. 1.40, gilles@ provided several new RSA_METHOD accessors.
Update the documentation. OK tb@ jmc@
Diffstat (limited to 'src/lib/libcrypto/man/RSA_set_method.3')
-rw-r--r--src/lib/libcrypto/man/RSA_set_method.367
1 files changed, 51 insertions, 16 deletions
diff --git a/src/lib/libcrypto/man/RSA_set_method.3 b/src/lib/libcrypto/man/RSA_set_method.3
index 524430b6f8..53d41f5516 100644
--- a/src/lib/libcrypto/man/RSA_set_method.3
+++ b/src/lib/libcrypto/man/RSA_set_method.3
@@ -1,4 +1,4 @@
1.\" $OpenBSD: RSA_set_method.3,v 1.13 2019/05/20 06:04:45 jmc Exp $ 1.\" $OpenBSD: RSA_set_method.3,v 1.14 2019/06/08 09:53:15 schwarze Exp $
2.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 2.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400
3.\" 3.\"
4.\" This file was written by Ulf Moeller <ulf@openssl.org> 4.\" This file was written by Ulf Moeller <ulf@openssl.org>
@@ -50,7 +50,7 @@
50.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 50.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51.\" OF THE POSSIBILITY OF SUCH DAMAGE. 51.\" OF THE POSSIBILITY OF SUCH DAMAGE.
52.\" 52.\"
53.Dd $Mdocdate: May 20 2019 $ 53.Dd $Mdocdate: June 8 2019 $
54.Dt RSA_SET_METHOD 3 54.Dt RSA_SET_METHOD 3
55.Os 55.Os
56.Sh NAME 56.Sh NAME
@@ -121,12 +121,25 @@ selects
121.Fa meth 121.Fa meth
122to perform all operations using the key 122to perform all operations using the key
123.Fa rsa . 123.Fa rsa .
124This replaces the 124This replaces the previous
125.Vt RSA_METHOD 125.Vt RSA_METHOD
126used by the RSA key, and if the previous method was supplied by an 126used by the RSA key, calling the
127.Fa finish
128function set up with
129.Xr RSA_meth_set_finish 3
130if any, and if the previous method was supplied by an
127.Vt ENGINE , 131.Vt ENGINE ,
128.Xr ENGINE_finish 3 132.Xr ENGINE_finish 3
129is called on it. 133is called on it.
134If
135.Fa meth
136contains an
137.Fa init
138function set up with
139.Xr RSA_meth_set_init 3 ,
140that function is called just before returning from
141.Fn RSA_set_method .
142.Pp
130It is possible to have RSA keys that only work with certain 143It is possible to have RSA keys that only work with certain
131.Vt RSA_METHOD 144.Vt RSA_METHOD
132implementations (e.g. from an 145implementations (e.g. from an
@@ -148,14 +161,19 @@ to be valid as long as the RSA key itself is valid and does not
148have its implementation changed by 161have its implementation changed by
149.Fn RSA_set_method . 162.Fn RSA_set_method .
150.Pp 163.Pp
164The misleadingly named function
151.Fn RSA_flags 165.Fn RSA_flags
152returns the flags that are set for the current 166returns the flags that are set for the current
153.Vt RSA_METHOD 167.Vt RSA_METHOD
154of 168of
155.Fa rsa . 169.Fa rsa .
170The flags used by
171.Fa rsa
172itself can instead be tested with
173.Xr RSA_test_flags 3 .
156See the 174See the
157.Sx BUGS 175.Sx BUGS
158section. 176section for more details.
159.Pp 177.Pp
160.Fn RSA_new_method 178.Fn RSA_new_method
161allocates and initializes an 179allocates and initializes an
@@ -175,6 +193,18 @@ the default method controlled by
175.Fn RSA_set_default_method 193.Fn RSA_set_default_method
176is used. 194is used.
177.Pp 195.Pp
196The initial
197.Fa flags
198are copied from the
199.Vt RSA_METHOD
200object used and will not be affected by later changes to that object,
201but may be modified by the optional
202.Fa init
203function which may have been set up with
204.Xr RSA_meth_set_init 3
205and which is called just before returning from
206.Fn RSA_new_method .
207.Pp
178The 208The
179.Dv RSA_METHOD 209.Dv RSA_METHOD
180structure is defined as follows: 210structure is defined as follows:
@@ -185,27 +215,28 @@ typedef struct rsa_meth_st
185 const char *name; 215 const char *name;
186 216
187 /* encrypt */ 217 /* encrypt */
188 int (*rsa_pub_enc)(int flen, unsigned char *from, 218 int (*rsa_pub_enc)(int flen, const unsigned char *from,
189 unsigned char *to, RSA *rsa, int padding); 219 unsigned char *to, RSA *rsa, int padding);
190 220
191 /* verify arbitrary data */ 221 /* verify arbitrary data */
192 int (*rsa_pub_dec)(int flen, unsigned char *from, 222 int (*rsa_pub_dec)(int flen, const unsigned char *from,
193 unsigned char *to, RSA *rsa, int padding); 223 unsigned char *to, RSA *rsa, int padding);
194 224
195 /* sign arbitrary data */ 225 /* sign arbitrary data */
196 int (*rsa_priv_enc)(int flen, unsigned char *from, 226 int (*rsa_priv_enc)(int flen, const unsigned char *from,
197 unsigned char *to, RSA *rsa, int padding); 227 unsigned char *to, RSA *rsa, int padding);
198 228
199 /* decrypt */ 229 /* decrypt */
200 int (*rsa_priv_dec)(int flen, unsigned char *from, 230 int (*rsa_priv_dec)(int flen, const unsigned char *from,
201 unsigned char *to, RSA *rsa, int padding); 231 unsigned char *to, RSA *rsa, int padding);
202 232
203 /* compute r0 = r0 ^ I mod rsa->n (May be NULL for some 233 /* compute r0 = r0 ^ I mod rsa->n (May be NULL for some
204 implementations) */ 234 implementations) */
205 int (*rsa_mod_exp)(BIGNUM *r0, BIGNUM *I, RSA *rsa); 235 int (*rsa_mod_exp)(BIGNUM *r0, const BIGNUM *I, RSA *rsa,
236 BN_CTX *ctx);
206 237
207 /* compute r = a ^ p mod m (May be NULL for some implementations) */ 238 /* compute r = a ^ p mod m (May be NULL for some implementations) */
208 int (*bn_mod_exp)(BIGNUM *r, BIGNUM *a, const BIGNUM *p, 239 int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
209 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 240 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
210 241
211 /* called at RSA_new */ 242 /* called at RSA_new */
@@ -218,7 +249,6 @@ typedef struct rsa_meth_st
218 * operations, even if p,q,dmp1,dmq1,iqmp 249 * operations, even if p,q,dmp1,dmq1,iqmp
219 * are NULL 250 * are NULL
220 * RSA_FLAG_SIGN_VER - enable rsa_sign and rsa_verify 251 * RSA_FLAG_SIGN_VER - enable rsa_sign and rsa_verify
221 * RSA_METHOD_FLAG_NO_CHECK - don't check pub/private match
222 */ 252 */
223 int flags; 253 int flags;
224 254
@@ -227,14 +257,19 @@ typedef struct rsa_meth_st
227 /* sign. For backward compatibility, this is used only 257 /* sign. For backward compatibility, this is used only
228 * if (flags & RSA_FLAG_SIGN_VER) 258 * if (flags & RSA_FLAG_SIGN_VER)
229 */ 259 */
230 int (*rsa_sign)(int type, unsigned char *m, unsigned int m_len, 260 int (*rsa_sign)(int type, const unsigned char *m,
231 unsigned char *sigret, unsigned int *siglen, RSA *rsa); 261 unsigned int m_len, unsigned char *sigret,
262 unsigned int *siglen, const RSA *rsa);
232 263
233 /* verify. For backward compatibility, this is used only 264 /* verify. For backward compatibility, this is used only
234 * if (flags & RSA_FLAG_SIGN_VER) 265 * if (flags & RSA_FLAG_SIGN_VER)
235 */ 266 */
236 int (*rsa_verify)(int type, unsigned char *m, unsigned int m_len, 267 int (*rsa_verify)(int type, const unsigned char *m,
237 unsigned char *sigbuf, unsigned int siglen, RSA *rsa); 268 unsigned int m_len, const unsigned char *sigbuf,
269 unsigned int siglen, const RSA *rsa);
270
271 /* called at RSA_generate_key_ex; may be NULL */
272 int (*rsa_keygen)(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
238 273
239} RSA_METHOD; 274} RSA_METHOD;
240.Ed 275.Ed