]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
fips: adjust pbkdf2 tests for SP 800-132 limits
authorTobias Heider <tobias.heider@canonical.com>
Thu, 30 Mar 2023 14:38:05 +0000 (16:38 +0200)
committerTobias Heider <tobias.heider@canonical.com>
Thu, 30 Mar 2023 14:38:05 +0000 (16:38 +0200)
- Make sure to always use approved iteration count
- Check that salt < 16 return non-approved
- Check that iteration count < 1000 returns non-approved

Signed-off-by: Tobias Heider <tobias.heider@canonical.com>
tests/fips-test.c

index aa76d062f84fb69ad9550e4e5fe92e86214eca41..86d1aa8811f42a0333e230a965d6b9e73edee28c 100644 (file)
@@ -450,7 +450,7 @@ void doit(void)
 
        /* PBKDF2 with key equal to or longer than 112 bits: approved */
        FIPS_PUSH_CONTEXT();
-       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 100,
+       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000,
                            &pbkdf2, sizeof(pbkdf2));
        if (ret < 0) {
                fail("gnutls_pbkdf2 failed\n");
@@ -460,7 +460,7 @@ void doit(void)
        /* PBKDF2 with key shorter than 112 bits: not approved */
        FIPS_PUSH_CONTEXT();
        key.size = 13;
-       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 100,
+       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000,
                            &pbkdf2, sizeof(pbkdf2));
        if (ret < 0) {
                fail("gnutls_pbkdf2 failed\n");
@@ -468,9 +468,29 @@ void doit(void)
        key.size = sizeof(key16);
        FIPS_POP_CONTEXT(NOT_APPROVED);
 
+       /* PBKDF2 with iteration count lower than 1000: not approved */
+       FIPS_PUSH_CONTEXT();
+       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 999,
+                           &pbkdf2, sizeof(pbkdf2));
+       if (ret < 0) {
+               fail("gnutls_pbkdf2 failed\n");
+       }
+       FIPS_POP_CONTEXT(NOT_APPROVED);
+
+       /* PBKDF2 with salt shorter than 16 bytes: not approved */
+       FIPS_PUSH_CONTEXT();
+       iv.size = 13;
+       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000,
+                           &pbkdf2, sizeof(pbkdf2));
+       if (ret < 0) {
+               fail("gnutls_pbkdf2 failed\n");
+       }
+       iv.size = sizeof(iv16);
+       FIPS_POP_CONTEXT(NOT_APPROVED);
+
        /* PBKDF2 with output shorter than 112 bits: not approved */
        FIPS_PUSH_CONTEXT();
-       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 100, &pbkdf2, 13);
+       ret = gnutls_pbkdf2(GNUTLS_MAC_SHA256, &key, &iv, 1000, &pbkdf2, 13);
        if (ret < 0) {
                fail("gnutls_pbkdf2 failed\n");
        }