Selaa lähdekoodia

Separate "generate-DH-key" from "get-DH-key" without breaking old interface

svn:r1431
Nick Mathewson 21 vuotta sitten
vanhempi
commit
56b3d67149
2 muutettua tiedostoa jossa 11 lisäystä ja 2 poistoa
  1. 10 2
      src/common/crypto.c
  2. 1 0
      src/common/crypto.h

+ 10 - 2
src/common/crypto.c

@@ -1158,12 +1158,20 @@ int crypto_dh_get_bytes(crypto_dh_env_t *dh)
   assert(dh);
   return DH_size(dh->dh);
 }
+int crypto_dh_generate_public(crypto_dh_env_t *dh)
+{
+  if (!DH_generate_key(dh->dh))
+    return -1;
+  return 0;
+}
 int crypto_dh_get_public(crypto_dh_env_t *dh, char *pubkey, int pubkey_len)
 {
   int bytes;
   assert(dh);
-  if (!DH_generate_key(dh->dh))
-    return -1;
+  if (!dh->dh->pub_key) {
+    if (!DH_generate_key(dh->dh))
+      return -1;
+  }
 
   assert(dh->dh->pub_key);
   bytes = BN_num_bytes(dh->dh->pub_key);

+ 1 - 0
src/common/crypto.h

@@ -86,6 +86,7 @@ typedef struct crypto_dh_env_st {
 #define CRYPTO_DH_SIZE (1024 / 8)
 crypto_dh_env_t *crypto_dh_new();
 int crypto_dh_get_bytes(crypto_dh_env_t *dh);
+int crypto_dh_generate_public(crypto_dh_env_t *dh);
 int crypto_dh_get_public(crypto_dh_env_t *dh, char *pubkey_out,
                          int pubkey_out_len);
 int crypto_dh_compute_secret(crypto_dh_env_t *dh,