From 3c3084e1656888d43be3b92169734a6195ec6d75 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 28 Nov 2012 15:38:37 -0500 Subject: Add a crypto_dh_dup, for benchmark support --- src/common/crypto.c | 10 ++++++++++ src/common/crypto.h | 1 + 2 files changed, 11 insertions(+) (limited to 'src/common') diff --git a/src/common/crypto.c b/src/common/crypto.c index 39f5a4a642..37d8433966 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -2036,6 +2036,16 @@ crypto_dh_new(int dh_type) return NULL; } +/** Return a copy of dh, sharing its internal state. */ +crypto_dh_t * +crypto_dh_dup(const crypto_dh_t *dh) +{ + crypto_dh_t *dh_new = tor_malloc_zero(sizeof(crypto_dh_t)); + dh_new->dh = dh->dh; + DH_up_ref(dh->dh); + return dh_new; +} + /** Return the length of the DH key in dh, in bytes. */ int diff --git a/src/common/crypto.h b/src/common/crypto.h index 4c5fa6ad97..eb8b1de163 100644 --- a/src/common/crypto.h +++ b/src/common/crypto.h @@ -230,6 +230,7 @@ void crypto_hmac_sha256(char *hmac_out, #define DH_TYPE_REND 2 #define DH_TYPE_TLS 3 crypto_dh_t *crypto_dh_new(int dh_type); +crypto_dh_t *crypto_dh_dup(const crypto_dh_t *dh); int crypto_dh_get_bytes(crypto_dh_t *dh); int crypto_dh_generate_public(crypto_dh_t *dh); int crypto_dh_get_public(crypto_dh_t *dh, char *pubkey_out, -- cgit v1.2.3-54-g00ecf