summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslontis <shane.lontis@oracle.com>2022-12-15 18:57:09 +1000
committerTomas Mraz <tomas@openssl.org>2022-12-16 16:37:22 +0100
commita92a0097d07966c207ed78888e85b8a2a531acab (patch)
tree1348e373f721242ddbb47dab541567b295c5fd4c
parent47dec02433a95d45fc94c4dc097b3d5e0bb50f00 (diff)
Add KMAC support to KBKDF.
Now that ACVP test vectors exist, support has been added for this mode. See https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-108r1.pdf Note that the test vectors used fairly large values for the input key and the context, so the contraints for these has been increased from 256 to 512 bytes. Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19916) (cherry picked from commit 211c47ca1b1ac129dcee59d383cae44e36532bb9)
-rw-r--r--doc/man7/EVP_KDF-KB.pod6
-rw-r--r--doc/man7/EVP_MAC-KMAC.pod3
-rw-r--r--providers/implementations/kdfs/kbkdf.c61
-rw-r--r--providers/implementations/macs/kmac_prov.c10
-rw-r--r--test/evp_kdf_test.c153
-rw-r--r--test/recipes/30-test_evp.t1
-rw-r--r--test/recipes/30-test_evp_data/evpkdf_kbkdf_kmac.txt917
-rw-r--r--test/recipes/30-test_evp_data/evpmac_common.txt2
8 files changed, 1135 insertions, 18 deletions
diff --git a/doc/man7/EVP_KDF-KB.pod b/doc/man7/EVP_KDF-KB.pod
index e08c5fca7b..1b9342f691 100644
--- a/doc/man7/EVP_KDF-KB.pod
+++ b/doc/man7/EVP_KDF-KB.pod
@@ -29,7 +29,7 @@ used if unspecified.
=item "mac" (B<OSSL_KDF_PARAM_MAC>) <UTF8 string>
-The value is either CMAC or HMAC.
+The value is either CMAC, HMAC, KMAC128 or KMAC256.
=item "digest" (B<OSSL_KDF_PARAM_DIGEST>) <UTF8 string>
@@ -68,7 +68,7 @@ The default value of B<32> will be used if unspecified.
=back
Depending on whether mac is CMAC or HMAC, either digest or cipher is required
-(respectively) and the other is unused.
+(respectively) and the other is unused. They are unused for KMAC128 and KMAC256.
The parameters key, salt, info, and seed correspond to KI, Label, Context, and
IV (respectively) in SP800-108. As in that document, salt, info, and seed are
@@ -166,6 +166,8 @@ L<EVP_KDF(3)/PARAMETERS>
This functionality was added in OpenSSL 3.0.
+Support for KMAC was added in OpenSSL 3.1.
+
=head1 COPYRIGHT
Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
diff --git a/doc/man7/EVP_MAC-KMAC.pod b/doc/man7/EVP_MAC-KMAC.pod
index 0197a4b3c1..1065c166db 100644
--- a/doc/man7/EVP_MAC-KMAC.pod
+++ b/doc/man7/EVP_MAC-KMAC.pod
@@ -41,11 +41,12 @@ EVP_MAC_CTX_get_params(), or with EVP_MAC_CTX_get_block_size().
Sets the MAC key.
Setting this parameter is identical to passing a I<key> to L<EVP_MAC_init(3)>.
+The length of the key (in bytes) must be in the range 4...512.
=item "custom" (B<OSSL_MAC_PARAM_CUSTOM>) <octet string>
Sets the custom value.
-It is an optional value of at most 256 bytes, and is empty by default.
+It is an optional value with a length of at most 512 bytes, and is empty by default.
=item "size" (B<OSSL_MAC_PARAM_SIZE>) <unsigned integer>
diff --git a/providers/implementations/kdfs/kbkdf.c b/providers/implementations/kdfs/kbkdf.c
index f29d132e1a..dd50e60e52 100644
--- a/providers/implementations/kdfs/kbkdf.c
+++ b/providers/implementations/kdfs/kbkdf.c
@@ -70,6 +70,7 @@ typedef struct {
unsigned char *iv;
size_t iv_len;
int use_l;
+ int is_kmac;
int use_separator;
} KBKDF;
@@ -105,6 +106,7 @@ static void init(KBKDF *ctx)
ctx->r = 32;
ctx->use_l = 1;
ctx->use_separator = 1;
+ ctx->is_kmac = 0;
}
static void *kbkdf_new(void *provctx)
@@ -172,6 +174,7 @@ static void *kbkdf_dup(void *vctx)
dest->r = src->r;
dest->use_l = src->use_l;
dest->use_separator = src->use_separator;
+ dest->is_kmac = src->is_kmac;
}
return dest;
@@ -242,6 +245,31 @@ done:
return ret;
}
+/* This must be run before the key is set */
+static int kmac_init(EVP_MAC_CTX *ctx, const unsigned char *custom, size_t customlen)
+{
+ OSSL_PARAM params[2];
+
+ if (custom == NULL || customlen == 0)
+ return 1;
+ params[0] = OSSL_PARAM_construct_octet_string(OSSL_MAC_PARAM_CUSTOM,
+ (void *)custom, customlen);
+ params[1] = OSSL_PARAM_construct_end();
+ return EVP_MAC_CTX_set_params(ctx, params) > 0;
+}
+
+static int kmac_derive(EVP_MAC_CTX *ctx, unsigned char *out, size_t outlen,
+ const unsigned char *context, size_t contextlen)
+{
+ OSSL_PARAM params[2];
+
+ params[0] = OSSL_PARAM_construct_size_t(OSSL_MAC_PARAM_SIZE, &outlen);
+ params[1] = OSSL_PARAM_construct_end();
+ return EVP_MAC_CTX_set_params(ctx, params) > 0
+ && EVP_MAC_update(ctx, context, contextlen)
+ && EVP_MAC_final(ctx, out, NULL, outlen);
+}
+
static int kbkdf_derive(void *vctx, unsigned char *key, size_t keylen,
const OSSL_PARAM params[])
{
@@ -274,9 +302,16 @@ static int kbkdf_derive(void *vctx, unsigned char *key, size_t keylen,
return 0;
}
+ if (ctx->is_kmac) {
+ ret = kmac_derive(ctx->ctx_init, key, keylen,
+ ctx->context, ctx->context_len);
+ goto done;
+ }
+
h = EVP_MAC_CTX_get_mac_size(ctx->ctx_init);
if (h == 0)
goto done;
+
if (ctx->iv_len != 0 && ctx->iv_len != h) {
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_SEED_LENGTH);
goto done;
@@ -331,13 +366,19 @@ static int kbkdf_set_ctx_params(void *vctx, const OSSL_PARAM params[])
if (!ossl_prov_macctx_load_from_params(&ctx->ctx_init, params, NULL,
NULL, NULL, libctx))
return 0;
- else if (ctx->ctx_init != NULL
- && !EVP_MAC_is_a(EVP_MAC_CTX_get0_mac(ctx->ctx_init),
- OSSL_MAC_NAME_HMAC)
- && !EVP_MAC_is_a(EVP_MAC_CTX_get0_mac(ctx->ctx_init),
- OSSL_MAC_NAME_CMAC)) {
- ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MAC);
- return 0;
+ else if (ctx->ctx_init != NULL) {
+ if (EVP_MAC_is_a(EVP_MAC_CTX_get0_mac(ctx->ctx_init),
+ OSSL_MAC_NAME_KMAC128)
+ || EVP_MAC_is_a(EVP_MAC_CTX_get0_mac(ctx->ctx_init),
+ OSSL_MAC_NAME_KMAC256)) {
+ ctx->is_kmac = 1;
+ } else if (!EVP_MAC_is_a(EVP_MAC_CTX_get0_mac(ctx->ctx_init),
+ OSSL_MAC_NAME_HMAC)
+ && !EVP_MAC_is_a(EVP_MAC_CTX_get0_mac(ctx->ctx_init),
+ OSSL_MAC_NAME_CMAC)) {
+ ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_MAC);
+ return 0;
+ }
}
p = OSSL_PARAM_locate_const(params, OSSL_KDF_PARAM_MODE);
@@ -388,9 +429,11 @@ static int kbkdf_set_ctx_params(void *vctx, const OSSL_PARAM params[])
return 0;
/* Set up digest context, if we can. */
- if (ctx->ctx_init != NULL && ctx->ki_len != 0
- && !EVP_MAC_init(ctx->ctx_init, ctx->ki, ctx->ki_len, NULL))
+ if (ctx->ctx_init != NULL && ctx->ki_len != 0) {
+ if ((ctx->is_kmac && !kmac_init(ctx->ctx_init, ctx->label, ctx->label_len))
+ || !EVP_MAC_init(ctx->ctx_init, ctx->ki, ctx->ki_len, NULL))
return 0;
+ }
return 1;
}
diff --git a/providers/implementations/macs/kmac_prov.c b/providers/implementations/macs/kmac_prov.c
index 123c40f54f..b2f85398b4 100644
--- a/providers/implementations/macs/kmac_prov.c
+++ b/providers/implementations/macs/kmac_prov.c
@@ -91,21 +91,21 @@ static OSSL_FUNC_mac_final_fn kmac_final;
* Restrict the maximum length of the customisation string. This must not
* exceed 64 bits = 8k bytes.
*/
-#define KMAC_MAX_CUSTOM 256
+#define KMAC_MAX_CUSTOM 512
/* Maximum size of encoded custom string */
#define KMAC_MAX_CUSTOM_ENCODED (KMAC_MAX_CUSTOM + KMAC_MAX_ENCODED_HEADER_LEN)
-/* Maximum key size in bytes = 256 (2048 bits) */
-#define KMAC_MAX_KEY 256
+/* Maximum key size in bytes = 512 (4096 bits) */
+#define KMAC_MAX_KEY 512
#define KMAC_MIN_KEY 4
/*
* Maximum Encoded Key size will be padded to a multiple of the blocksize
- * i.e KMAC_MAX_KEY + KMAC_MAX_ENCODED_HEADER_LEN = 256 + 4
+ * i.e KMAC_MAX_KEY + KMAC_MAX_ENCODED_HEADER_LEN = 512 + 4
* Padded to a multiple of KMAC_MAX_BLOCKSIZE
*/
-#define KMAC_MAX_KEY_ENCODED (KMAC_MAX_BLOCKSIZE * 2)
+#define KMAC_MAX_KEY_ENCODED (KMAC_MAX_BLOCKSIZE * 4)
/* Fixed value of encode_string("KMAC") */
static const unsigned char kmac_string[] = {
diff --git a/test/evp_kdf_test.c b/test/evp_kdf_test.c
index 9a33f92c41..ff2e2d70e5 100644
--- a/test/evp_kdf_test.c
+++ b/test/evp_kdf_test.c
@@ -1384,6 +1384,157 @@ static int test_kdf_kbkdf_fixedinfo(void)
}
#endif /* OPENSSL_NO_CMAC */
+static int test_kdf_kbkdf_kmac(void)
+{
+ int ret;
+ EVP_KDF_CTX *kctx;
+ OSSL_PARAM params[5], *p = params;
+ static char *mac = "KMAC256";
+
+ static unsigned char input_key[] = {
+ 0xDD, 0x81, 0xEF, 0xC8, 0x2C, 0xDD, 0xEC, 0x51,
+ 0xC4, 0x09, 0xBD, 0x8C, 0xCB, 0xAF, 0x94, 0xF6,
+ 0x5F, 0xFA, 0x7B, 0x92, 0xF1, 0x11, 0xF9, 0x40,
+ 0x2B, 0x0D, 0x6A, 0xE0, 0x5E, 0x44, 0x92, 0x34,
+ 0xF0, 0x3B, 0xBA, 0xF5, 0x4F, 0xEF, 0x19, 0x45,
+ 0xDA
+ };
+ static unsigned char context[] = {
+ 0x81, 0xA1, 0xFE, 0x39, 0x91, 0xEE, 0x3F, 0xD3,
+ 0x90, 0x4E, 0x82, 0xE6, 0x13, 0x20, 0xEC, 0x6B,
+ 0x6E, 0x14, 0x0B, 0xBA, 0x95, 0x5D, 0x0B, 0x52,
+ 0x8E, 0x27, 0x67, 0xB3, 0xE0, 0x77, 0x05, 0x15,
+ 0xBD, 0x78, 0xF6, 0xE8, 0x8A, 0x7D, 0x9B, 0x08,
+ 0x20, 0x0F, 0xE9, 0x8D, 0xD6, 0x24, 0x67, 0xE2,
+ 0xCC, 0x6D, 0x42, 0xE6, 0x60, 0x50, 0x20, 0x77,
+ 0x89, 0x89, 0xB7, 0x2D, 0xF7, 0x5F, 0xE2, 0x79,
+ 0xDB, 0x58, 0x0B, 0x7B, 0x02, 0xB9, 0xD9, 0xB0,
+ 0xFA, 0x6B, 0x0B, 0xB6, 0xD4, 0x95, 0xDB, 0x46,
+ 0x55, 0x5F, 0x12, 0xC3, 0xF0, 0xE0, 0x6E, 0xC8,
+ 0xF4, 0xF8, 0xA1, 0x64, 0x2E, 0x96, 0x74, 0x2B,
+ 0xC6, 0xBD, 0x22, 0xB1, 0x6A, 0xBC, 0x41, 0xDF,
+ 0x30, 0x32, 0xC7, 0xCE, 0x18, 0x14, 0x70, 0x2A,
+ 0xED, 0xE5, 0xC4, 0x6B, 0x8A, 0xA8, 0x36, 0xFD,
+ 0x0A, 0x76, 0x38, 0x44, 0x98, 0x0A, 0xE3, 0xC2,
+ 0x3A, 0x24, 0xCB, 0x45, 0xBF, 0xC9, 0x2C, 0x19,
+ 0xCB, 0x9D, 0x6C, 0x27, 0xDE, 0x78, 0x3E, 0x2C,
+ 0x3D, 0x39, 0x6E, 0x11, 0x59, 0xAE, 0x4F, 0x91,
+ 0x03, 0xE2, 0x7B, 0x97, 0xD6, 0x0C, 0x7D, 0x9D,
+ 0x5A, 0xA5, 0x47, 0x57, 0x41, 0xAD, 0x64, 0x5B,
+ 0xF7, 0x1D, 0x1A, 0xDA, 0x3A, 0x39, 0xDF, 0x85,
+ 0x0D, 0x0F, 0x50, 0x15, 0xA7, 0x3D, 0x68, 0x81,
+ 0x7B, 0x0D, 0xF2, 0x24, 0x24, 0x23, 0x37, 0xE5,
+ 0x77, 0xA6, 0x61, 0xBE, 0xFE, 0x4B, 0x3B, 0x8E,
+ 0x4F, 0x15, 0x4F, 0xC1, 0x30, 0xCB, 0x9E, 0xF5,
+ 0x06, 0x9F, 0xBB, 0x0E, 0xF2, 0xF4, 0x43, 0xBB,
+ 0x64, 0x45, 0xA3, 0x7D, 0x3B, 0xB4, 0x70, 0x47,
+ 0xDF, 0x4A, 0xA5, 0xD9, 0x2F, 0xE6, 0x25, 0xC8,
+ 0x1D, 0x43, 0x0A, 0xEA, 0xF9, 0xCC, 0xC7, 0x1F,
+ 0x8A, 0x2D, 0xD8, 0x95, 0x6B, 0x16, 0x30, 0x1D,
+ 0x80, 0x90, 0xA4, 0x23, 0x14, 0x59, 0xD1, 0x5A,
+ 0x00, 0x48, 0x8D, 0xF7, 0xEA, 0x29, 0x23, 0xDF,
+ 0x35, 0x26, 0x25, 0x22, 0x12, 0xC4, 0x4C, 0x09,
+ 0x69, 0xB8, 0xD6, 0x0C, 0x0E, 0x71, 0x90, 0x6C,
+ 0x42, 0x90, 0x02, 0x53, 0xC5, 0x5A, 0xEF, 0x42,
+ 0x66, 0x1D, 0xAF, 0x45, 0xD5, 0x31, 0xD7, 0x61,
+ 0x3A, 0xE6, 0x06, 0xFB, 0x83, 0x72, 0xAD, 0x82,
+ 0xE3, 0x6A, 0x7E, 0x03, 0x9B, 0x37, 0x77, 0xAF,
+ 0x8D, 0x63, 0x28, 0xC2, 0x8A, 0x5E, 0xC6, 0x3B,
+ 0x22, 0xA8, 0x94, 0xC0, 0x46, 0x2F, 0x73, 0xE7,
+ 0xBB, 0x72, 0x44, 0x85, 0x20, 0x1D, 0xD0, 0x6A,
+ 0x52, 0x8C, 0xB1, 0x8B, 0x96, 0x11, 0xEB, 0xFB,
+ 0xDD, 0xF5, 0x74, 0x49, 0x19, 0x93, 0xD3, 0x7F,
+ 0x6C, 0x27, 0x19, 0x54, 0xDD, 0x00, 0x0F, 0x95,
+ 0xF6, 0x14, 0x15, 0x87, 0x32, 0x54, 0xA5, 0x02,
+ 0xAD, 0x41, 0x55, 0x5E, 0xDD, 0x32, 0x62, 0x3B,
+ 0xFC, 0x71, 0xC1, 0x56, 0xC4, 0x6A, 0xFC, 0xD0,
+ 0xF9, 0x77, 0xDA, 0xC5, 0x20, 0x7D, 0xAC, 0xA8,
+ 0xEB, 0x8F, 0xBE, 0xF9, 0x4D, 0xE8, 0x6D, 0x9E,
+ 0x4C, 0x39, 0xB3, 0x15, 0x63, 0xCD, 0xF6, 0x46,
+ 0xEC, 0x3A, 0xD2, 0x89, 0xA9, 0xFA, 0x24, 0xB4,
+ 0x0E, 0x62, 0x6F, 0x9F, 0xF3, 0xF1, 0x3C, 0x61,
+ 0x57, 0xB9, 0x2C, 0xD4, 0x78, 0x4F, 0x76, 0xCF,
+ 0xFB, 0x6A, 0x51, 0xE8, 0x1E, 0x0A, 0x33, 0x69,
+ 0x16, 0xCD, 0xB7, 0x5C, 0xDF, 0x03, 0x62, 0x17,
+ 0x63, 0x37, 0x49, 0xC3, 0xB7, 0x68, 0x09, 0x9E,
+ 0x22, 0xD2, 0x20, 0x96, 0x37, 0x0D, 0x13, 0xA4,
+ 0x96, 0xB1, 0x8D, 0x0B, 0x12, 0x87, 0xEB, 0x57,
+ 0x25, 0x27, 0x08, 0xFC, 0x90, 0x5E, 0x33, 0x77,
+ 0x50, 0x63, 0xE1, 0x8C, 0xF4, 0x0C, 0x80, 0x89,
+ 0x76, 0x63, 0x70, 0x0A, 0x61, 0x59, 0x90, 0x1F,
+ 0xC9, 0x47, 0xBA, 0x12, 0x7B, 0xB2, 0x7A, 0x44,
+ 0xC3, 0x3D, 0xD0, 0x38, 0xF1, 0x7F, 0x02, 0x92
+ };
+ static unsigned char label[] = {
+ 0xA5, 0xDE, 0x2A, 0x0A, 0xF0, 0xDA, 0x59, 0x04,
+ 0xCC, 0xFF, 0x50, 0xD3, 0xA5, 0xD2, 0xDE, 0xA3,
+ 0x33, 0xC0, 0x27, 0xED, 0xDC, 0x6A, 0x54, 0x54,
+ 0x95, 0x78, 0x74, 0x0D, 0xE7, 0xB7, 0x92, 0xD6,
+ 0x64, 0xD5, 0xFB, 0x1F, 0x0F, 0x87, 0xFD, 0x65,
+ 0x79, 0x8B, 0x81, 0x83, 0x95, 0x40, 0x7A, 0x19,
+ 0x8D, 0xCA, 0xE0, 0x4A, 0x93, 0xA8
+ };
+ static unsigned char output[] = {
+ 0xB5, 0x61, 0xE3, 0x7D, 0x06, 0xD5, 0x34, 0x80,
+ 0x74, 0x61, 0x16, 0x08, 0x6F, 0x89, 0x6F, 0xB1,
+ 0x43, 0xAF, 0x61, 0x28, 0x93, 0xD8, 0xDF, 0xF6,
+ 0xB6, 0x23, 0x43, 0x68, 0xE4, 0x84, 0xF3, 0xED,
+ 0x50, 0xB6, 0x81, 0x6D, 0x50, 0xF4, 0xAF, 0xF2,
+ 0xA5, 0x50, 0x7E, 0x25, 0xBF, 0x05, 0xBE, 0xE7,
+ 0x07, 0xB0, 0x95, 0xC3, 0x04, 0x38, 0xB4, 0xF9,
+ 0xC1, 0x1E, 0x96, 0x08, 0xF4, 0xC9, 0x05, 0x54,
+ 0x4A, 0xB6, 0x81, 0x92, 0x5B, 0x34, 0x8A, 0x45,
+ 0xDD, 0x7D, 0x98, 0x51, 0x1F, 0xD9, 0x90, 0x23,
+ 0x59, 0x97, 0xA2, 0x4E, 0x43, 0x49, 0xEB, 0x4E,
+ 0x86, 0xEC, 0x20, 0x3C, 0x31, 0xFF, 0x49, 0x55,
+ 0x49, 0xF5, 0xF5, 0x16, 0x79, 0xD9, 0x1C, 0x8E,
+ 0x6E, 0xB3, 0x1C, 0xAF, 0xC8, 0xAB, 0x3A, 0x5A,
+ 0xCE, 0xB1, 0xBD, 0x59, 0x69, 0xEE, 0xC0, 0x28,
+ 0x3E, 0x94, 0xD2, 0xCC, 0x91, 0x93, 0x73, 0x6A,
+ 0xD6, 0xB6, 0xC1, 0x42, 0x97, 0xB1, 0x13, 0xCF,
+ 0xF9, 0x55, 0x35, 0x50, 0xFC, 0x86, 0x75, 0x98,
+ 0x9F, 0xFC, 0x96, 0xB1, 0x43, 0x41, 0x8F, 0xFC,
+ 0x31, 0x09, 0x3B, 0x35, 0x22, 0x7B, 0x01, 0x96,
+ 0xA7, 0xF0, 0x78, 0x7B, 0x57, 0x00, 0xF2, 0xE5,
+ 0x92, 0x36, 0xCE, 0x64, 0xFD, 0x65, 0x09, 0xD8,
+ 0xBC, 0x5C, 0x82, 0x5C, 0x4C, 0x62, 0x5B, 0xCE,
+ 0x09, 0xB6, 0xCF, 0x4D, 0xAD, 0x8E, 0xDD, 0x96,
+ 0xB0, 0xCA, 0x52, 0xC1, 0xF4, 0x17, 0x0E, 0x2D,
+ 0x4E, 0xC3, 0xF9, 0x89, 0x1A, 0x24, 0x3D, 0x01,
+ 0xC8, 0x05, 0xBF, 0x7D, 0x2A, 0x46, 0xCD, 0x9A,
+ 0x66, 0xEE, 0x05, 0x78, 0x88, 0x2A, 0xEF, 0x37,
+ 0x9E, 0x72, 0x55, 0xDA, 0x82, 0x7A, 0x9B, 0xE8,
+ 0xF7, 0xA6, 0x74, 0xB8, 0x74, 0x39, 0x03, 0xE8,
+ 0xB9, 0x1F, 0x97, 0x78, 0xB9, 0xD9, 0x37, 0x16,
+ 0xFD, 0x2F, 0x31, 0xDE, 0xCC, 0x06, 0xD6, 0x5A,
+ 0xEB, 0xD1, 0xBB, 0x84, 0x30, 0x16, 0x81, 0xB0,
+ 0x7E, 0x04, 0x8C, 0x06, 0x67, 0xD1, 0x8A, 0x07,
+ 0x33, 0x76, 0x42, 0x8E, 0x87, 0xAB, 0x90, 0x6F,
+ 0x08, 0xED, 0x8D, 0xE8, 0xD0, 0x20, 0x00, 0x7E,
+ 0x3C, 0x4D, 0xA4, 0x40, 0x37, 0x13, 0x0F, 0x00,
+ 0x0C, 0xB7, 0x26, 0x03, 0x93, 0xD0, 0xBB, 0x08,
+ 0xD3, 0xCC, 0xA9, 0x28, 0xC2
+ };
+ unsigned char result[sizeof(output)] = { 0 };
+
+ *p++ = OSSL_PARAM_construct_utf8_string(OSSL_KDF_PARAM_MAC, mac, 0);
+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY,
+ input_key, sizeof(input_key));
+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_INFO,
+ context, sizeof(context));
+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SALT,
+ label, sizeof(label));
+ *p = OSSL_PARAM_construct_end();
+
+ kctx = get_kdfbyname("KBKDF");
+ ret = TEST_ptr(kctx)
+ && TEST_int_gt(EVP_KDF_derive(kctx, result, sizeof(result), params), 0)
+ && TEST_mem_eq(result, sizeof(result), output, sizeof(output));
+
+ EVP_KDF_CTX_free(kctx);
+ return ret;
+}
+
static int test_kdf_ss_hmac(void)
{
int ret;
@@ -1667,6 +1818,8 @@ int setup_tests(void)
#if !defined(OPENSSL_NO_CMAC)
ADD_TEST(test_kdf_kbkdf_fixedinfo);
#endif
+ if (fips_provider_version_ge(NULL, 3, 1, 0))
+ ADD_TEST(test_kdf_kbkdf_kmac);
ADD_TEST(test_kdf_get_kdf);
ADD_TEST(test_kdf_tls1_prf);
ADD_TEST(test_kdf_tls1_prf_invalid_digest);
diff --git a/test/recipes/30-test_evp.t b/test/recipes/30-test_evp.t
index 0116ac7173..9d7040ced2 100644
--- a/test/recipes/30-test_evp.t
+++ b/test/recipes/30-test_evp.t
@@ -45,6 +45,7 @@ my @files = qw(
evpciph_des3_common.txt
evpkdf_hkdf.txt
evpkdf_kbkdf_counter.txt
+ evpkdf_kbkdf_kmac.txt
evpkdf_pbkdf1.txt
evpkdf_pbkdf2.txt
evpkdf_ss.txt
diff --git a/test/recipes/30-test_evp_data/evpkdf_kbkdf_kmac.txt b/test/recipes/30-test_evp_data/evpkdf_kbkdf_kmac.txt
new file mode 100644
index 0000000000..d0ce058f9b
--- /dev/null
+++ b/test/recipes/30-test_evp_data/evpkdf_kbkdf_kmac.txt
@@ -0,0 +1,917 @@
+#
+# Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
+#
+# Licensed under the Apache License 2.0 (the License). You may not use
+# this file except in compliance with the License. You can obtain a copy
+# in the file LICENSE in the source distribution or at
+# https://www.openssl.org/source/license.html
+
+# Tests start with one of these keywords
+# Cipher Decrypt Derive Digest Encoding KDF MAC PBE
+# PrivPubKeyPair Sign Verify VerifyRecover
+# and continue until a blank line. Lines starting with a pound sign are ignored.
+
+Title = KBKDF tests
+
+# Test vectors taken from a ACVP test data related to 108r1_kmac_req.json and 108r1_kmac_exp.json files.
+
+# 1
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexinfo = hexinfo:B1EE1EB226876E951AC3DF188C15B996D245D3F7FE9C271CFB1A0F5AB12795146A2664CD412C08D7083C86DF8375B3C0DC42FB2CFA6EF716BB60DE2F5F76D2A1A2628E40D595D9CD71CD66F5B3E37CDA496ED183C93877F9663A621BF97AA56E323AC2004FFD2FADC6C46472685E511E7BD8A904E504DB6562DE3D05439F92D63FCE530402F8B3F373B688A59DDAD7A33FA6BB8C50E53D853EC5F802F0A2644E6A024C3F0290C53764FAEA238A1A2A5BE12DA7A8EEFCD88C0D5595C72F17EE5DDA12BFC736B8D1E74FA98829724BDBD38C281ADF003E612ACA82F7D37814E1ED235C6E65EDB683FB0CA8E75026A20F05290DDB100512BA4878AD7EB9B3DE8F36F9AFCB815004E068381FF1BB87D9D7493CABB2084BDA9CEFDEBE6ACE1FBC1BFE636E29FEEB4BB1DB1527EBA1019907E37C9E75CFDDF3A523AEB7CD02E0F58F24C1F3548EBD53E7B27A8FFBF0FE4BA6ACC14BC4AEE0DCF1B8FDE652D2FD2C6B1017EAEDA845C82E404D55ABCEACA30A008ACB2E4C06A70EAE9C9A57EB943407265EA793094C3177EF97CB56EE8B8D5354D2E6070552CAB8ABF339D9BDB7C60BA344375CFFF7DDE791D18016BF5302E876580EB19FD84C5DBBA78BE634C2496FAE8AA9F17404AB638486DF52B0855F37DA6D9C062774954D35AB61AB5A616D7123309C1E8ADD56135F3626342581091C52E648A2346CA04BA834CECA170B99ABBB
+Ctrl.hexsalt = hexsalt:49F487EB1C0CD23551994F14AA5AC304113EEAB7677998B18290D396E503D0
+Ctrl.hexkey = hexkey:05D4B9A2B11D230FD173C8C03E81037678B6F30C2977F7EA3FD0A70066E4D2FEE673A7857F9408D954CBAC648B8A78DBCE30FBDD97912EAC593937B9F778DA7ED8534AB75DD2A674948B9E57245124768A9E784062AB51312A045826089C64F322D0B6AF01027A46715E89E9C358B1B15F40565C6BFD4E8E034BB9D81918D21D7461B0D50383B7E0FAE33EB139547DE4DC713EDBB9D854D3A6BA33B8E3752AB010C23D403C8D239E1B1034BFD1F44836049D4D43C8E3E0B1A1ED632622D2F02FA30FA6828B81812AB407BE998AF5C009E0558BD3A5CDC0B645C9C1BEB8D8A5DAAABFB591FE298C8F70F3108899257A62AB1BFEC8AD9AEF58A1A5AB1710F21DC59058BF05586C24DF1E386E9525615BF1E0D1B0D59D363269C50DFD2309AAC8DF8836EAF5165B345CF19CFEE003B5669FC8B5C1D8D1A6FC7A4ED6618CC8167C1C19714A8B0024A6A1AA827C99B1813F269AC63986C6E151D3C2EB1ABDFDDEDE6D36AF6143DB0065023B88B92279BE6568935E6BA783B2CC7AB5268C6626E22A64A4F65716E9D384066DBC38935B06F94E
+Output = E9B6BE42A65132094E1AF7CB3C022D450D578AD88C033D9B7B5F90AE6E31CF9271152E2E2104F8C6A4AF5641A354227D6492AED8B906CE623F329EA9682EA512AF128209BC7F5FB9B8C0CBA2BEE44D0F1CA71D0AD088E3B95F1153FF7F249BC7BFA0D320A3762DBE2E041AB89FBB8CED0EDFB8D04F03F8F3436DB8CA645B3D0A6D6C88046537889B670E7C3AA7512499AD0797471CB953BB34AF1EBD9E60D129F22D1E8C0519378797A44DC3C2FFB78FCA40926ECF38CF4CC42EA3B51CD62906B31EAEDD0CA4852A86F71407816599C1A36599E451298CA0E1E48C6E9E10D47142D8494914A91619DA99DC0AD2CD6082302AD75681EB39AA4DBB6F8C37F6AEE7815BCBC077A11BD32A338E42D92A628D839E049C961E13BBC674C2CD7F98C3800A13A71C9CA854B77640713F20B5412744E796E9765F3DD8BBA8ED1514541D3A277C8A24DE973C13306C2F6DE1228E3A82C64A375AC60D2D10B7661D01810C218A485E2490B84CF6A979EFCE426AA1DF7D639F4164C12128B4821D3DE9E17843DEA35600E288CAB66A28A976EBECD0F2FCFFF9FA330E3FBDA4C317B3106AB11CFF43DC2782D64E8AE7F7E76F3F7BF721B48B57D2AE183E96978A46AA0F58E6AE0A8C5108C560FDFEBA1F633B50ECF6357FE2994323849116600780B54771EEF88E6ECBE17BAC800E52CCC0445E96AA57D3F8D979ECC4BF20A4170F4E8A55AA57
+
+# 2
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:6483EEED1148E7E4A75962A21BC7B5758673DB33117CE428BF7967B3FC398A6FEB759DB297B9D5139C33910C95984C8E128695952ABCB1013585A7E65B84183866F73A6856C8FC1C0805F0C37E1AAE6660C3371471F06726DDF37B93D6DE198DF70F2743FEAC514A9B078691E38FF5B0187DC574110F488D3A3914A81397238F97D35373CBC6E425374924BA7EA160F29B
+Ctrl.hexinfo = hexinfo:9AA4DFDAC1AA8A2537CFE929C88E7BC823B100C87601DBFE3893DDDA1D8012BD221A5F3E74B343E8D5A680D04CBA7979290D103249F393F9E3538E059260CBB7A036E34107A4D533E349BB0AFABF51C698703AE837B2F3055C66E24AE7273191B17A8F9D8012E964F647E53DF8F05FC69D762CC4F17C3230D36454F008CC7BC886B4FB5A85EF3DC5342C6569E3C76AB157EB1663F0B846ACD5158DBDD71E905CB1C80463A1B7B1B4DA1C7D3829084560222B0F99282D908B189C1136A317E1B1648E7129288CDC66843E9181435E49E74C30D5B9D0F5EB23F12DEF7E1D35F26B9DC09672EF9191F7E4DF8E135182B8081B2F6B96837F72FB0161BAB983C1451252E303FC666416B7C7583843F1EC85ACE7733F6347454FA0BDFDD60649584F1D2280FFD62E9F7C5A93B3DBD22030F9D8680412D3DE689352BA319BE2BEAA6BA22A5973EBC4EDB0F9461DCCDA9709D259E095B0B4FB7976966BC4C4DE99C2785F8E73DBF289DA6D18B90D4C54FEFE167E1035A53609F916054CFCC632066A079372CAD9AD87E28E86CCB9AE117FC29231F6CA49A056EA2A682163D517613AD2681FCB1791300C4859D5FC21336237682114276CD8D2265F8A5C0ABAD03C
+Ctrl.hexsalt = hexsalt:3A2B2DDF0024DC4F01EE8229AD34921D5F4FCBE4FB991463CDD87C5D7ECC2315315D59742A65BE402FCD0F88DB0F1A28232B9886F6D4CA93A05845BF650C1D11775D38C85CB549F8D5C2B8C62CB4BB1297E2699BDE9A736925B52A735D9402E8943C3D9721B20B8DC77721693DF049CACCA25368F4B14EB5F55A7A6742106FF62BF6B7767F87B5EB4A5E4C2C4F68C4A01D6D84CD8A2EDF4BB3BD1FD79D55EC13A471D2019067375070DE96D4FD0172143118BD2E231367FEF847DDB7D826C9E1324A2EC27DF5B8DB9CA7E1F22CD7939175F7FD66371F5DD23350F74842D3F852D1C3AC9092E70C2F7EF44D81E69B4EF090208BD079
+Output = 56909081282D0F4618FF119D21EBEF78CC63407FBF53EAB96691F440663D33C5A8473ECF170548943940FE90317BDF69283F7F3B0DCD67A0C75926B7DD2F2057CC830D6BA089C6FC73E800E26BF38F19340ECA308C8E
+
+# 3
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:B12B3B521EDA2F18C177CE97820BDDBAE3E4316E8F92000375CF8F328F00D3FD440114435E1C53ECB558E77D8D0B7A94E2BC3EB373536EC56E9A6F71C6E571A8F55BA2FCA0BF762198A4C2FD586E9EE440561701A9C859E7FEB403D53DEB9177563FEC2BEFBBEBF9BDE77CCC3B6D7A7170AD5D585CC7E7E28792B88BB934081471FD6AD2E00E919EAE73C891AAE17AB640BC0A46000274C112CD3A81599A6D867827ADB523BB2D7BF35D5BD188FAAFC214122526BA813C1FB38E8E0E8985FC0944518B5AA38EC866E3C5C83C22274FA0DBC40756A4B2D703815144EC211140BC9A7DF8D89A8A861B68CAD89285BE70F77BAF1FC94197873D2A26E52AA93130BC574DFB921FCB4FFB8E48ED2BEF0229677BEE1E51CD9809960F18A4EA86156456F5C895
+Ctrl.hexinfo = hexinfo:5E81BB39BD70A08E09064F30CF217CAF1BA7083BA5BA6F422B4C29B0763BB06EE462E3FB4E18547FF8E94FCCF26C8B729E83A513E3E83C427D095212EF987858D3419D5A931B33C0BAEC24E2FDEC4C7D5E1949EF9484AF81BC771682D80F6B1CCC4CB83EE9EA8BE7733997936AF9B9938C2B215BB545A48C8087441F02A6F9527F8EDCB67FD8A88074FE343910300801961929D262EBABA8023817926AFFE6A773A7C373FA4FADB5FD834661EDA7C49719AF1FE94E6CFA4301D6062D8DA604BB6022E1D5C722B0B502773F5C2FAD7F0966A4386FBB46C9547D8A95AB05AF2C3DE0760E6C
+Ctrl.hexsalt = hexsalt:90D88EA2B1449337CB5CED87F18FB910E732A91FB392C27E9EFDAD76BD43945DAF413E48ED0C69627504DA
+Output = FE911C6D527B1546875534F2F95C9CDFF45D833118394EDC116F1C26CF6A6ED4E1172FA4CAB7ECF617E29867C91CC5E69222168768DF89908257165360C6B5AE06D8464E9734FC490E5923B41D3C374A9D0B6434201BF3B385381FE3A33262D58ABA6B9A5AAE4069944FEDFBB154522A219C79437097108A94C2110166DFA6EE34DFC24363BE053E0C4B38EF7F468A312FF8AE507EC8E34B1350106DDB01234C8DF28DCC58A10B7ECF1E666CE767CF33830C4C1111AE1D5CCE1FBC00BEE7E1BA6B58040558
+
+# 4
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:5A99C04B55A533108077D31AEF79CC1CF062890FD38B11BB255A8891511956739537BB5A2C8B6EC70D78AA824913881C666B81361E3EB415F4EDD7C46C40882AFA1C2E779633887198A84D87A105A8FD1FF5D2D944508FC3AF518DB5FD076F5A004B88F211A7113945C586AE01646781A2D5CBDB9B8876820E3F1EA76CCE371F564FEC08874BD2EAD06E62BAD29E02CEF9FA833426C5A9EC540F3DE391E2A7A880594C0332617B250AF1A14575CA914B22B08A1476B778A3521E690370DCDC72B3D78564EA257E830EF9EC9E68FC0ABE12ADC06E555B7F05BD3629B1E58A1EF6900A427F88A3F9E21EDF6FF6BD35D97CCF4F8D8FD36D7DF6570D08E3089D637DEFA9D44278DA0D9F3D93DBD251D713C51A314E48070EA0654DBB5995433676FAB1C0CDD0FBF4AD1E97949E74D3CAB1B1A34B1A
+Ctrl.hexinfo = hexinfo:37AD8DFA3D7B642917A628C4E469626C93FB85C332B6CF4BFCB75681E69018594E9B68788000ACF3D0274A486805AD84AD9FC8D90BCF43A0250DFBE96E355162EF90CA92ED100B5BD590927557F559F7A0C5B638F208E9182E56898B5C8184639DA23EC1FD4E4964D7BBE2F5E871F7AF99576AF398EE042D51C8E03774E317B7867AE64EA4F34F0AB84E27F7363BE00E8EFD6F73380ADD83F0E2B44D5901B2FFB21831C97F85AC09CBA2FD7672F5100615393927E2CACFB74366D451FC1AADB5C499ED4642F648C725513D07C221E9C534B16706B77799A05E73BFC84DD25B08AABF975CBA45B77D40F09F7B6A2D2B032E2123572358755CF6A88BFA7388B8C4CDA735ED2418E758088B5E2CD48F48EA6D3350059628B0E0ADBC74A29DC0089F1C730BB21899367E27BA80D33822196B4A29BA7C27D438D85A4E865B970E12895E974EEDFA921428AF77DACE010A2E34180BB0B04A67366B6105452CC1E6F6018882DE66563177FAD904E35D4099DEA07A48418D109B0B3DFDA51F718DED2D93D51A67E0ABA87C
+Ctrl.hexsalt = hexsalt:98C59B4911CD7EA226ABDF6B779DB0500E64C74FD8FFE44A6F489C7FC73FEAF4878B648C8E3B1F0BC53E0C63C54A6FCDE385A2E97EFC24FD512A8530D943E1330EA5B5E66B93D5B14E454BFCFD3674F47875C3A872F9993D72D02064EC6D51103B099A3A3FE743A72E14E3173A96CE728E729E2A541C3DA9DFF5CEAF3B03C6325D8593CBA8036716A018C5AFA2783240805B68B39FAE96CED4433DA6FEE4C0F3C486906CD74ECEF7253ED9EBEB12EC1C9BCD93FBF78AB8EDF26A1977FA8C547904B0C18E95CE0E1357603D589C8939EEBA3832535DC4A48615253BE5612557639675752400A655CE20F1BF9B10CD132E507B9C52EFEAEF79D4C235EA9D2E0417FB4E25AFB88969568A223E4C3D78484A10D814663C53B1BB242DAD6AFDE0F15E3DFD145918230765E2D9A5A1A613A7822C32CB8E8D42140FA73ED3BFEF4C2F30C3E560E4FB747DDB66A2A9516359F9F8EC9CB62D11B5449EE20FCD95FF6D078B2A08FAA00C931FE35FDC43D2E0F71F75D3D32DF7D75A39BE866C781A58DDB8AA748A4882CECDCB19948E874A73CA0A5B2A2573B8177C16728BC96ED7ADB371E726B79CEB52499B478B4473EDCCC588F44325CEC9C4DF6111769ACB6A14565E077C530FFCBF4E80F8EF3797798D8C0D5734832D0BBBED3B36B35B3AD3418B7F22BE017ADA1CBC78713189B7FF15146CB06E0DF594781C09F62E2CB837C0B281A7
+Output = EF3623D3661B1305F611E5FB0E202C19A3CCB8EE69EA4ABAEE0C58C9B2952EF8DD111B257276303A234A6F96C8C124C7DF6FF4148309FEFD57E839D10E56C6FF790D41F0A7591252435C0C66987CC13A96FFF21FAE24AF1D94360A912BCB0D77C760E80146AEEDBBD407B21F775F734E11FA01565A81FE8FA7E6EE0A812115970418481C4085AAE03627B828B5FC5EBCA7AA57BA2E896A2794D715C72BAE75CFBFBEAB373AA451296C86E2992460A3E1F22DAAA111255747A401A95B28C14300DD6D662422E8DA31D81582B48005
+
+# 5
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:20093092B8A5044151BDD21B0ABE64B2AD353699485766C32C895D3BD6F1CD7B54C3CBA4DF356DB654C570BA561B566EF8FB3F92643026ECAE0FC7265B5806C2772936612C5CADECC89BCA6E4314D3F4AFB994DDB444A48B25F7018C2235511E33B4CE2A1006278CD8F3D609BC4BE4AF9CEA5BAD773A774653466754E985E09FA486B927C46FDE0B660C182B8AF8D28C4CEA1202D5F5A5EDDC939AEE118E98F01E61028FD7309AAEEC31A31D2853D9EE3578E28276FF01A61691585E1ECB3C092A407E64E608052E6D8801D69CBC7F34F2B9BA4E97C2319DC5E897DC5E0737EE073FD9A788CBA7F0C67A45A79CC68FAD6DB76656B9434903E8072F8DF8CBA8B22F9E9D2C69EDEB580F7492E1C619A5F57690A807B9678CA46C43947424B764585B0BC041BC063E16BE20BE46E8B5477D7B53455C2404BEF0DF5932A703AA78CEBA7A970E962049BCECCD0B78586CFD9EEB981E9D851ED3F21A576206C22AE3CA9816B2E65433159AF1CA7BF8F6D848425FF4D2E67411E56D60EB42ACBB3A
+Ctrl.hexinfo = hexinfo:2F567340D8405523FDB1BA0B1B3D229290904F92EECF66A5680C7B5E979F28C733FD96E2F6FF54FC588490AEB540A2A914C9030A812549C538693F2C3DADA88D5F704CBDE6365C939AD0B837949F0FA839B90C3F2D883780BB7C185392EECD10BC244DC5E9DB62
+Ctrl.hexsalt = hexsalt:8AA38C201C238B1080B866D460B3AAB62F491DDFC374132DE2D28EC910E99B012C3C3316CA202D0F4C4ADA936F382C9161D7CF314DBA57BEB957414A32D85A5B4CD50C8C450C8DFF7A6A991B32CD84241DC0A16B45E7D739C97823581FA879E6660D61F45C49520342151824F32137DDAF61F2ACBEC169ADC969D6970FD014938F8D3C69AA33850F6C602CAE95A1A29F103228343B0973A2770C27E259BF636FC4ADC596C0470FD7952DB53263E1BAF14B
+Output = A46BF10479386AB4BA8DEFD2862CB58407120334F3298F7FEADC08995BC867B1ABDFE4373A0B1775467145E6C4A95D21622369CE179EBFFE02887CB10D3547AA3F54B5AB7FB0CF75ECB2D49825C3B2BF2159AAF59BEB1D00A77F07E8760F9B105A6564B3ED348C
+
+# 6
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:9F09D071B2204661C9922507C174730DB0515EF00A2E47FB729A043B68824826B452F3746D7A42930456A6606EBA22F564FDA7A3DDDCC7937D3DEBF5B34AB770F294C1E369D80A57F43BCCD1C2C4395D8FB88620F23BBB76365D4C78D137CFD0276825A818B2ADEB1D9ADE9852FDF0C9B6BD2C831BDFD9183DDA9616C328F2D2D41FCFB28EEF1BBC3BA1FFCB53F851CC740FA0C409A4EFF71BB398336EE88D1D663191A4CA64D9568135270AD6F4CBD50E05FF5045580466C3991668469CF262ACD6C01FCE5FD27360E61D0E0AB390311CDED0604B3AF4265060039CD73A3D9E4431BE6625E7B3DE664B8A397F55C6C736EEA2833B36946B3DE607823E38BFEB209C63D07AC620BE610B97E0A5310C57E241D596255D3BA702382D45A615EAFD2B306B8CADA8080B85C8E176DD97A36A2CAD972836EA1B8B29107983D1A58642827577489B39057A6A0B8141E964B87BBBFFEB2D586C72A37807C5B22373160609CADB96135E6917DAF095A88D9493EEC39CF6E8
+Ctrl.hexinfo = hexinfo:AE5FC2570FCF1828B71484C3C5A40889FBD97543BCA009D55F16892B0AAE8CC3CC728303827F1E207A5243B31E3FB66C6C4D25CCE51B94326344D72DF0927AFBC8A2037C1175D620A65A5E50D26C1A374479BE85AA5466D0EE9479599FC57BD8A216203876FBE62BD2CF214BEB82C7DC9D76F36B6B1D11E8DB7A77F7A0A9EFC7A64AD29949B7AD38E52AA2BB3C414A658C1A028E8D212375AF69F02433CC56748A5D8D36E853F6A005818D8F92C152CC9FAAC3F71E7A253381BBED3F58B3B973B9347D8E0DEA0F50112109B355A4309DA948D8EC3F10A908EC9B21F8A407C10F34E233C25EFB1478960307C78212CEA2B392471AC2ED56EDF6DC8A2262A65418E88BC62447E32FF1629BDA95FEA0E477BD849EF820AA9AFA067BA68EED77137099056766898C26528A68C45DE85D689D6A779A7617ED1E50F250B06D35BA5927F9C2F3673D4EEF57FAB6E63EFB8D4AB7E8DB48469F0C338C6CA5B579E4210870A7C0EA32145178B2BE39834A798AF5A8C9948F3D2B01E8E3F507B8B501AD917E005FC9F135134C7719734887F02894255BB62775
+Ctrl.hexsalt = hexsalt:59A34209CF46AF79130F31EEEA20300375616A08FD5F4E43452E79038E57886A557ECF6A58D6CEFBADDF76C6D0EC9669984C511DDEC7AD280D9ADF9D425D598AD601DA808AC94FC77E49CFAB885CDE25CCBB61E8E15E6B30FF5933A79D4D447D8BFE22AF116225F934337B4AF7AD8241427DEB87DAE488F9B0ECE3AFC284FAFA94C7580A9D21A2B7433BCD6A571C1CE209F62C9848D944E309C0D0B41A6834019DD367138F8B376F1533601EC892B981A0FD18F78698CEFBDAE895D590B8EBA35A95FC119DBCE021EEB23016D41ECC9E96616C050C8E979AE404D06FAD2621464A343D943150E20C0324861D33B2FFAB5843FBB2FE35D7972A2D6180C8E34674CF64C9D3CA24E291136B3BE326C1C846849953F39AF1AA130807B913E2F6773E08ACDEFBF88444AB3696A3A948DF9FE340437640224F21
+Output = 33C5F236C358A4FC254C5F46C24A
+
+# 7
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:443C379A0CC125D4BA88C66DC3D84C53E07159785331F4BAE7209D
+Ctrl.hexinfo = hexinfo:B438A1768C9E052897A6CD14D9962F2BC52A476C187F71778E54C267BF9EF90D2BB95DE8E434370EF17525F8B1FF8805C88D6F22E59795112086AAC4ADF79EBC9F7F14619CF8B8354D2C04AD9192FD38186F5E5D5A998D3F1AFAE09D6A853BF522B78AAF38A17527EACABC72D6B00B01231449E9ECC0732A2F4C02121FA300099EDB5D9D93214D62594B1ECEC4BC8C1D0CFF416A8FD9D080541ED08504CE720999802E63CD1800647ED8C2BD40C84800D206E192AC998ACC3E2BB59385CB3B1B095F970DBC5E24ED91ED0419A60FAB0AB156513FEA7C68308EEBC2F206925283F269CCECD3FA562346CC0E15CA18B8011EBC25D84F2E85D64C6A0813826BBAA003CF325E10CAC6D72EA06E7052B49B96FE455DC032555224C8DDB69AD285C4B43C60C966AEB6467B7C582EA1534DB30304DA984720F600CD35E1155645432F5D42C1BD05B7A070978C7DB733228805DD33FCDD02E20775FA6681061F4DD3F9338B5129582AE700E2DC7B4E95F1674E3C00622A3F77BBAE6B19E8ECB7834D13DB13A89A71C4063F5D3C54BD91728FE35239896C60AE0DDC25C2ED5F6A
+Ctrl.hexsalt = hexsalt:54FBED7FE80780D781CBF01F93A4A452CE5EF4026F013CCB38D618C723619607533F16E0C7B8B86E0CC7845DA6873A70344360CDD128D76BDB
+Output = 580EEBBB85CE1D44EFC40739D79958FFFB2ED0D08EBB80B179B07975EB5E09D10DBCB744F7A43479F6CBE060569479633902D66C53784368969E905A4267D9512BB16FE93D039CBCE7546AC9CC6C4A61E4508606C6F788EF2AF4358D79BE09D1F75AA40306E5C1D9C15731805C2D2E4B2C68
+
+# 8
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:139DD1CF23F4A1E906FEA79CF257351C416396B6FEF8B6D3B10E88743EDC94F34D12CE9200662665147711B8F39D2035935B2561B626AEE12FD2354A5AB66118B79B39128DC97767C44DDCACDAE5A5E758E22A9FF54B8E86255B5B78CDEBB2F124EB9D99847918BEFB1AAC45ADD33D8B4A03350CA785035434BE8CA5877381719289801770F0EA8EEFD225F8A0C345B200E2EB4F5D457BA4030E896F08079020134D09F2853E6D3552925223290663BE2E95AC189395BF9B7C0655DE263D2141F64EFF03827347ADFA7FE41CE0F7AA59ECB0AD2A48866F13518B65CDEC68B536AF331AD45F4F6EDBBFF59E03A81027E1D34147DB74D07410235F53F14F06A399828C2C08D97E9B338B21FABD979272A47CB4D48F0237C3DB3BF452FB83FAFDBAB336951BB5A396A7D1491337ACAF05755AD7EB4CC156D017A7E1AB6F266C7D9E59A76C9C07CD7B680095E6D24F6BBDE76378670099566120D39DE8310C973DB81C62A3699668EDC2D784A22376A3B59012B8076325
+Ctrl.hexinfo = hexinfo:5D59863E7BADA4CC9FC831EB110AD29CABBDE18A9DB1263BCFFB08803329C358BA1367A7B98FCA3786605CB7E648D814378A6E8EE5E799C50040CD45E52B2CFB7F1733E91E09271A4CC7723677277B9C40EDAB6025436FEEFC86B0E0A916FFF996D3DE62E41801E2EB93D255D6954CB120765CE424C3CF5D79180220EB12AD1F1C48CCC3D89B
+Ctrl.hexsalt = hexsalt:5E3F65459EF8E5D989A299C6821526F9DCB17EB858BBAF2C00F34E10D0F70E7980D2F615A218017BABB14CACA690280DC604B6A2C992DD5554085EA073908AD64E4056AA22EDFD9354484A361004345E93C2A05BCD5DBAD77D19029FAB55C4F5E75DB0DBEEBBCF665F8400846A5A6E57A709F538867234FF1B4566F2535C1754CCB4907F5BDB6789FA26CE015CD51CE30C56FCC2AA90AA78DD0BB65645CA8D2D86
+Output = 0F51ADECEA6BCA7E771D949F5530517BEC25F8CE367064CF4E51C098024A666CAABC5E56254EA99A26D298D95491F9CA9791A82EB691ECFCE2CAA4C95C0F15C7630B9BB0EC1E03C2B73948DFA2C4EDEC4404B3B5AC4B9BF43A4DE57EF92AF7831318CEBF58B2D3037F7B51A92F9EE403FF3C08CD7EAB6D005D73BD40DC80BB660B8FDC10975EB53261D38F954859C145D0D0B58915C5D6AD128CE1BA443F5748B4102B3BF18497D24A8D56AB9D1395BC0A965EF681247699CC9293726D4447D712B8E2467988813FE90E1C721258C7E9B33D907BE36CF9594D5CCC9A62D6B3DE9B6775FA49341C5BE737CA13EC2954A89E0BCD2BBB1C25E14EF590F471D0C0759A1CC39F0B7653BF54D9ED72A5EEF01C2EF7B7899B2DEF2CBDA091A0359672F0D4397A093E1DC5BB45EB927AD17614B771F38C3AA9E93903D6AB260785A3578BEE6E086F1C30AEF663B281ECC13D65F59CC5C6312668481BDED9664ADB8675FCD4D0621DB323B4704BB3F7DC25CF53EB0FCCD46DC71EE3BB0AD1FE911DEE8CA3F0AB9D3FEC679EE3CC55995726CC8A33583E3B2949
+
+# 9
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:F6FCAC8FA9462E5DF6F71945F52A2B58CC4D65DBD4A875FAED6F62102288BC85C3D891761C3D070D0766C1535337A094301B6BD04981E88773C9CDB15336C3B84A6C7C95BE5B74371DAE5CBD30
+Ctrl.hexinfo = hexinfo:85F299DC7162F18281B221DB2855F7DDA59C43E20CA0E91F699145F446700A131B8EB25FB5159455A33B346FD2EE2908A3B24F1458C1D738524EF106B895BEB521F3CA525D9A8FF4B09BA3E3D93B6E5A97FD8905262C07E6E110FA450A45F1471F0DAA4049C0052CB7764160A7B8484D94FB4BA9DCDDC3CC34131362C7476AF2FC4B9C22880256E2A766E2EAF83CF9F473C28C7437EE93BB3033429FA3AC939A603A9CA1ADBC0F207083976F99F30077B2B60F5BE1CB2C99EC49DE9823C6663FD67CDEF9B4ACAA821D6E4064877F050ECC66660AEB6A163F33504D583F2C8FB1E71EEF9F02CCDD19C0FBC5F80A5FE93AA11DC5B2784E5DC61BE1C591C56B7EE2664BC470BAA72C9118DE5849303220F8E213C3BD0F
+Ctrl.hexsalt = hexsalt:1904E08A7F3BC43D32645A8205108F27FCFE3EE862F38E92F6939EE4816035ACEA6070391C100C214232C29B44710E326BAFA1812136C5893EFC9B8C5D066FF5009EF31342FAD69D80601F287DCC8F911FFCEBF056354BDE73B334F2AE8C81615A3F68D3022D2E57A0F7B76C14393C72EE4A18DF67C9356872F6417151769537CC3361B93E7EDC38DB53BA8C9EBDD4B424856844C44E94BCF9A751DF660AAA5A84552AE8ED61F7578EDD2DFC852E0FC4D5A77CFBD1198DF61C4F1A36D56A15094F40BBAE82A95BA0813A5E5145B10B14DE274A7B14FA9B3F04AC9249017991ED2E73AD9143EEEC1F2390F66C5891A2AF991CB06758447CFDD2FE9C6EC97F3177A6B7E2E860A4308E8FA2C091F76D3DA01A5BC833F138A4105B0E36747C7BC1E322EEDA9631BD0B624FA1A0FC54D80C087219E98A625366814D13A56B0680302F9E14690476B0B904E62B8657BAF224007A3DF4ADAB60F88BF25046EBC2F18DD6F95AEE79D8864667C695EA5ADF58D294FF675D94572A8A8C8E428ABD17809AD18565B08C862368D7D14BD735ED86CE7D0D5D6C5CC3123CA9E6749D415E18B39ECBD7E0ADD5E0F26BC420A693D371012B83E9D5CA1E65A96613856C788F2DF878DFABA7EEB15166E3288AC16C784F2F53ED2C6E5690924972C692FF3CC31AF6858C1FE303C4EF58F23F655D68D76FF812C12F9385B38598C2AE6BDE0944A648
+Output = 0434F244E1B1350563DE4AA262A255C06FEB5B95FC1910BA40C920F905507447CCED10F18900A3A71105A5BAC17F62022DB2DE2FF7D18F75030B9F636C61DB7BFE4B01C5E1EFCBB413D2C80B9744296AA9988BAB7F2B59CC906083385EDB90AEA6404BCC13BB98C5DF5786EC3DD1E122748FF856BE1360CD1FB49B172E1FC4FB5E2C8E266D25516A428DB502CEE4C53AF3E0409876DE79AB345884366CE4AC08F87E1F44D92939
+
+# 10
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:AB612CE30D992542E201BD728A37070095592EAE063603F8E672938DB6FFDD29727E76C295097569566F2EE788D3B68C54505488EB6A312223C1ED82027BB210E8464541C45B51EAE11A19375827BAD3F596086910C66FB7BF3A1DE6F357836FA7870E43A6AC235DB9654E5B21F15C41A7E0D986EB5998F789EBEDE7B80A4F30753B28B56862B4CF1DF3C3A9BDF9A3AD22D6F14387F8AACF3D77A55A
+Ctrl.hexinfo = hexinfo:83865206B79DB2A0AF0A3B4547FA390399884CF89A45E42E3126C0C2F4039A77C7FF7A5619B14D2F469FCFA9928210F5D2593F2E95DA44FEDC6BB804CDF93F7FB3CEC757F00C5CD8B6E1D3DF43C199E92B8EBC33834E468F566A63758A03111A7E136B2C6C3B838E8DC27CDC6A9B683FE04208DF13BD931EFB3393749BE99A33BD3D7AAC017A2C336DCFF1166D41C3E9DEFE5F2537CF57F8BF6CA6986FF15E7ED9E91D2D85463E406740AE6BB6538BA2CC0265FA67741DDB6BFFF33FBA94741B3BA769F8E38FEC43F8C79955AAC2F8B3
+Ctrl.hexsalt = hexsalt:5AEF7321DD0DEC4D30873E6915E7B3F08CA21D613DE5911943A2E801392B2376C0A49B029721CE6E89378A96294A6D73CC0071F86A8E63F5F10A43AB7C7585BB1E68B4835B7FF1FE9A88EFA0DB8323864D6477BFE641DE7527F682881F69F779D7651A4DD1BBD843BF583A49038AEC7493621473EE5C2038B5863F33C2B156D4D1F32AC7F7B7E962D8651B077A93FC6629443A763DC86D022D1104BB1EB0A8DB5FB4DD00F116B9CDD8523C5B5F4E4AB9425DE36B8DB589AEF41CDDB084C2B514C17B56C44D3FC40DB0C72BC677611F0BC2897ED3C46957B5792B3FB62369940419B3BD7E590C43C131A8D5E46B02D934D2011A19C7CEC77EF9AFD19000F6B686AB97C95195F10CDCA346A28CE850654ABB40ACD9EF409CE304526F66E9E607D434BD35D14D95747EDB0A5A63B1CCD06916BB7608CAEA43E16816E70A70E8E7FDAA5458B9BA7C05324976C4332104F9EC5DE04ED0E3B2288D76EF4D53C8BDF5A03D7C68ABB82E49658B5ABAF377BAD0B569AFC86588247A120011E704E1918C03693CEDF2BA639B2545D7F55DC5299E5EF42EE455C15EDC2B6F220F54538F3C81B87F1C1518C4E34E048AC46450E93510653B941D1345
+Output = FC8D2E1E7A3DD423289D383005A8BA08E213B841D0DE31CBF16DB0FB6CE2EDC7814CF8D5C005739627BF1EC5394F3C498992F77CC15837AD4613A705172525BF52AFAC95E0A838F52D26BAA1E1B5D547EB37A6D2CD5175B1B4F926BD5BBD5C9D40D3E2532B1C229BA10AF200062AA01813A42AA7BFC49363DDF917DC71BBC00CBF76B571CCCCDCFEBE314D5C54AC46C6A6CED6CF10912DC526410EE3FF252DF60B892FC6E4DB1F40606C4C8EEF0CA7B2B22E198C3DAC5B7C7BBA2EC28481098996CD0E29034D31FB2AE8EDD96F48A5D201009D70B5E9327235A31EDF75F3DC12538D4D74A93678D6AF0D031BF57281EF03D9EB90E82C082E2FF382451BAA224FEF969BC5419ABDF5B34FA822A63A03349B1D114005D412B065C2D55E84158E4A43DA1A486A75E191F04787123EE60A1CC2EB9DD1CE86F02599071F7CFA04509C985B30EC14534210ABE02589FC168C213B78BCCCD81B109B4BDB20F83A802E64456012701802762F8F7C3C29E9E888BC1A14397315DA0A504715EDAE0BE2BA5F8CFBCD4F207953B48A9CFF0EF84B3B52FCBCFEDAA3276207FAB342BBDA7440387D6B8D8744973E709A5E85AABF6478E4268EC6AEEC30F7D7C78969E72F2BF2AC5E45C73A80C12FCDE030DD9D6D3F1C6F6550A8741E
+
+# 11
+FIPSversion = >=3.1.0
+KDF = KBKDF
+Ctrl.mac = mac:KMAC128
+Ctrl.hexkey = hexkey:CA2ABCD032EB6A6A222E340E5E4D9234BD0BDF3245B0CE800E3465DC0E9CD0656B21B9E8990765376B19094839A89C3E1B84B227FF503E841356D89722D6832B766EB6FA8BAEB97032DF828334E2D6E7CC88B391C847D3221C459753789817EE9C3D2A0F9068C6CF167B6FD3735AC9AAA9503039C52069A17E4763527DD0EBA2B2F6DEFD8C8038FDC278B232E951697F971423643AC9E57A3BB790C8668847C8AD5825DDDA60BE
+Ctrl.hexinfo = hexinfo:DCF9FDAA7C437B26FE329D8B8506172FC282DCBC36518D347C534BB6686A42CA1254454D5FF0227AA91D2B2C65712ECFDBC1BAE6A3851021475C9A9FBD2544295F02FDB3D6F3F17D6980424773D59017F208DBAC94A1CC0F081B41506D8BFAEB649E02F58820D8B76E4E887095183D88AD082AB710A8C861F885D4AEAA5FCCF1F0D75FB05E3D1F1DBFEC555C03C595DCCAECAF3A7CEAC2C34F6133A73E98A4C3AB8B352AF408755D42A7A2D36C17C22C2D12464F23777C260153B8D39A62C561BFC173C5F1C2EE113BD3B2F910C4170734CE0A03FA63851F5027ECE319B030F4A0B297831FF7FA371540B3A897CD4EEE37D284CB566614574593BDECF90452EE7B49C65EB24EDAB99960690EBBCAB20E14E6E86B9FAB3E67114AD2F9B194987F4F6E7249DB62D41F3E237695CD26A2178D6E809183A25DED93A2C1876E18DC10F637355DE13F7D95776B0EFC99D10AD3D140128EA48EB685CC538959F74C8B4C1F1066D8F973589FFC25203A2729411CFBB8D3F964FC215C0F2FD139DF7ABA97A63525DBEE068BA43A778AC5EAC5B49D8D69D3B2E4318144EB54DE8518921787EB0A00DCC6CF85CF6AB72AE6410DB1EEB4E9CBF601A6A2A611EBAA74D5F65B645ECCD29CB46986595FD45886D7933096C8B47B74F77554BEA7B4454D28E5A4C33E027A72A37AA2305DC36B55644A5A5739D35979B99967D83E7616569AE41C
+Ctrl.hexsalt = hexsalt:46DA8D3990CE081A3E169F18ECFCC6E07E73C1190CEBD5C0887273A60507BE8C48575C8FD7D16954FA62AB01467CC0EF25BC4459BBC299A36A640AFA23037CEA17E594ACECEB9DC3CD7DDCA58F4025936C96AA81F2D671DD03497B759436D1D7073A416B0F2C86CF3E362F2DA09DECE6D99E30F4DA84255950A4D973BB
+Output = 248A3707A6534E40E840B33E7B398EFBC1B2CF6EB616B5E3F27976