diff options
Diffstat (limited to 'src/lib/libcrypto/rsa')
-rw-r--r-- | src/lib/libcrypto/rsa/rsa.h | 6 | ||||
-rw-r--r-- | src/lib/libcrypto/rsa/rsa_lib.c | 35 |
2 files changed, 39 insertions, 2 deletions
diff --git a/src/lib/libcrypto/rsa/rsa.h b/src/lib/libcrypto/rsa/rsa.h index 7476a1164a..7d4bd838c5 100644 --- a/src/lib/libcrypto/rsa/rsa.h +++ b/src/lib/libcrypto/rsa/rsa.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa.h,v 1.31 2017/08/30 16:07:35 jsing Exp $ */ | 1 | /* $OpenBSD: rsa.h,v 1.32 2018/02/17 13:47:36 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -395,6 +395,10 @@ int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | |||
395 | int RSA_set_ex_data(RSA *r, int idx, void *arg); | 395 | int RSA_set_ex_data(RSA *r, int idx, void *arg); |
396 | void *RSA_get_ex_data(const RSA *r, int idx); | 396 | void *RSA_get_ex_data(const RSA *r, int idx); |
397 | 397 | ||
398 | int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); | ||
399 | void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, | ||
400 | const BIGNUM **d); | ||
401 | |||
398 | RSA *RSAPublicKey_dup(RSA *rsa); | 402 | RSA *RSAPublicKey_dup(RSA *rsa); |
399 | RSA *RSAPrivateKey_dup(RSA *rsa); | 403 | RSA *RSAPrivateKey_dup(RSA *rsa); |
400 | 404 | ||
diff --git a/src/lib/libcrypto/rsa/rsa_lib.c b/src/lib/libcrypto/rsa/rsa_lib.c index 31ea418427..2a73364e70 100644 --- a/src/lib/libcrypto/rsa/rsa_lib.c +++ b/src/lib/libcrypto/rsa/rsa_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa_lib.c,v 1.31 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: rsa_lib.c,v 1.32 2018/02/17 13:47:36 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -256,3 +256,36 @@ RSA_get_ex_data(const RSA *r, int idx) | |||
256 | { | 256 | { |
257 | return CRYPTO_get_ex_data(&r->ex_data, idx); | 257 | return CRYPTO_get_ex_data(&r->ex_data, idx); |
258 | } | 258 | } |
259 | |||
260 | int | ||
261 | RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) | ||
262 | { | ||
263 | if ((r->n == NULL && n == NULL) || (r->e == NULL && e == NULL)) | ||
264 | return 0; | ||
265 | |||
266 | if (n != NULL) { | ||
267 | BN_free(r->n); | ||
268 | r->n = n; | ||
269 | } | ||
270 | if (e != NULL) { | ||
271 | BN_free(r->e); | ||
272 | r->e = e; | ||
273 | } | ||
274 | if (d != NULL) { | ||
275 | BN_free(r->d); | ||
276 | r->d = d; | ||
277 | } | ||
278 | |||
279 | return 1; | ||
280 | } | ||
281 | |||
282 | void | ||
283 | RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d) | ||
284 | { | ||
285 | if (n != NULL) | ||
286 | *n = r->n; | ||
287 | if (e != NULL) | ||
288 | *e = r->e; | ||
289 | if (d != NULL) | ||
290 | *d = r->d; | ||
291 | } | ||