diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/crypto.c | 14 | ||||
-rw-r--r-- | src/common/crypto.h | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c index b87023f071..bf682ff330 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -984,6 +984,20 @@ crypto_pk_dup_key(crypto_pk_t *env) return env; } +#ifdef TOR_UNIT_TESTS +/** For testing: replace dest with src. (Dest must have a refcount + * of 1) */ +void +crypto_pk_assign_(crypto_pk_t *dest, const crypto_pk_t *src) +{ + tor_assert(dest); + tor_assert(dest->refs == 1); + tor_assert(src); + RSA_free(dest->key); + dest->key = RSAPrivateKey_dup(src->key); +} +#endif + /** Make a real honest-to-goodness copy of <b>env</b>, and return it. * Returns NULL on failure. */ crypto_pk_t * diff --git a/src/common/crypto.h b/src/common/crypto.h index f8fb0daa81..8f1217e2bd 100644 --- a/src/common/crypto.h +++ b/src/common/crypto.h @@ -326,5 +326,9 @@ extern int break_strongest_rng_fallback; #endif #endif +#ifdef TOR_UNIT_TESTS +void crypto_pk_assign_(crypto_pk_t *dest, const crypto_pk_t *src); +#endif + #endif |