diff options
author | Nick Mathewson <nickm@torproject.org> | 2004-04-01 20:04:54 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2004-04-01 20:04:54 +0000 |
commit | 56b3d67149a96ad6d766be19a014d620b99dc34a (patch) | |
tree | c8558fab465af02f5c739c818a94b8eebcc565a3 /src/common | |
parent | f05937355e6b2eb664ebb969b412c791a415cde9 (diff) | |
download | tor-56b3d67149a96ad6d766be19a014d620b99dc34a.tar tor-56b3d67149a96ad6d766be19a014d620b99dc34a.tar.gz |
Separate "generate-DH-key" from "get-DH-key" without breaking old interface
svn:r1431
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/crypto.c | 12 | ||||
-rw-r--r-- | src/common/crypto.h | 1 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c index e0badacfc..7a548a2d1 100644 --- a/src/common/crypto.c +++ b/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); diff --git a/src/common/crypto.h b/src/common/crypto.h index d256b1cb0..a09a4deda 100644 --- a/src/common/crypto.h +++ b/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, |