]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Added gnutls_dh_params_import_raw2(), which allows to specify the number of bits...
authorNikos Mavrogiannopoulos <nmav@redhat.com>
Wed, 29 Oct 2014 15:09:23 +0000 (16:09 +0100)
committerNikos Mavrogiannopoulos <nmav@redhat.com>
Wed, 29 Oct 2014 15:09:23 +0000 (16:09 +0100)
lib/gnutls_dh.c
lib/includes/gnutls/gnutls.h.in
lib/libgnutls.map

index eb706d12d21372b927e1f57ea1ebd90d59e5266a..6316ca298df13e8db6df475e91da4795b7bd0198 100644 (file)
@@ -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;
-
 }
 
 /**
index 158aaed10c611fa7fb4e655124a621f6225daa50..72d6a485f744d564a339458bc0b84561f337b587 100644 (file)
@@ -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);
index 4f35e74ce17c9cdfbca6aa1145280c06483d2e52..299b5cac1c1533539e1c5c60081d6a3aed67ac8f 100644 (file)
@@ -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 {