diff options
author | slontis <shane.lontis@oracle.com> | 2022-12-15 18:57:09 +1000 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2022-12-16 16:37:22 +0100 |
commit | a92a0097d07966c207ed78888e85b8a2a531acab (patch) | |
tree | 1348e373f721242ddbb47dab541567b295c5fd4c | |
parent | 47dec02433a95d45fc94c4dc097b3d5e0bb50f00 (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.pod | 6 | ||||
-rw-r--r-- | doc/man7/EVP_MAC-KMAC.pod | 3 | ||||
-rw-r--r-- | providers/implementations/kdfs/kbkdf.c | 61 | ||||
-rw-r--r-- | providers/implementations/macs/kmac_prov.c | 10 | ||||
-rw-r--r-- | test/evp_kdf_test.c | 153 | ||||
-rw-r--r-- | test/recipes/30-test_evp.t | 1 | ||||
-rw-r--r-- | test/recipes/30-test_evp_data/evpkdf_kbkdf_kmac.txt | 917 | ||||
-rw-r--r-- | test/recipes/30-test_evp_data/evpmac_common.txt | 2 |
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 |