ソースを参照

Add a crypto_dh_dup, for benchmark support

Nick Mathewson 13 年 前
コミット
3c3084e165
2 ファイル変更11 行追加0 行削除
  1. 10 0
      src/common/crypto.c
  2. 1 0
      src/common/crypto.h

+ 10 - 0
src/common/crypto.c

@@ -2036,6 +2036,16 @@ crypto_dh_new(int dh_type)
   return NULL;
   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.
 /** Return the length of the DH key in <b>dh</b>, in bytes.
  */
  */
 int
 int

+ 1 - 0
src/common/crypto.h

@@ -230,6 +230,7 @@ void crypto_hmac_sha256(char *hmac_out,
 #define DH_TYPE_REND 2
 #define DH_TYPE_REND 2
 #define DH_TYPE_TLS 3
 #define DH_TYPE_TLS 3
 crypto_dh_t *crypto_dh_new(int dh_type);
 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_get_bytes(crypto_dh_t *dh);
 int crypto_dh_generate_public(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,
 int crypto_dh_get_public(crypto_dh_t *dh, char *pubkey_out,