summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoachim Vandersmissen <git@jvdsn.com>2024-03-04 19:16:23 -0600
committerTomas Mraz <tomas@openssl.org>2024-03-13 17:04:31 +0100
commit3cb0755323281267211fbe951b94a2552e99d32a (patch)
tree745c35f8b842e31c5b2aca262f923ff7c176d5d5
parent39202836d6272a2dc44de8797fb34146f0eea51b (diff)
Implement KAT for KBKDF with KMAC128
Reviewed-by: Paul Dale <ppzgs1@gmail.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/23745)
-rw-r--r--include/openssl/self_test.h1
-rw-r--r--providers/fips/self_test_data.inc33
2 files changed, 34 insertions, 0 deletions
diff --git a/include/openssl/self_test.h b/include/openssl/self_test.h
index d7de90262c..719865fda2 100644
--- a/include/openssl/self_test.h
+++ b/include/openssl/self_test.h
@@ -72,6 +72,7 @@ extern "C" {
# define OSSL_SELF_TEST_DESC_KDF_SSHKDF "SSHKDF"
# define OSSL_SELF_TEST_DESC_KDF_TLS12_PRF "TLS12_PRF"
# define OSSL_SELF_TEST_DESC_KDF_KBKDF "KBKDF"
+# define OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC "KBKDF_KMAC"
# define OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT "TLS13_KDF_EXTRACT"
# define OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND "TLS13_KDF_EXPAND"
# define OSSL_SELF_TEST_DESC_RNG "RNG"
diff --git a/providers/fips/self_test_data.inc b/providers/fips/self_test_data.inc
index 2057378d3d..afff3ba4df 100644
--- a/providers/fips/self_test_data.inc
+++ b/providers/fips/self_test_data.inc
@@ -497,6 +497,33 @@ static const ST_KAT_PARAM kbkdf_params[] = {
ST_KAT_PARAM_END()
};
+static const char kbkdf_kmac_mac[] = "KMAC128";
+static unsigned char kbkdf_kmac_label[] = {
+ 0xB5, 0xB5, 0xF3, 0x71, 0x9F, 0xBE, 0x5B, 0x3D,
+ 0x7B, 0x8D, 0x05, 0xA1, 0xD3, 0x25, 0x19, 0x50,
+};
+static unsigned char kbkdf_kmac_context[] = {
+ 0x36, 0x60, 0x0E, 0xF3, 0xC3, 0x70, 0xB5, 0xEF,
+ 0x58, 0xBE, 0xF1, 0xBA, 0x1C, 0xF2, 0x74, 0xCB,
+};
+static unsigned char kbkdf_kmac_key[] = {
+ 0xB2, 0x51, 0x4C, 0xC1, 0xD5, 0xCD, 0x7B, 0x6B,
+ 0xA3, 0x3C, 0x90, 0x05, 0xBD, 0xAC, 0x32, 0x2A,
+};
+static unsigned char kbkdf_kmac_expected[] = {
+ 0xB1, 0x58, 0xEE, 0xB1, 0x34, 0xA4, 0xDD, 0x9D,
+ 0xAC, 0x52, 0xBD, 0x9E, 0x30, 0xE8, 0x0D, 0x76,
+ 0x42, 0x57, 0x01, 0x89, 0x5F, 0x82, 0x74, 0xB9,
+ 0xEB, 0x3E, 0x84, 0xD8, 0xA5, 0xDE, 0x6E, 0x54,
+};
+static const ST_KAT_PARAM kbkdf_kmac_params[] = {
+ ST_KAT_PARAM_UTF8STRING(OSSL_KDF_PARAM_MAC, kbkdf_kmac_mac),
+ ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_KEY, kbkdf_kmac_key),
+ ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_SALT, kbkdf_kmac_label),
+ ST_KAT_PARAM_OCTET(OSSL_KDF_PARAM_INFO, kbkdf_kmac_context),
+ ST_KAT_PARAM_END()
+};
+
static const char tls13_kdf_digest[] = "SHA256";
static int tls13_kdf_extract_mode = EVP_KDF_HKDF_MODE_EXTRACT_ONLY;
static int tls13_kdf_expand_mode = EVP_KDF_HKDF_MODE_EXPAND_ONLY;
@@ -588,6 +615,12 @@ static const ST_KAT_KDF st_kat_kdf_tests[] =
ITM(kbkdf_expected)
},
{
+ OSSL_SELF_TEST_DESC_KDF_KBKDF_KMAC,
+ OSSL_KDF_NAME_KBKDF,
+ kbkdf_kmac_params,
+ ITM(kbkdf_kmac_expected)
+ },
+ {
OSSL_SELF_TEST_DESC_KDF_HKDF,
OSSL_KDF_NAME_HKDF,
hkdf_params,