Add default provider support for Keccak 224, 256, 384 and 512
authorUlrich Müller <uvm@google.com>
Mon, 13 Sep 2021 10:59:42 +0000 (12:59 +0200)
committerPauli <pauli@openssl.org>
Thu, 23 Sep 2021 02:07:57 +0000 (12:07 +1000)
Fixes issue openssl#13033

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/16594)

crypto/s390x_arch.h
doc/build.info
doc/man1/openssl.pod
doc/man7/EVP_MD-KECCAK.pod [new file with mode: 0644]
doc/man7/OSSL_PROVIDER-default.pod
doc/man7/provider-digest.pod
providers/defltprov.c
providers/implementations/digests/sha3_prov.c
providers/implementations/include/prov/implementations.h
providers/implementations/include/prov/names.h
test/recipes/30-test_evp_data/evpmd_sha.txt

index 78fcd73af07c040d94db990a63bf0400ca39b828..fa920d14da1a65667407fc1ec5995d16bf02bfa1 100644 (file)
@@ -122,6 +122,10 @@ extern struct OPENSSL_s390xcap_st OPENSSL_s390xcap_P;
 # define S390X_SHA3_256         33
 # define S390X_SHA3_384         34
 # define S390X_SHA3_512         35
+# define S390X_KECCAK_224       32
+# define S390X_KECCAK_256       33
+# define S390X_KECCAK_384       34
+# define S390X_KECCAK_512       35
 # define S390X_SHAKE_128        36
 # define S390X_SHAKE_256        37
 # define S390X_GHASH            65
index 542ddb8182653506a1c64be6c6b2ddd35b5f4fbc..fcf2c1cacf1125fd85dc55daf8a28626aa0fe405 100644 (file)
@@ -4199,6 +4199,10 @@ DEPEND[html/man7/EVP_MD-BLAKE2.html]=man7/EVP_MD-BLAKE2.pod
 GENERATE[html/man7/EVP_MD-BLAKE2.html]=man7/EVP_MD-BLAKE2.pod
 DEPEND[man/man7/EVP_MD-BLAKE2.7]=man7/EVP_MD-BLAKE2.pod
 GENERATE[man/man7/EVP_MD-BLAKE2.7]=man7/EVP_MD-BLAKE2.pod
+DEPEND[html/man7/EVP_MD-KECCAK.html]=man7/EVP_MD-KECCAK.pod
+GENERATE[html/man7/EVP_MD-KECCAK.html]=man7/EVP_MD-KECCAK.pod
+DEPEND[man/man7/EVP_MD-KECCAK.7]=man7/EVP_MD-KECCAK.pod
+GENERATE[man/man7/EVP_MD-KECCAK.7]=man7/EVP_MD-KECCAK.pod
 DEPEND[html/man7/EVP_MD-MD2.html]=man7/EVP_MD-MD2.pod
 GENERATE[html/man7/EVP_MD-MD2.html]=man7/EVP_MD-MD2.pod
 DEPEND[man/man7/EVP_MD-MD2.7]=man7/EVP_MD-MD2.pod
@@ -4579,6 +4583,7 @@ html/man7/EVP_MAC-KMAC.html \
 html/man7/EVP_MAC-Poly1305.html \
 html/man7/EVP_MAC-Siphash.html \
 html/man7/EVP_MD-BLAKE2.html \
+html/man7/EVP_MD-KECCAK.html \
 html/man7/EVP_MD-MD2.html \
 html/man7/EVP_MD-MD4.html \
 html/man7/EVP_MD-MD5-SHA1.html \
@@ -4702,6 +4707,7 @@ man/man7/EVP_MAC-KMAC.7 \
 man/man7/EVP_MAC-Poly1305.7 \
 man/man7/EVP_MAC-Siphash.7 \
 man/man7/EVP_MD-BLAKE2.7 \
+man/man7/EVP_MD-KECCAK.7 \
 man/man7/EVP_MD-MD2.7 \
 man/man7/EVP_MD-MD4.7 \
 man/man7/EVP_MD-MD5-SHA1.7 \
index b6f4029a678de75d24b0bb6682cdf960d96bc903..c78d06b020b9e4588fcfeb4fdfd4dd43fcf16a46 100644 (file)
@@ -387,6 +387,22 @@ SHA-3 384 Digest
 
 SHA-3 512 Digest
 
+=item B<keccak-224>
+
+KECCAK 224 Digest
+
+=item B<keccak-256>
+
+KECCAK 256 Digest
+
+=item B<keccak-384>
+
+KECCAK 384 Digest
+
+=item B<keccak-512>
+
+KECCAK 512 Digest
+
 =item B<shake128>
 
 SHA-3 SHAKE128 Digest
diff --git a/doc/man7/EVP_MD-KECCAK.pod b/doc/man7/EVP_MD-KECCAK.pod
new file mode 100644 (file)
index 0000000..d854db9
--- /dev/null
@@ -0,0 +1,46 @@
+=pod
+
+=head1 NAME
+
+EVP_MD-KECCAK - The KECCAK EVP_MD implementations
+
+=head1 DESCRIPTION
+
+Support for computing KECCAK digests through the B<EVP_MD> API.
+
+=head2 Identities
+
+This implementation is available in the default provider and
+includes the following varieties:
+
+=over 4
+
+=item "KECCAK-224"
+
+=item "KECCAK-256"
+
+=item "KECCAK-384"
+
+=item "KECCAK-512"
+
+=back
+
+=head2 Gettable Parameters
+
+This implementation supports the common gettable parameters described
+in L<EVP_MD-common(7)>.
+
+=head1 SEE ALSO
+
+L<provider-digest(7)>, L<OSSL_PROVIDER-default(7)>
+
+=head1 COPYRIGHT
+
+Copyright 2021 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
+L<https://www.openssl.org/source/license.html>.
+
+=cut
index 14d590cbdec6e36843c91d4ee135d79082dc84a9..492132b8c0a07c8a1c4cb1b0a005a42e94fcdae9 100644 (file)
@@ -57,6 +57,8 @@ The OpenSSL default provider supports these operations and algorithms:
 
 =item SHA3, see L<EVP_MD-SHA3(7)>
 
+=item KECCAK, see L<EVP_MD-KECCAK(7)>
+
 =item KECCAK-KMAC, see L<EVP_MD-KECCAK-KMAC(7)>
 
 =item SHAKE, see L<EVP_MD-SHAKE(7)>
index 63f30d77b57784bee7d616ec981ab243fe6b5d95..5f44df97e7b0b63d845192c391dac43f493d9b11 100644 (file)
@@ -266,8 +266,8 @@ L<OSSL_PROVIDER-legacy(7)>,
 L<EVP_MD-common(7)>, L<EVP_MD-BLAKE2(7)>, L<EVP_MD-MD2(7)>,
 L<EVP_MD-MD4(7)>, L<EVP_MD-MD5(7)>, L<EVP_MD-MD5-SHA1(7)>,
 L<EVP_MD-MDC2(7)>, L<EVP_MD-RIPEMD160(7)>, L<EVP_MD-SHA1(7)>,
-L<EVP_MD-SHA2(7)>, L<EVP_MD-SHA3(7)>, L<EVP_MD-SHAKE(7)>,
-L<EVP_MD-SM3(7)>, L<EVP_MD-WHIRLPOOL(7)>,
+L<EVP_MD-SHA2(7)>, L<EVP_MD-SHA3(7)>, L<EVP_MD-KECCAK(7)>
+L<EVP_MD-SHAKE(7)>, L<EVP_MD-SM3(7)>, L<EVP_MD-WHIRLPOOL(7)>,
 L<life_cycle-digest(7)>, L<EVP_DigestInit(3)>
 
 =head1 HISTORY
index 62258da7235a5e7f2a7ebc68b23b8844776cd3e2..e6c0b2465851e5b801a85c6508555bb9daceeaca 100644 (file)
@@ -114,6 +114,11 @@ static const OSSL_ALGORITHM deflt_digests[] = {
     { PROV_NAMES_SHA3_384, "provider=default", ossl_sha3_384_functions },
     { PROV_NAMES_SHA3_512, "provider=default", ossl_sha3_512_functions },
 
+    { PROV_NAMES_KECCAK_224, "provider=default", ossl_keccak_224_functions },
+    { PROV_NAMES_KECCAK_256, "provider=default", ossl_keccak_256_functions },
+    { PROV_NAMES_KECCAK_384, "provider=default", ossl_keccak_384_functions },
+    { PROV_NAMES_KECCAK_512, "provider=default", ossl_keccak_512_functions },
+
     /*
      * KECCAK-KMAC-128 and KECCAK-KMAC-256 as hashes are mostly useful for
      * the KMAC-128 and KMAC-256.
index 168825d47564e9c2e4626b637a85165a9dd1b395..230de7327505ea81a4597f2784ac8ae5d2e48fa5 100644 (file)
@@ -183,6 +183,12 @@ static PROV_SHA3_METHOD sha3_s390x_md =
     s390x_sha3_final
 };
 
+static PROV_SHA3_METHOD keccak_s390x_md =
+{
+    s390x_sha3_absorb,
+    s390x_sha3_final
+};
+
 static PROV_SHA3_METHOD shake_s390x_md =
 {
     s390x_sha3_absorb,
@@ -303,6 +309,12 @@ static int shake_set_ctx_params(void *vctx, const OSSL_PARAM params[])
                           SHA3_BLOCKSIZE(bitlen), SHA3_MDSIZE(bitlen),         \
                           SHA3_FLAGS)
 
+#define IMPLEMENT_KECCAK_functions(bitlen)                                     \
+    SHA3_newctx(keccak, KECCAK_##bitlen, keccak_##bitlen, bitlen, '\x01')      \
+    PROV_FUNC_SHA3_DIGEST(keccak_##bitlen, bitlen,                             \
+                          SHA3_BLOCKSIZE(bitlen), SHA3_MDSIZE(bitlen),         \
+                          SHA3_FLAGS)
+
 #define IMPLEMENT_SHAKE_functions(bitlen)                                      \
     SHA3_newctx(shake, SHAKE_##bitlen, shake_##bitlen, bitlen, '\x1f')         \
     PROV_FUNC_SHAKE_DIGEST(shake_##bitlen, bitlen,                             \
@@ -322,6 +334,14 @@ IMPLEMENT_SHA3_functions(256)
 IMPLEMENT_SHA3_functions(384)
 /* ossl_sha3_512_functions */
 IMPLEMENT_SHA3_functions(512)
+/* ossl_keccak_224_functions */
+IMPLEMENT_KECCAK_functions(224)
+/* ossl_keccak_256_functions */
+IMPLEMENT_KECCAK_functions(256)
+/* ossl_keccak_384_functions */
+IMPLEMENT_KECCAK_functions(384)
+/* ossl_keccak_512_functions */
+IMPLEMENT_KECCAK_functions(512)
 /* ossl_shake_128_functions */
 IMPLEMENT_SHAKE_functions(128)
 /* ossl_shake_256_functions */
index 73e1823742261a98b13c9bfc5a88f3c09251c9aa..e2573ebb4a5beecacfb26a3d3316b0510208ad21 100644 (file)
@@ -22,6 +22,10 @@ extern const OSSL_DISPATCH ossl_sha3_224_functions[];
 extern const OSSL_DISPATCH ossl_sha3_256_functions[];
 extern const OSSL_DISPATCH ossl_sha3_384_functions[];
 extern const OSSL_DISPATCH ossl_sha3_512_functions[];
+extern const OSSL_DISPATCH ossl_keccak_224_functions[];
+extern const OSSL_DISPATCH ossl_keccak_256_functions[];
+extern const OSSL_DISPATCH ossl_keccak_384_functions[];
+extern const OSSL_DISPATCH ossl_keccak_512_functions[];
 extern const OSSL_DISPATCH ossl_keccak_kmac_128_functions[];
 extern const OSSL_DISPATCH ossl_keccak_kmac_256_functions[];
 extern const OSSL_DISPATCH ossl_shake_128_functions[];
index e0dbb69a9d8c13579380f0ebe807710deb369798..1509598ffc34c557c4d4cb32c06841d06ead4613 100644 (file)
 #define PROV_NAMES_SHA3_384 "SHA3-384:2.16.840.1.101.3.4.2.9"
 #define PROV_NAMES_SHA3_512 "SHA3-512:2.16.840.1.101.3.4.2.10"
 
+#define PROV_NAMES_KECCAK_224 "KECCAK-224"
+#define PROV_NAMES_KECCAK_256 "KECCAK-256"
+#define PROV_NAMES_KECCAK_384 "KECCAK-384"
+#define PROV_NAMES_KECCAK_512 "KECCAK-512"
+
 #define PROV_NAMES_SHAKE_128 "SHAKE-128:SHAKE128:2.16.840.1.101.3.4.2.11"
 #define PROV_NAMES_SHAKE_256 "SHAKE-256:SHAKE256:2.16.840.1.101.3.4.2.12"
 
index 66ddf4590a19d4b60e3418081b8d7d0ed890002d..1b417bfca73b9e857d80369a65df8badb29e0802 100644 (file)
@@ -281,6 +281,92 @@ Digest = SHAKE256
 Input = 8d8001e2c096f1b88e7c9224a086efd4797fbf74a8033a2d422a2b6b8f6747e4
 Output = 2e975f6a8a14f0704d51b13667d8195c219f71e6345696c49fa4b9d08e9225d3d39393425152c97e71dd24601c11abcfa0f12f53c680bd3ae757b8134a9c10d429615869217fdd5885c4db174985703a6d6de94a667eac3023443a8337ae1bc601b76d7d38ec3c34463105f0d3949d78e562a039e4469548b609395de5a4fd43c46ca9fd6ee29ada5efc07d84d553249450dab4a49c483ded250c9338f85cd937ae66bb436f3b4026e859fda1ca571432f3bfc09e7c03ca4d183b741111ca0483d0edabc03feb23b17ee48e844ba2408d9dcfd0139d2e8c7310125aee801c61ab7900d1efc47c078281766f361c5e6111346235e1dc38325666c
 
+
+
+Title = KECCAK
+
+# Test vectors taken from https://keccak.team/archives.html.
+# "Known-answer and Monte Carlo test results, as of round 3
+# of the SHA-3 competition":
+# https://keccak.team/obsolete/KeccakKAT-3.zip
+
+# ShortMsgKAT_224.txt, Len = 0
+Availablein = default
+Digest = KECCAK-224
+Input = ""
+Output = F71837502BA8E10837BDD8D365ADB85591895602FC552B48B7390ABD
+
+# LongMsgKAT_224.txt, Len = 3560
+Availablein = default
+Digest = KECCAK-224
+Input = 20FF454369A5D05B81A78F3DB05819FEA9B08C2384F75CB0AB6AA115DD690DA3131874A1CA8F708AD1519EA952C1E249CB540D196392C79E87755424FEE7C890808C562722359EEA52E8A12FBBB969DD7961D2BA52037493755A5FA04F0D50A1AA26C9B44148C0D3B94D1C4A59A31ACA15AE8BD44ACB7833D8E91C4B86FA3135A423387B8151B4133ED23F6D7187B50EC2204AD901AD74D396E44274E0ECAFAAE17B3B9085E22260B35CA53B15CC52ABBA758AF6798FBD04ECEECED648F3AF4FDB3DED7557A9A5CFB7382612A8A8F3F45947D1A29CE29072928EC193CA25D51071BD5E1984ECF402F306EA762F0F25282F5296D997658BE3F983696FFA6D095C6369B4DAF79E9A5D3136229128F8EB63C12B9E9FA78AFF7A3E9E19A62022493CD136DEFBB5BB7BA1B938F367FD2F63EB5CA76C0B0FF21B9E36C3F07230CF3C3074E5DA587040A76975D7E39F4494ACE5486FCBF380AB7558C4FE89656335B82E4DB8659509EAB46A19613126E594042732DD4C411F41AA8CDEAC71C0FB40A94E6DA558C05E77B6182806F26D9AFDF3DA00C69419222C8186A6EFAD600B410E6CE2F2A797E49DC1F135319801FA6F396B06F975E2A190A023E474B618E7
+Output = 34A58DDFC5C2222281FA73EB34BFB5E152272CC3AC7FE97AC58C08B0
+
+# LongMsgKAT_224.txt, Len = 4064
+Availablein = default
+Digest = KECCAK-224
+Input = 4FBDC596508D24A2A0010E140980B809FB9C6D55EC75125891DD985D37665BD80F9BEB6A50207588ABF3CEEE8C77CD8A5AD48A9E0AA074ED388738362496D2FB2C87543BB3349EA64997CE3E7B424EA92D122F57DBB0855A803058437FE08AFB0C8B5E7179B9044BBF4D81A7163B3139E30888B536B0F957EFF99A7162F4CA5AA756A4A982DFADBF31EF255083C4B5C6C1B99A107D7D3AFFFDB89147C2CC4C9A2643F478E5E2D393AEA37B4C7CB4B5E97DADCF16B6B50AAE0F3B549ECE47746DB6CE6F67DD4406CD4E75595D5103D13F9DFA79372924D328F8DD1FCBEB5A8E2E8BF4C76DE08E3FC46AA021F989C49329C7ACAC5A688556D7BCBCB2A5D4BE69D3284E9C40EC4838EE8592120CE20A0B635ECADAA84FD5690509F54F77E35A417C584648BC9839B974E07BFAB0038E90295D0B13902530A830D1C2BDD53F1F9C9FAED43CA4EED0A8DD761BC7EDBDDA28A287C60CD42AF5F9C758E5C7250231C09A582563689AFC65E2B79A7A2B68200667752E9101746F03184E2399E4ED8835CB8E9AE90E296AF220AE234259FE0BD0BCC60F7A4A5FF3F70C5ED4DE9C8C519A10E962F673C82C5E9351786A8A3BFD570031857BD4C87F4FCA31ED4D50E14F2107DA02CB5058700B74EA241A8B41D78461658F1B2B90BFD84A4C2C9D6543861AB3C56451757DCFB9BA60333488DBDD02D601B41AAE317CA7474EB6E6DD
+Output = 0790649A6F6ECC4DCACAFAFB6AEFBF6C6F7EC883C72671DB211CD163
+
+
+# ShortMsgKAT_256.txt, Len = 0
+Availablein = default
+Digest = KECCAK-256
+Input = ""
+Output = C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470
+
+# LongMsgKAT_256.txt, Len = 3560
+Availablein = default
+Digest = KECCAK-256
+Input = 20FF454369A5D05B81A78F3DB05819FEA9B08C2384F75CB0AB6AA115DD690DA3131874A1CA8F708AD1519EA952C1E249CB540D196392C79E87755424FEE7C890808C562722359EEA52E8A12FBBB969DD7961D2BA52037493755A5FA04F0D50A1AA26C9B44148C0D3B94D1C4A59A31ACA15AE8BD44ACB7833D8E91C4B86FA3135A423387B8151B4133ED23F6D7187B50EC2204AD901AD74D396E44274E0ECAFAAE17B3B9085E22260B35CA53B15CC52ABBA758AF6798FBD04ECEECED648F3AF4FDB3DED7557A9A5CFB7382612A8A8F3F45947D1A29CE29072928EC193CA25D51071BD5E1984ECF402F306EA762F0F25282F5296D997658BE3F983696FFA6D095C6369B4DAF79E9A5D3136229128F8EB63C12B9E9FA78AFF7A3E9E19A62022493CD136DEFBB5BB7BA1B938F367FD2F63EB5CA76C0B0FF21B9E36C3F07230CF3C3074E5DA587040A76975D7E39F4494ACE5486FCBF380AB7558C4FE89656335B82E4DB8659509EAB46A19613126E594042732DD4C411F41AA8CDEAC71C0FB40A94E6DA558C05E77B6182806F26D9AFDF3DA00C69419222C8186A6EFAD600B410E6CE2F2A797E49DC1F135319801FA6F396B06F975E2A190A023E474B618E7
+Output = 0EC8D9D20DDF0A7B0251E941A7261B557507FF6287B504362A8F1734C5A91012
+
+# LongMsgKAT_256.txt, Len = 4064
+Availablein = default
+Digest = KECCAK-256
+Input = 4FBDC596508D24A2A0010E140980B809FB9C6D55EC75125891DD985D37665BD80F9BEB6A50207588ABF3CEEE8C77CD8A5AD48A9E0AA074ED388738362496D2FB2C87543BB3349EA64997CE3E7B424EA92D122F57DBB0855A803058437FE08AFB0C8B5E7179B9044BBF4D81A7163B3139E30888B536B0F957EFF99A7162F4CA5AA756A4A982DFADBF31EF255083C4B5C6C1B99A107D7D3AFFFDB89147C2CC4C9A2643F478E5E2D393AEA37B4C7CB4B5E97DADCF16B6B50AAE0F3B549ECE47746DB6CE6F67DD4406CD4E75595D5103D13F9DFA79372924D328F8DD1FCBEB5A8E2E8BF4C76DE08E3FC46AA021F989C49329C7ACAC5A688556D7BCBCB2A5D4BE69D3284E9C40EC4838EE8592120CE20A0B635ECADAA84FD5690509F54F77E35A417C584648BC9839B974E07BFAB0038E90295D0B13902530A830D1C2BDD53F1F9C9FAED43CA4EED0A8DD761BC7EDBDDA28A287C60CD42AF5F9C758E5C7250231C09A582563689AFC65E2B79A7A2B68200667752E9101746F03184E2399E4ED8835CB8E9AE90E296AF220AE234259FE0BD0BCC60F7A4A5FF3F70C5ED4DE9C8C519A10E962F673C82C5E9351786A8A3BFD570031857BD4C87F4FCA31ED4D50E14F2107DA02CB5058700B74EA241A8B41D78461658F1B2B90BFD84A4C2C9D6543861AB3C56451757DCFB9BA60333488DBDD02D601B41AAE317CA7474EB6E6DD
+Output = 0EA33E2E34F572440640244C7F1F5F04697CE97139BDA72A6558D8663C02B388
+
+
+# ShortMsgKAT_384.txt, Len = 0
+Availablein = default
+Digest = KECCAK-384
+Input = ""
+Output = 2C23146A63A29ACF99E73B88F8C24EAA7DC60AA771780CCC006AFBFA8FE2479B2DD2B21362337441AC12B515911957FF
+
+# LongMsgKAT_384.txt, Len = 3560
+Availablein = default
+Digest = KECCAK-384
+Input = 20FF454369A5D05B81A78F3DB05819FEA9B08C2384F75CB0AB6AA115DD690DA3131874A1CA8F708AD1519EA952C1E249CB540D196392C79E87755424FEE7C890808C562722359EEA52E8A12FBBB969DD7961D2BA52037493755A5FA04F0D50A1AA26C9B44148C0D3B94D1C4A59A31ACA15AE8BD44ACB7833D8E91C4B86FA3135A423387B8151B4133ED23F6D7187B50EC2204AD901AD74D396E44274E0ECAFAAE17B3B9085E22260B35CA53B15CC52ABBA758AF6798FBD04ECEECED648F3AF4FDB3DED7557A9A5CFB7382612A8A8F3F45947D1A29CE29072928EC193CA25D51071BD5E1984ECF402F306EA762F0F25282F5296D997658BE3F983696FFA6D095C6369B4DAF79E9A5D3136229128F8EB63C12B9E9FA78AFF7A3E9E19A62022493CD136DEFBB5BB7BA1B938F367FD2F63EB5CA76C0B0FF21B9E36C3F07230CF3C3074E5DA587040A76975D7E39F4494ACE5486FCBF380AB7558C4FE89656335B82E4DB8659509EAB46A19613126E594042732DD4C411F41AA8CDEAC71C0FB40A94E6DA558C05E77B6182806F26D9AFDF3DA00C69419222C8186A6EFAD600B410E6CE2F2A797E49DC1F135319801FA6F396B06F975E2A190A023E474B618E7
+Output = 5975FA4BCEFC79FADC79CCF1254BBA9EAC252E24C7DEC7EB8972D265EFAD3F6CF648C49DFFF5453AD27D62FF867A2F03
+
+# LongMsgKAT_384.txt, Len = 4064
+Availablein = default
+Digest = KECCAK-384
+Input = 4FBDC596508D24A2A0010E140980B809FB9C6D55EC75125891DD985D37665BD80F9BEB6A50207588ABF3CEEE8C77CD8A5AD48A9E0AA074ED388738362496D2FB2C87543BB3349EA64997CE3E7B424EA92D122F57DBB0855A803058437FE08AFB0C8B5E7179B9044BBF4D81A7163B3139E30888B536B0F957EFF99A7162F4CA5AA756A4A982DFADBF31EF255083C4B5C6C1B99A107D7D3AFFFDB89147C2CC4C9A2643F478E5E2D393AEA37B4C7CB4B5E97DADCF16B6B50AAE0F3B549ECE47746DB6CE6F67DD4406CD4E75595D5103D13F9DFA79372924D328F8DD1FCBEB5A8E2E8BF4C76DE08E3FC46AA021F989C49329C7ACAC5A688556D7BCBCB2A5D4BE69D3284E9C40EC4838EE8592120CE20A0B635ECADAA84FD5690509F54F77E35A417C584648BC9839B974E07BFAB0038E90295D0B13902530A830D1C2BDD53F1F9C9FAED43CA4EED0A8DD761BC7EDBDDA28A287C60CD42AF5F9C758E5C7250231C09A582563689AFC65E2B79A7A2B68200667752E9101746F03184E2399E4ED8835CB8E9AE90E296AF220AE234259FE0BD0BCC60F7A4A5FF3F70C5ED4DE9C8C519A10E962F673C82C5E9351786A8A3BFD570031857BD4C87F4FCA31ED4D50E14F2107DA02CB5058700B74EA241A8B41D78461658F1B2B90BFD84A4C2C9D6543861AB3C56451757DCFB9BA60333488DBDD02D601B41AAE317CA7474EB6E6DD
+Output = D8A18FDF0DBC4D9DC9A399EED833D258BDF4E06C50C12550B50297DDA05784AEE91F339766021B2CA6BE1577823D920B
+
+
+# ShortMsgKAT_512.txt, Len = 0
+Availablein = default
+Digest = KECCAK-512
+Input = ""
+Output = 0EAB42DE4C3CEB9235FC91ACFFE746B29C29A8C366B7C60E4E67C466F36A4304C00FA9CAF9D87976BA469BCBE06713B435F091EF2769FB160CDAB33D3670680E
+
+# LongMsgKAT_512.txt, Len = 3560
+Availablein = default
+Digest = KECCAK-512
+Input = 20FF454369A5D05B81A78F3DB05819FEA9B08C2384F75CB0AB6AA115DD690DA3131874A1CA8F708AD1519EA952C1E249CB540D196392C79E87755424FEE7C890808C562722359EEA52E8A12FBBB969DD7961D2BA52037493755A5FA04F0D50A1AA26C9B44148C0D3B94D1C4A59A31ACA15AE8BD44ACB7833D8E91C4B86FA3135A423387B8151B4133ED23F6D7187B50EC2204AD901AD74D396E44274E0ECAFAAE17B3B9085E22260B35CA53B15CC52ABBA758AF6798FBD04ECEECED648F3AF4FDB3DED7557A9A5CFB7382612A8A8F3F45947D1A29CE29072928EC193CA25D51071BD5E1984ECF402F306EA762F0F25282F5296D997658BE3F983696FFA6D095C6369B4DAF79E9A5D3136229128F8EB63C12B9E9FA78AFF7A3E9E19A62022493CD136DEFBB5BB7BA1B938F367FD2F63EB5CA76C0B0FF21B9E36C3F07230CF3C3074E5DA587040A76975D7E39F4494ACE5486FCBF380AB7558C4FE89656335B82E4DB8659509EAB46A19613126E594042732DD4C411F41AA8CDEAC71C0FB40A94E6DA558C05E77B6182806F26D9AFDF3DA00C69419222C8186A6EFAD600B410E6CE2F2A797E49DC1F135319801FA6F396B06F975E2A190A023E474B618E7
+Output = 116AE94C86F68F96B8AEF298A9F5852CC9913A2AD3C3C344F28DCC9B29292A716FAF51DD04A9433D8A12572E1DBC581A7CDC4E50BC1CA9051DDBC121F2E864E2
+
+# LongMsgKAT_512.txt, Len = 4064
+Availablein = default
+Digest = KECCAK-512
+Input = 4FBDC596508D24A2A0010E140980B809FB9C6D55EC75125891DD985D37665BD80F9BEB6A50207588ABF3CEEE8C77CD8A5AD48A9E0AA074ED388738362496D2FB2C87543BB3349EA64997CE3E7B424EA92D122F57DBB0855A803058437FE08AFB0C8B5E7179B9044BBF4D81A7163B3139E30888B536B0F957EFF99A7162F4CA5AA756A4A982DFADBF31EF255083C4B5C6C1B99A107D7D3AFFFDB89147C2CC4C9A2643F478E5E2D393AEA37B4C7CB4B5E97DADCF16B6B50AAE0F3B549ECE47746DB6CE6F67DD4406CD4E75595D5103D13F9DFA79372924D328F8DD1FCBEB5A8E2E8BF4C76DE08E3FC46AA021F989C49329C7ACAC5A688556D7BCBCB2A5D4BE69D3284E9C40EC4838EE8592120CE20A0B635ECADAA84FD5690509F54F77E35A417C584648BC9839B974E07BFAB0038E90295D0B13902530A830D1C2BDD53F1F9C9FAED43CA4EED0A8DD761BC7EDBDDA28A287C60CD42AF5F9C758E5C7250231C09A582563689AFC65E2B79A7A2B68200667752E9101746F03184E2399E4ED8835CB8E9AE90E296AF220AE234259FE0BD0BCC60F7A4A5FF3F70C5ED4DE9C8C519A10E962F673C82C5E9351786A8A3BFD570031857BD4C87F4FCA31ED4D50E14F2107DA02CB5058700B74EA241A8B41D78461658F1B2B90BFD84A4C2C9D6543861AB3C56451757DCFB9BA60333488DBDD02D601B41AAE317CA7474EB6E6DD
+Output = DEA56BDABBC6D24183CF7BDE1E1F78631B2B0230C76FF2F43075F2FDE77CF052769276CAD98DA62394EC62D77730F5761489585E093EA7315F3592717C485C84
+
+
+
 Title = Case insensitive digest tests
 
 Digest = Sha3-256