summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/rsa
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/rsa')
-rw-r--r--src/lib/libcrypto/rsa/rsa.h6
-rw-r--r--src/lib/libcrypto/rsa/rsa_lib.c35
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,
395int RSA_set_ex_data(RSA *r, int idx, void *arg); 395int RSA_set_ex_data(RSA *r, int idx, void *arg);
396void *RSA_get_ex_data(const RSA *r, int idx); 396void *RSA_get_ex_data(const RSA *r, int idx);
397 397
398int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
399void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e,
400 const BIGNUM **d);
401
398RSA *RSAPublicKey_dup(RSA *rsa); 402RSA *RSAPublicKey_dup(RSA *rsa);
399RSA *RSAPrivateKey_dup(RSA *rsa); 403RSA *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
260int
261RSA_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
282void
283RSA_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}