From: Nikos Mavrogiannopoulos Date: Wed, 29 Oct 2014 15:09:23 +0000 (+0100) Subject: Added gnutls_dh_params_import_raw2(), which allows to specify the number of bits... X-Git-Tag: gnutls_3_4_0~725 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d95ca751e6c198a4d2f5e95bec7013d682fe00fa;p=thirdparty%2Fgnutls.git Added gnutls_dh_params_import_raw2(), which allows to specify the number of bits for key size --- diff --git a/lib/gnutls_dh.c b/lib/gnutls_dh.c index eb706d12d2..6316ca298d 100644 --- a/lib/gnutls_dh.c +++ b/lib/gnutls_dh.c @@ -98,6 +98,29 @@ int gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, const gnutls_datum_t * prime, const gnutls_datum_t * generator) +{ + return gnutls_dh_params_import_raw2(dh_params, prime, generator, 0); +} + +/** + * gnutls_dh_params_import_raw2: + * @dh_params: Is a structure that will hold the prime numbers + * @prime: holds the new prime + * @generator: holds the new generator + * @key_bits: the private key bits (set to zero when unknown) + * + * This function will replace the pair of prime and generator for use + * in the Diffie-Hellman key exchange. The new parameters should be + * stored in the appropriate gnutls_datum. + * + * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, + * otherwise a negative error code is returned. + **/ +int +gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params, + const gnutls_datum_t * prime, + const gnutls_datum_t * generator, + unsigned key_bits) { bigint_t tmp_prime, tmp_g; size_t siz; @@ -119,9 +142,9 @@ gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, */ dh_params->params[0] = tmp_prime; dh_params->params[1] = tmp_g; + dh_params->q_bits = key_bits; return 0; - } /** diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in index 158aaed10c..72d6a485f7 100644 --- a/lib/includes/gnutls/gnutls.h.in +++ b/lib/includes/gnutls/gnutls.h.in @@ -1524,6 +1524,10 @@ void gnutls_dh_params_deinit(gnutls_dh_params_t dh_params); int gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params, const gnutls_datum_t * prime, const gnutls_datum_t * generator); +int gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params, + const gnutls_datum_t * prime, + const gnutls_datum_t * generator, + unsigned key_bits); int gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params, const gnutls_datum_t * pkcs3_params, gnutls_x509_crt_fmt_t format); diff --git a/lib/libgnutls.map b/lib/libgnutls.map index 4f35e74ce1..299b5cac1c 100644 --- a/lib/libgnutls.map +++ b/lib/libgnutls.map @@ -1057,6 +1057,7 @@ GNUTLS_3_1_0 { gnutls_aead_cipher_set_nonce; gnutls_aead_cipher_add_auth; gnutls_aead_cipher_deinit; + gnutls_dh_params_import_raw2; } GNUTLS_3_0_0; GNUTLS_FIPS140 {