Added support for DH groups 22, 23 and 24, patch contributed by Joy Latten
This commit is contained in:
@@ -190,6 +190,10 @@ plugin_t *gcrypt_plugin_create()
|
||||
/* diffie hellman groups, using modp */
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_BIT,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_224,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_256,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1536_BIT,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_3072_BIT,
|
||||
@@ -202,6 +206,8 @@ plugin_t *gcrypt_plugin_create()
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1024_BIT,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1024_160,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_768_BIT,
|
||||
(dh_constructor_t)gcrypt_dh_create);
|
||||
|
||||
|
||||
@@ -106,10 +106,20 @@ static void set_other_public_value(private_gmp_diffie_hellman_t *this, chunk_t v
|
||||
#ifdef EXTENDED_DH_TEST
|
||||
/* 3. test if y ^ q mod p = 1, where q = (p - 1)/2. */
|
||||
mpz_t q, one;
|
||||
diffie_hellman_params_t *params;
|
||||
|
||||
mpz_init(q);
|
||||
mpz_init(one);
|
||||
mpz_fdiv_q_2exp(q, p_min_1, 1);
|
||||
|
||||
params = diffie_hellman_get_params(this->group);
|
||||
if (!params->subgroup.len)
|
||||
{
|
||||
mpz_fdiv_q_2exp(q, p_min_1, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
mpz_import(q, params->subgroup.len, 1, 1, 1, 0, params->subgroup.ptr);
|
||||
}
|
||||
mpz_powm(one, this->yb, q, this->p);
|
||||
mpz_clear(q);
|
||||
if (mpz_cmp_ui(one, 1) == 0)
|
||||
|
||||
@@ -60,6 +60,10 @@ plugin_t *gmp_plugin_create()
|
||||
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_BIT,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_224,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_256,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1536_BIT,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_3072_BIT,
|
||||
@@ -72,6 +76,8 @@ plugin_t *gmp_plugin_create()
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1024_BIT,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1024_160,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_768_BIT,
|
||||
(dh_constructor_t)gmp_diffie_hellman_create);
|
||||
|
||||
|
||||
@@ -266,6 +266,10 @@ plugin_t *openssl_plugin_create()
|
||||
/* (ec) diffie hellman */
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_BIT,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_224,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_2048_256,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1536_BIT,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, ECP_256_BIT,
|
||||
@@ -288,6 +292,8 @@ plugin_t *openssl_plugin_create()
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1024_BIT,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_1024_160,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
lib->crypto->add_dh(lib->crypto, MODP_768_BIT,
|
||||
(dh_constructor_t)openssl_diffie_hellman_create);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user