]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
tests: make tests pass with disabled GOST algorithms
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Fri, 22 Nov 2019 14:21:19 +0000 (17:21 +0300)
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Fri, 22 Nov 2019 14:21:19 +0000 (17:21 +0300)
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
tests/cert-tests/data/gost-cert-nogost.pem
tests/key-export-pkcs8.c
tests/key-import-export.c
tests/privkey-keygen.c

index bf280349fd14edc2f42b4dacd17a5b3760a80d8e..76fcd3d8b91c79e617ce572eecddead3d98ab643 100644 (file)
@@ -6,6 +6,7 @@ X.509 Certificate Information:
                Not Before: Fri Aug 17 06:47:36 UTC 2012
                Not After: Sat Aug 17 06:47:36 UTC 2013
        Subject: CN=SuperTerm0000001,OU=SuperPlat Terminals,O=SuperPlat,L=Moscow,ST=Russia,C=RU
+error importing public key: The curve is unsupported
        Subject Public Key Algorithm: GOST R 34.10-2001
        Extensions:
                Basic Constraints (not critical):
index aa11bd7405ba5cb11c119de000766d4d67db8e24..9956e505ca9a2fcbbe2cfa1893de2e3f82abbeb2 100644 (file)
@@ -172,6 +172,7 @@ int check_ed25519(void)
 static
 int check_gost(void)
 {
+#ifdef ENABLE_GOST
        gnutls_x509_privkey_t key;
        gnutls_datum_t out;
        int ret;
@@ -193,6 +194,7 @@ int check_gost(void)
        gnutls_free(out.data);
 
        gnutls_x509_privkey_deinit(key);
+#endif
 
        return 0;
 }
index 47b8804c32882562745cea7dc3f9f10bec347fe4..45434eeb2d96a790ead10ccf6acf2c1cbcdb4b3f 100644 (file)
@@ -289,8 +289,10 @@ int check_privkey_import_export(void)
        gnutls_datum_t p, q, g, y, x;
        gnutls_datum_t m, e, u, e1, e2, d;
        gnutls_ecc_curve_t curve;
+#ifdef ENABLE_GOST
        gnutls_digest_algorithm_t digest;
        gnutls_gost_paramset_t paramset;
+#endif
        int ret;
 
        global_init();
@@ -473,6 +475,7 @@ int check_privkey_import_export(void)
        gnutls_privkey_deinit(key);
 
        /* GOST */
+#ifdef ENABLE_GOST
        ret = gnutls_privkey_init(&key);
        if (ret < 0)
                fail("error\n");
@@ -527,6 +530,7 @@ int check_privkey_import_export(void)
        gnutls_free(y.data);
        gnutls_free(p.data);
        gnutls_privkey_deinit(key);
+#endif
 
        return 0;
 }
@@ -891,6 +895,7 @@ int check_ed25519(void)
 static
 int check_gost(void)
 {
+#ifdef ENABLE_GOST
        gnutls_privkey_t key;
        gnutls_pubkey_t pub;
        gnutls_datum_t y, x, k;
@@ -993,6 +998,7 @@ int check_gost(void)
        gnutls_privkey_deinit(key);
 
        gnutls_pubkey_deinit(pub);
+#endif
 
        return 0;
 }
index ad0bad8675847802d96733841c6b581c4c98fdf7..7491e3cf330fb3d11c808cd4a396bff7ab73012e 100644 (file)
@@ -125,12 +125,20 @@ void doit(void)
                            algorithm == GNUTLS_PK_ECDH_X25519)
                                continue;
 
-                       if (gnutls_fips140_mode_enabled() &&
-                           (algorithm == GNUTLS_PK_GOST_01 ||
-                            algorithm == GNUTLS_PK_GOST_12_256 ||
-                            algorithm == GNUTLS_PK_GOST_12_512))
+                       if (algorithm == GNUTLS_PK_GOST_01 ||
+                           algorithm == GNUTLS_PK_GOST_12_256 ||
+                           algorithm == GNUTLS_PK_GOST_12_512) {
+                               /* Skip GOST algorithms:
+                                * - If they are disabled by ./configure option
+                                * - Or in FIPS140 mode
+                                */
+#ifdef ENABLE_GOST
+                               if (gnutls_fips140_mode_enabled())
+                                       continue;
+#else
                                continue;
-
+#endif
+                       }
 
                        ret = gnutls_x509_privkey_init(&pkey);
                        if (ret < 0) {