aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-11-28 15:38:37 -0500
committerNick Mathewson <nickm@torproject.org>2012-12-06 01:54:09 -0500
commit3c3084e1656888d43be3b92169734a6195ec6d75 (patch)
tree04052b8b2020cf7ef59075056fa96ff57533cc80 /src
parentbd93ff8dd76b06ca3afe1f362b086d4f12639f71 (diff)
downloadtor-3c3084e1656888d43be3b92169734a6195ec6d75.tar
tor-3c3084e1656888d43be3b92169734a6195ec6d75.tar.gz
Add a crypto_dh_dup, for benchmark support
Diffstat (limited to 'src')
-rw-r--r--src/common/crypto.c10
-rw-r--r--src/common/crypto.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c
index 39f5a4a64..37d843396 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 <b>dh</b>, 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 <b>dh</b>, in bytes.
*/
int
diff --git a/src/common/crypto.h b/src/common/crypto.h
index 4c5fa6ad9..eb8b1de16 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,