]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Add FIPS indicator tests for KDFs
authorpohsingwu <pohsingwu@synology.com>
Fri, 12 Jul 2024 14:53:33 +0000 (22:53 +0800)
committerPauli <ppzgs1@gmail.com>
Wed, 24 Jul 2024 03:16:08 +0000 (13:16 +1000)
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23889)

test/recipes/30-test_evp_data/evpkdf_hkdf.txt
test/recipes/30-test_evp_data/evpkdf_ss.txt
test/recipes/30-test_evp_data/evpkdf_ssh.txt
test/recipes/30-test_evp_data/evpkdf_tls12_prf.txt
test/recipes/30-test_evp_data/evpkdf_tls13_kdf.txt
test/recipes/30-test_evp_data/evpkdf_x963.txt
test/recipes/30-test_evp_data/evppkey_kdf_hkdf.txt
test/recipes/30-test_evp_data/evppkey_kdf_tls1_prf.txt

index 5cde7555d26a9d4373bde86aab8dc329e85f2d09..5918840ac744be4355ca23098070f350ea8826bd 100644 (file)
@@ -222,9 +222,16 @@ Ctrl.salt = hexsalt:000000000000000000000000000000000000000000000000000000000000
 Ctrl.info = info:
 Output = 62f99231760bedd72319cc6cad
 
-Title = HKDF bad digest test
+Title = FIPS indicator tests
 
-Availablein = fips
+# Test that the operation with unapproved digest function is rejected
+#
+# There is no corresponding test for checking `fips-indicator` and derived key
+# because that
+# * HKDF can be used with SHA-1, SHA-2 and SHA-3 but not with the
+#   extendable-output functions.
+# * HMAC construction is not allowed to be used with the extendable-output
+#   functions.
 FIPSversion = >=3.4.0
 KDF = HKDF
 Ctrl.digest = digest:SHAKE-256
index fe3a1010b8bc226bd7a2db3c1a631aa8411ca2bb..bfa42a296b46a40d6a46b61773a595200c2b7107 100644 (file)
@@ -1132,9 +1132,17 @@ Ctrl.hexinfo = hexinfo:0553552e5345a22404223020a003020110a10c040aaaaaaaaaaaaaaa
 Ctrl.hexinfo = hexinfo:aaaaaaa20b0409bbbbbbbbbbbbbbbbbb
 Output = d3c78b78d75313e9a926f75dfb012363fa17fa01db
 
-Title = SSKDF bad digest test
+Title = FIPS indicator tests
 
-Availablein = fips
+# Test that the operation with unapproved digest function is rejected
+#
+# There is no corresponding test for checking `fips-indicator` and derived key
+# because that
+# * SSKDF can be used with SHA-1, SHA-2 and SHA-3 but not with the
+#   extendable-output functions.
+# * The return value from the `EVP_MD_get_size` function for the
+#   extendable-output functions always is 0, so the `SSKDF_hash_kdm` function
+#   will return 0 directly.
 FIPSversion = >=3.4.0
 KDF = SSKDF
 Ctrl.digest = digest:SHAKE-256
index e9c79c1a0927dd8f20d7a35ee2a39a2d2ec2fbd7..29383a710c6df177ef7423e6e162fd62b1b2dd87 100644 (file)
@@ -4866,7 +4866,9 @@ Ctrl.type = type:A
 Output = FF
 Result = KDF_MISMATCH
 
-Availablein = fips
+Title = FIPS indicator tests
+
+# Test that the operation with unapproved digest function is rejected
 FIPSversion = >=3.4.0
 KDF = SSHKDF
 Ctrl.digest = digest:SHA512-256
@@ -4875,3 +4877,16 @@ Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245
 Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245
 Ctrl.type = type:A
 Result = KDF_DERIVE_ERROR
+
+# Test that the operation with unapproved digest function is is reported as
+# unapproved
+FIPSversion = >=3.4.0
+KDF = SSHKDF
+Unapproved = 1
+Ctrl.digest-check = digest-check:0
+Ctrl.digest = digest:SHA512-256
+Ctrl.hexkey = hexkey:0000008055bae931c07fd824bf10add1902b6fbc7c665347383498a686929ff5a25f8e40cb6645ea814fb1a5e0a11f852f86255641e5ed986e83a78bc8269480eac0b0dfd770cab92e7a28dd87ff452466d6ae867cead63b366b1c286e6c4811a9f14c27aea14c5171d49b78c06e3735d36e6a3be321dd5fc82308f34ee1cb17fba94a59
+Ctrl.hexxcghash = hexxcghash:a4ebd45934f56792b5112dcd75a1075fdc889245
+Ctrl.hexsession_id = hexsession_id:a4ebd45934f56792b5112dcd75a1075fdc889245
+Ctrl.type = type:A
+Output = d37ea221cbcc026d95e8c10b7d28a1b41e4ec1b497bae0e4cdbc1446e5bd59e2
index 09720e7dcaf673bbbed2138dd07b6fb536a47370..e10f24a33325186bb3816e42c136c0731d40cf14 100644 (file)
@@ -69,3 +69,28 @@ Ctrl.label = seed:master secret
 Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c
 Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce
 Output = 202c88c00f84a17a20027079604787461176455539e705be730890602c289a5001e34eeb3a043e5d52a65e66125188bf
+
+Title = FIPS indicator tests
+
+# Test that the operation with unapproved digest function is rejected
+FIPSversion = >=3.4.0
+KDF = TLS1-PRF
+Ctrl.digest = digest:SHA512-256
+Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc
+Ctrl.label = seed:extended master secret
+Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c
+Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce
+Result = KDF_DERIVE_ERROR
+
+# Test that the operation with unapproved digest function is is reported as
+# unapproved
+FIPSversion = >=3.4.0
+KDF = TLS1-PRF
+Unapproved = 1
+Ctrl.digest-check = digest-check:0
+Ctrl.digest = digest:SHA512-256
+Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc
+Ctrl.label = seed:extended master secret
+Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c
+Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce
+Output = 17be20a3b4cc05524d7de353b2f125537c23372144111b0367bda166fcfc09cf1c94909a408b986f53afbdc41d93ae09
index c65470832dec5fd3adf4d49b2247508cc732964c..9eb297517669d6941076258060dc0705adcf8124 100644 (file)
@@ -4935,12 +4935,23 @@ Ctrl.mode = mode:EXTRACT_AND_EXPAND
 Ctrl.digest = digest:SHA256
 Result = KDF_CTRL_ERROR
 
-Title = TLS13-KDF bad digest test
+Title = FIPS indicator tests
 
-Availablein = fips
+# Test that the operation with unapproved digest function is rejected
 FIPSversion = >=3.4.0
 KDF = TLS13-KDF
 Ctrl.mode = mode:EXTRACT_ONLY
-Ctrl.digest = digest:SHA3-256
+Ctrl.digest = digest:SHA512-256
 Ctrl.key = hexkey:f8af6aea2d397baf2948a25b2834200692cff17eee9165e4e27babee9edefd05
 Result = KDF_DERIVE_ERROR
+
+# Test that the operation with unapproved digest function is is reported as
+# unapproved
+FIPSversion = >=3.4.0
+KDF = TLS13-KDF
+Unapproved = 1
+Ctrl.digest-check = digest-check:0
+Ctrl.mode = mode:EXTRACT_ONLY
+Ctrl.digest = digest:SHA512-256
+Ctrl.key = hexkey:f8af6aea2d397baf2948a25b2834200692cff17eee9165e4e27babee9edefd05
+Output = c8240b43113bb8bd211ee97c5145d389e8074f76eeeaac74eb55691062a436e4
index e5e8b046c888db3f5211b3517bf7fccd0a29c618..a305aa4c024f6a30936995c7d9083b5efb621d88 100644 (file)
@@ -121,12 +121,23 @@ Ctrl.hexinfo = hexinfo:cf3a74ba86
 Ctrl.hexinfo = hexinfo:af42f1ae85477ead645583
 Output = 995d1ab8557dfeafcb347f8182583fa0ac5e6cb3912393592590989f38a0214f6cf7d6fbe23917b0966c6a870876de2a2c13a45fa7aa1715be137ed332e1ffc204ce4dcce33ece6dec7f3da61fa049780040e44142cc8a1e5121cf56b386f65b7c261a192f05e5fefae4221a602bc51c41ef175dc45fb7eab8642421b4f7e3e7
 
-Title = X963KDF bad digest test
+Title = FIPS indicator tests
 
-Availablein = fips
+# Test that the operation with unapproved digest function is rejected
 FIPSversion = >=3.4.0
 KDF = X963KDF
 Ctrl.digest = digest:SHA1
 Ctrl.hexsecret = hexsecret:fd17198b89ab39c4ab5d7cca363b82f9fd7e23c3984dc8a2
 Ctrl.hexinfo = hexinfo:856a53f3e36a26bbc5792879f307cce2
 Result = KDF_DERIVE_ERROR
+
+# Test that the operation with unapproved digest function is is reported as
+# unapproved
+FIPSversion = >=3.4.0
+KDF = X963KDF
+Unapproved = 1
+Ctrl.digest-check = digest-check:0
+Ctrl.digest = digest:SHA1
+Ctrl.hexsecret = hexsecret:fd17198b89ab39c4ab5d7cca363b82f9fd7e23c3984dc8a2
+Ctrl.hexinfo = hexinfo:856a53f3e36a26bbc5792879f307cce2
+Output = 6e5fad865cb4a51c95209b16df0cc490bc2c9064405c5bccd4ee4832a531fbe7f10cb79e2eab6ab1149fbd5a23cfdabc41242269c9df22f628c4424333855b64e95e2d4fb8469c669f17176c07d103376b10b384ec5763d8b8c610409f19aca8eb31f9d85cc61a8d6d4a03d03e5a506b78d6847e93d295ee548c65afedd2efec
index 1a0277594bc318cd746b10ff39dc0fc72d1730ed..ef574128aa56f18a8a812a5f1424437e2ee38a24 100644 (file)
@@ -193,3 +193,21 @@ Ctrl.md = md:SHA1
 Ctrl.IKM = hexkey:0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
 Ctrl.salt = salt:
 Output = 2c91117204d745f3500d636a62f64f0ab3bae548aa53d423b0d1f27ebba6f5e5673a081d70cce7acfc48
+
+Title = FIPS indicator tests
+
+# Test that the operation with unapproved digest function is rejected
+#
+# There is no corresponding test for checking `fips-indicator` and derived key
+# because that
+# * HKDF can be used with SHA-1, SHA-2 and SHA-3 but not with the
+#   extendable-output functions.
+# * HMAC construction is not allowed to be used with the extendable-output
+#   functions.
+FIPSversion = >=3.4.0
+PKEYKDF = HKDF
+Ctrl.digest = digest:SHAKE-256
+Ctrl.IKM = hexkey:0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
+Ctrl.salt = hexsalt:000102030405060708090a0b0c
+Ctrl.info = hexinfo:f0f1f2f3f4f5f6f7f8f9
+Result = KDF_DERIVE_ERROR
index 17a8dab6f7d9c6e1e6518f8ff947abecd2899c55..b5276e664e1207bfa96b4b9f992ab381da22fcba 100644 (file)
@@ -69,3 +69,28 @@ Ctrl.Secret = hexsecret:01
 Ctrl.Seed = hexseed:02
 Output = 03
 Result = KDF_DERIVE_ERROR
+
+Title = FIPS indicator tests
+
+# Test that the operation with unapproved digest function is rejected
+FIPSversion = >=3.4.0
+PKEYKDF = TLS1-PRF
+Ctrl.digest = digest:SHA512-256
+Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc
+Ctrl.label = seed:extended master secret
+Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c
+Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce
+Result = KDF_DERIVE_ERROR
+
+# Test that the operation with unapproved digest function is is reported as
+# unapproved
+FIPSversion = >=3.4.0
+PKEYKDF = TLS1-PRF
+Unapproved = 1
+Ctrl.digest-check = digest-check:0
+Ctrl.digest = digest:SHA512-256
+Ctrl.Secret = hexsecret:f8938ecc9edebc5030c0c6a441e213cd24e6f770a50dda07876f8d55da062bcadb386b411fd4fe4313a604fce6c17fbc
+Ctrl.label = seed:extended master secret
+Ctrl.client_random = hexseed:36c129d01a3200894b9179faac589d9835d58775f9b5ea3587cb8fd0364cae8c
+Ctrl.server_random = hexseed:f6c9575ed7ddd73e1f7d16eca115415812a43c2b747daaaae043abfb50053fce
+Output = 17be20a3b4cc05524d7de353b2f125537c23372144111b0367bda166fcfc09cf1c94909a408b986f53afbdc41d93ae09