diff options
author | Nick Mathewson <nickm@torproject.org> | 2009-09-29 00:48:45 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2009-09-29 00:53:25 -0400 |
commit | cfba9c01bf37a3c2f67b18275522df81c081e898 (patch) | |
tree | a2e73638810f9c5528e74f5c7e273bdd83d91e2a /src | |
parent | 76d26ae52d655e9fd0549eacbba9c7e2d5c05cc4 (diff) | |
download | tor-cfba9c01bf37a3c2f67b18275522df81c081e898.tar.gz tor-cfba9c01bf37a3c2f67b18275522df81c081e898.zip |
Alter keygen function to generate keys of different lengths.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/crypto.c | 13 | ||||
-rw-r--r-- | src/common/crypto.h | 4 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/common/crypto.c b/src/common/crypto.c index e9333bca2b..581d1ba5a0 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -337,7 +337,8 @@ _crypto_new_pk_env_evp_pkey(EVP_PKEY *pkey) return _crypto_new_pk_env_rsa(rsa); } -/** Helper, used by tor-checkkey.c. Return the RSA from a crypto_pk_env_t. */ +/** Helper, used by tor-checkkey.c and tor-gencert.c. Return the RSA from a + * crypto_pk_env_t. */ RSA * _crypto_pk_env_get_rsa(crypto_pk_env_t *env) { @@ -472,11 +473,11 @@ crypto_free_cipher_env(crypto_cipher_env_t *env) /* public key crypto */ -/** Generate a new public/private keypair in <b>env</b>. Return 0 on - * success, -1 on failure. +/** Generate a <b>bits</b>-bit new public/private keypair in <b>env</b>. + * Return 0 on success, -1 on failure. */ int -crypto_pk_generate_key(crypto_pk_env_t *env) +crypto_pk_generate_key_with_bits(crypto_pk_env_t *env, int bits) { tor_assert(env); @@ -484,7 +485,7 @@ crypto_pk_generate_key(crypto_pk_env_t *env) RSA_free(env->key); #if OPENSSL_VERSION_NUMBER < 0x00908000l /* In OpenSSL 0.9.7, RSA_generate_key is all we have. */ - env->key = RSA_generate_key(PK_BYTES*8,65537, NULL, NULL); + env->key = RSA_generate_key(bits, 65537, NULL, NULL); #else /* In OpenSSL 0.9.8, RSA_generate_key is deprecated. */ { @@ -497,7 +498,7 @@ crypto_pk_generate_key(crypto_pk_env_t *env) r = RSA_new(); if (!r) goto done; - if (RSA_generate_key_ex(r, PK_BYTES*8, e, NULL) == -1) + if (RSA_generate_key_ex(r, bits, e, NULL) == -1) goto done; env->key = r; diff --git a/src/common/crypto.h b/src/common/crypto.h index 515b870f3d..f0958a8073 100644 --- a/src/common/crypto.h +++ b/src/common/crypto.h @@ -86,7 +86,9 @@ crypto_cipher_env_t *crypto_new_cipher_env(void); void crypto_free_cipher_env(crypto_cipher_env_t *env); /* public key crypto */ -int crypto_pk_generate_key(crypto_pk_env_t *env); +int crypto_pk_generate_key_with_bits(crypto_pk_env_t *env, int bits); +#define crypto_pk_generate_key(env) \ + crypto_pk_generate_key_with_bits((env), (PK_BYTES*8)) int crypto_pk_read_private_key_from_filename(crypto_pk_env_t *env, const char *keyfile); |