VirtualBox

Changeset 85614 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 5, 2020 1:27:58 PM (4 years ago)
Author:
vboxsync
Message:

IPRT: Adding SHA-3. bugref:9734

Location:
trunk/src/VBox/Runtime
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/Makefile.kmk

    r85378 r85614  
    360360        common/checksum/alt-sha256.cpp \
    361361        common/checksum/alt-sha512.cpp \
     362        common/checksum/alt-sha3.cpp \
    362363        common/checksum/md2str.cpp \
    363364        common/checksum/md4str.cpp \
  • trunk/src/VBox/Runtime/common/crypto/digest-builtin.cpp

    r85121 r85614  
    602602};
    603603#endif /* !IPRT_WITHOUT_SHA512T256 */
     604
     605#ifndef IPRT_WITHOUT_SHA3
     606
     607/*
     608 * SHA3-224
     609 */
     610
     611/** @impl_interface_method{RTCRDIGESTDESC::pfnUpdate} */
     612static DECLCALLBACK(void) rtCrDigestSha3t224_Update(void *pvState, const void *pvData, size_t cbData)
     613{
     614    int rc = RTSha3t224Update((PRTSHA3T224CONTEXT)pvState, pvData, cbData);
     615    AssertRC(rc);
     616}
     617
     618/** @impl_interface_method{RTCRDIGESTDESC::pfnFinal} */
     619static DECLCALLBACK(void) rtCrDigestSha3t224_Final(void *pvState, uint8_t *pbHash)
     620{
     621    int rc = RTSha3t224Final((PRTSHA3T224CONTEXT)pvState, pbHash);
     622    AssertRC(rc);
     623}
     624
     625/** @impl_interface_method{RTCRDIGESTDESC::pfnInit} */
     626static DECLCALLBACK(int) rtCrDigestSha3t224_Init(void *pvState, void *pvOpaque, bool fReInit)
     627{
     628    RT_NOREF_PV(pvOpaque);
     629    AssertReturn(pvOpaque == NULL, VERR_INVALID_PARAMETER);
     630    if (fReInit)
     631        RTSha3t224Cleanup((PRTSHA3T224CONTEXT)pvState);
     632    return RTSha3t224Init((PRTSHA3T224CONTEXT)pvState);
     633}
     634
     635/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     636static DECLCALLBACK(void) rtCrDigestSha3t224_Delete(void *pvState)
     637{
     638    RTSha3t224Cleanup((PRTSHA3T224CONTEXT)pvState);
     639}
     640
     641/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     642static DECLCALLBACK(int) rtCrDigestSha3t224_Clone(void *pvState, void const *pvSrcState)
     643{
     644    return RTSha3t224Clone((PRTSHA3T224CONTEXT)pvState, (PRTSHA3T224CONTEXT)pvSrcState);
     645}
     646
     647/** SHA3-224 alias ODIs. */
     648static const char * const g_apszSha3t224Aliases[] =
     649{
     650    "2.16.840.1.101.3.4.3.13",
     651    NULL
     652};
     653
     654/** SHA3-224 descriptor. */
     655static RTCRDIGESTDESC const g_rtCrDigestSha3t224Desc =
     656{
     657    "sha3-224",
     658    "2.16.840.1.101.3.4.2.7",
     659    g_apszSha3t224Aliases,
     660    RTDIGESTTYPE_SHA3_224,
     661    RTSHA3_224_HASH_SIZE,
     662    sizeof(RTSHA3T224CONTEXT),
     663    0,
     664    NULL,
     665    NULL,
     666    rtCrDigestSha3t224_Update,
     667    rtCrDigestSha3t224_Final,
     668    rtCrDigestSha3t224_Init,
     669    rtCrDigestSha3t224_Delete,
     670    rtCrDigestSha3t224_Clone,
     671    NULL,
     672    NULL,
     673};
     674
     675
     676/*
     677 * SHA3-256
     678 */
     679
     680/** @impl_interface_method{RTCRDIGESTDESC::pfnUpdate} */
     681static DECLCALLBACK(void) rtCrDigestSha3t256_Update(void *pvState, const void *pvData, size_t cbData)
     682{
     683    int rc = RTSha3t256Update((PRTSHA3T256CONTEXT)pvState, pvData, cbData);
     684    AssertRC(rc);
     685}
     686
     687/** @impl_interface_method{RTCRDIGESTDESC::pfnFinal} */
     688static DECLCALLBACK(void) rtCrDigestSha3t256_Final(void *pvState, uint8_t *pbHash)
     689{
     690    int rc = RTSha3t256Final((PRTSHA3T256CONTEXT)pvState, pbHash);
     691    AssertRC(rc);
     692}
     693
     694/** @impl_interface_method{RTCRDIGESTDESC::pfnInit} */
     695static DECLCALLBACK(int) rtCrDigestSha3t256_Init(void *pvState, void *pvOpaque, bool fReInit)
     696{
     697    RT_NOREF_PV(pvOpaque);
     698    AssertReturn(pvOpaque == NULL, VERR_INVALID_PARAMETER);
     699    if (fReInit)
     700        RTSha3t256Cleanup((PRTSHA3T256CONTEXT)pvState);
     701    return RTSha3t256Init((PRTSHA3T256CONTEXT)pvState);
     702}
     703
     704/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     705static DECLCALLBACK(void) rtCrDigestSha3t256_Delete(void *pvState)
     706{
     707    RTSha3t256Cleanup((PRTSHA3T256CONTEXT)pvState);
     708}
     709
     710/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     711static DECLCALLBACK(int) rtCrDigestSha3t256_Clone(void *pvState, void const *pvSrcState)
     712{
     713    return RTSha3t256Clone((PRTSHA3T256CONTEXT)pvState, (PRTSHA3T256CONTEXT)pvSrcState);
     714}
     715
     716/** SHA3-256 alias ODIs. */
     717static const char * const g_apszSha3t256Aliases[] =
     718{
     719    "2.16.840.1.101.3.4.3.14",
     720    NULL
     721};
     722
     723/** SHA3-256 descriptor. */
     724static RTCRDIGESTDESC const g_rtCrDigestSha3t256Desc =
     725{
     726    "sha3-256",
     727    "2.16.840.1.101.3.4.2.8",
     728    g_apszSha3t256Aliases,
     729    RTDIGESTTYPE_SHA3_256,
     730    RTSHA3_256_HASH_SIZE,
     731    sizeof(RTSHA3T256CONTEXT),
     732    0,
     733    NULL,
     734    NULL,
     735    rtCrDigestSha3t256_Update,
     736    rtCrDigestSha3t256_Final,
     737    rtCrDigestSha3t256_Init,
     738    rtCrDigestSha3t256_Delete,
     739    rtCrDigestSha3t256_Clone,
     740    NULL,
     741    NULL,
     742};
     743
     744
     745/*
     746 * SHA3-384
     747 */
     748
     749/** @impl_interface_method{RTCRDIGESTDESC::pfnUpdate} */
     750static DECLCALLBACK(void) rtCrDigestSha3t384_Update(void *pvState, const void *pvData, size_t cbData)
     751{
     752    int rc = RTSha3t384Update((PRTSHA3T384CONTEXT)pvState, pvData, cbData);
     753    AssertRC(rc);
     754}
     755
     756/** @impl_interface_method{RTCRDIGESTDESC::pfnFinal} */
     757static DECLCALLBACK(void) rtCrDigestSha3t384_Final(void *pvState, uint8_t *pbHash)
     758{
     759    int rc = RTSha3t384Final((PRTSHA3T384CONTEXT)pvState, pbHash);
     760    AssertRC(rc);
     761}
     762
     763/** @impl_interface_method{RTCRDIGESTDESC::pfnInit} */
     764static DECLCALLBACK(int) rtCrDigestSha3t384_Init(void *pvState, void *pvOpaque, bool fReInit)
     765{
     766    RT_NOREF_PV(pvOpaque);
     767    AssertReturn(pvOpaque == NULL, VERR_INVALID_PARAMETER);
     768    if (fReInit)
     769        RTSha3t384Cleanup((PRTSHA3T384CONTEXT)pvState);
     770    return RTSha3t384Init((PRTSHA3T384CONTEXT)pvState);
     771}
     772
     773/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     774static DECLCALLBACK(void) rtCrDigestSha3t384_Delete(void *pvState)
     775{
     776    RTSha3t384Cleanup((PRTSHA3T384CONTEXT)pvState);
     777}
     778
     779/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     780static DECLCALLBACK(int) rtCrDigestSha3t384_Clone(void *pvState, void const *pvSrcState)
     781{
     782    return RTSha3t384Clone((PRTSHA3T384CONTEXT)pvState, (PRTSHA3T384CONTEXT)pvSrcState);
     783}
     784
     785/** SHA3-384 alias ODIs. */
     786static const char * const g_apszSha3t384Aliases[] =
     787{
     788    "2.16.840.1.101.3.4.3.15",
     789    NULL
     790};
     791
     792/** SHA3-384 descriptor. */
     793static RTCRDIGESTDESC const g_rtCrDigestSha3t384Desc =
     794{
     795    "sha3-384",
     796    "2.16.840.1.101.3.4.2.9",
     797    g_apszSha3t384Aliases,
     798    RTDIGESTTYPE_SHA3_384,
     799    RTSHA3_384_HASH_SIZE,
     800    sizeof(RTSHA3T384CONTEXT),
     801    0,
     802    NULL,
     803    NULL,
     804    rtCrDigestSha3t384_Update,
     805    rtCrDigestSha3t384_Final,
     806    rtCrDigestSha3t384_Init,
     807    rtCrDigestSha3t384_Delete,
     808    rtCrDigestSha3t384_Clone,
     809    NULL,
     810    NULL,
     811};
     812
     813
     814/*
     815 * SHA3-512
     816 */
     817
     818/** @impl_interface_method{RTCRDIGESTDESC::pfnUpdate} */
     819static DECLCALLBACK(void) rtCrDigestSha3t512_Update(void *pvState, const void *pvData, size_t cbData)
     820{
     821    int rc = RTSha3t512Update((PRTSHA3T512CONTEXT)pvState, pvData, cbData);
     822    AssertRC(rc);
     823}
     824
     825/** @impl_interface_method{RTCRDIGESTDESC::pfnFinal} */
     826static DECLCALLBACK(void) rtCrDigestSha3t512_Final(void *pvState, uint8_t *pbHash)
     827{
     828    int rc = RTSha3t512Final((PRTSHA3T512CONTEXT)pvState, pbHash);
     829    AssertRC(rc);
     830}
     831
     832/** @impl_interface_method{RTCRDIGESTDESC::pfnInit} */
     833static DECLCALLBACK(int) rtCrDigestSha3t512_Init(void *pvState, void *pvOpaque, bool fReInit)
     834{
     835    RT_NOREF_PV(pvOpaque);
     836    AssertReturn(pvOpaque == NULL, VERR_INVALID_PARAMETER);
     837    if (fReInit)
     838        RTSha3t512Cleanup((PRTSHA3T512CONTEXT)pvState);
     839    return RTSha3t512Init((PRTSHA3T512CONTEXT)pvState);
     840}
     841
     842/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     843static DECLCALLBACK(void) rtCrDigestSha3t512_Delete(void *pvState)
     844{
     845    RTSha3t512Cleanup((PRTSHA3T512CONTEXT)pvState);
     846}
     847
     848/** @impl_interface_method{RTCRDIGESTDESC::pfnDelete} */
     849static DECLCALLBACK(int) rtCrDigestSha3t512_Clone(void *pvState, void const *pvSrcState)
     850{
     851    return RTSha3t512Clone((PRTSHA3T512CONTEXT)pvState, (PRTSHA3T512CONTEXT)pvSrcState);
     852}
     853
     854/** SHA3-512 alias ODIs. */
     855static const char * const g_apszSha3t512Aliases[] =
     856{
     857    "2.16.840.1.101.3.4.3.16",
     858    NULL
     859};
     860
     861/** SHA3-512 descriptor. */
     862static RTCRDIGESTDESC const g_rtCrDigestSha3t512Desc =
     863{
     864    "sha3-512",
     865    "2.16.840.1.101.3.4.2.10",
     866    g_apszSha3t512Aliases,
     867    RTDIGESTTYPE_SHA3_512,
     868    RTSHA3_512_HASH_SIZE,
     869    sizeof(RTSHA3T512CONTEXT),
     870    0,
     871    NULL,
     872    NULL,
     873    rtCrDigestSha3t512_Update,
     874    rtCrDigestSha3t512_Final,
     875    rtCrDigestSha3t512_Init,
     876    rtCrDigestSha3t512_Delete,
     877    rtCrDigestSha3t512_Clone,
     878    NULL,
     879    NULL,
     880};
     881
     882#endif /* !IPRT_WITHOUT_SHA3 */
    604883
    605884
     
    628907#ifndef IPRT_WITHOUT_SHA512T256
    629908    &g_rtCrDigestSha512t256Desc,
     909#endif
     910#ifndef IPRT_WITHOUT_SHA3
     911    &g_rtCrDigestSha3t224Desc,
     912    &g_rtCrDigestSha3t256Desc,
     913    &g_rtCrDigestSha3t384Desc,
     914    &g_rtCrDigestSha3t512Desc,
    630915#endif
    631916};
  • trunk/src/VBox/Runtime/common/crypto/digest-core.cpp

    r84248 r85614  
    428428        case RTDIGESTTYPE_SHA512T224:   return RTCRX509ALGORITHMIDENTIFIERID_SHA512T224;
    429429        case RTDIGESTTYPE_SHA512T256:   return RTCRX509ALGORITHMIDENTIFIERID_SHA512T256;
     430        case RTDIGESTTYPE_SHA3_224:     return RTCRX509ALGORITHMIDENTIFIERID_SHA3_224;
     431        case RTDIGESTTYPE_SHA3_256:     return RTCRX509ALGORITHMIDENTIFIERID_SHA3_256;
     432        case RTDIGESTTYPE_SHA3_384:     return RTCRX509ALGORITHMIDENTIFIERID_SHA3_384;
     433        case RTDIGESTTYPE_SHA3_512:     return RTCRX509ALGORITHMIDENTIFIERID_SHA3_512;
    430434        default:                        return NULL;
    431435    }
     
    449453        case RTDIGESTTYPE_SHA512T224:   return "SHA-512/224";
    450454        case RTDIGESTTYPE_SHA512T256:   return "SHA-512/256";
     455        case RTDIGESTTYPE_SHA3_224:     return "SHA3-224";
     456        case RTDIGESTTYPE_SHA3_256:     return "SHA3-256";
     457        case RTDIGESTTYPE_SHA3_384:     return "SHA3-384";
     458        case RTDIGESTTYPE_SHA3_512:     return "SHA3-512";
    451459        default:                        return NULL;
    452460    }
     
    470478        case RTDIGESTTYPE_SHA512T224:   return 224 / 8;
    471479        case RTDIGESTTYPE_SHA512T256:   return 256 / 8;
     480        case RTDIGESTTYPE_SHA3_224:     return 224 / 8;
     481        case RTDIGESTTYPE_SHA3_256:     return 256 / 8;
     482        case RTDIGESTTYPE_SHA3_384:     return 384 / 8;
     483        case RTDIGESTTYPE_SHA3_512:     return 512 / 8;
    472484        default:
    473485            AssertFailed();
  • trunk/src/VBox/Runtime/testcase/tstRTDigest-2.cpp

    r82968 r85614  
    14571457
    14581458
     1459static void testSha3_224(void)
     1460{
     1461    RTTestISub("SHA3-224");
     1462
     1463    /*
     1464     * Generic API tests.
     1465     */
     1466    static TESTRTDIGEST const s_abTests[] =
     1467    {
     1468        { &g_abRandom72KB[0],         0, "6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7", "SHA3-224 0 bytes" },
     1469        { &g_abRandom72KB[0],         1, "c16ddd47002314077565c004c8a6a335622fb9eebd93a207b3df86f1", "SHA3-224 1 bytes" },
     1470        { &g_abRandom72KB[0],         2, "806c36dcdfa26341648dfcd6dffed6bd17b1bfae7e6cff0ddade2dcd", "SHA3-224 2 bytes" },
     1471        { &g_abRandom72KB[0],         3, "850900b680b3645a715bf4f9a24c939936d5d400cea7e48e27a5a82c", "SHA3-224 3 bytes" },
     1472        { &g_abRandom72KB[0],         4, "03f71d684cd5f38a1508a4a313fa2f099afcf306a9943d8b497b793f", "SHA3-224 4 bytes" },
     1473        { &g_abRandom72KB[0],         5, "188ca424af350902fc377035db1f26e46ebe304ede5ac700ed4262d3", "SHA3-224 5 bytes" },
     1474        { &g_abRandom72KB[0],         6, "6310deb0fd800c59d4116ae8f98137200377e637902904e21f8b1912", "SHA3-224 6 bytes" },
     1475        { &g_abRandom72KB[0],         7, "4aeccabab1c5af03ab038edbf7f293fcc95a5d362c51bad6208ffb2f", "SHA3-224 7 bytes" },
     1476        { &g_abRandom72KB[0],         8, "9349cae62e9198c47ecbd288dc2f92918b8fca2ba9121633d82a4d4a", "SHA3-224 8 bytes" },
     1477        { &g_abRandom72KB[0],         9, "36c1119e49b45c72ab64f81281204f25cda7dcba348347d441f7392e", "SHA3-224 9 bytes" },
     1478        { &g_abRandom72KB[0],        10, "2bdfddbd1ff52d1a55a15e862e1f6740bc09ca2dfb195d756402899b", "SHA3-224 10 bytes" },
     1479        { &g_abRandom72KB[0],        11, "00d28c1f6d6d68b18c102d0c79727b62aff23b534efb2397f628d739", "SHA3-224 11 bytes" },
     1480        { &g_abRandom72KB[0],        12, "037550e18635864203a6aaf2c732ed76dc94f6dd838cd14f0d317dbd", "SHA3-224 12 bytes" },
     1481        { &g_abRandom72KB[0],        13, "d989f92017047e08b8212483a2ce9288aa97b1f07bda29c938d9bc8e", "SHA3-224 13 bytes" },
     1482        { &g_abRandom72KB[0],        14, "ab23e6d5a674c471f2842e81593f42f728056fc2adf4b78b7f91edc2", "SHA3-224 14 bytes" },
     1483        { &g_abRandom72KB[0],        15, "d8470eb158ce88069f057d2c96db04f9bb8d480e4edc239be4d074a5", "SHA3-224 15 bytes" },
     1484        { &g_abRandom72KB[0],        16, "9c446f8b9a4d70ff2aa174ed49910db205622f4735f78c8e756b69d9", "SHA3-224 16 bytes" },
     1485        { &g_abRandom72KB[0],        17, "c873455ce6b16f24d3a437a6397a06215500111f448627929db94ffb", "SHA3-224 17 bytes" },
     1486        { &g_abRandom72KB[0],        18, "1cf8336176b6747bcd1e6bacda5b87d9d299cae74c4eacfc25241523", "SHA3-224 18 bytes" },
     1487        { &g_abRandom72KB[0],        19, "97bea48929cc724f9fb75d132101b8f00c82c8d5790c5e06dc41393f", "SHA3-224 19 bytes" },
     1488        { &g_abRandom72KB[0],        20, "f549bcda80edcaeef5e01047a6429c55babc33407502d332d1a4285d", "SHA3-224 20 bytes" },
     1489        { &g_abRandom72KB[0],        21, "752a317c4527605d6882cf40d833de22cb43eb208f2f265a16795ff6", "SHA3-224 21 bytes" },
     1490        { &g_abRandom72KB[0],        22, "379bc7846ec4736dbe7a69f94e4622cfccba5687694e1c73ed6a1c57", "SHA3-224 22 bytes" },
     1491        { &g_abRandom72KB[0],        23, "f4d7161e2e4dd576f9c67e8212e94f8f6a0348b1760e6009d4d82b8c", "SHA3-224 23 bytes" },
     1492        { &g_abRandom72KB[0],        24, "188b729072e18f920f869809d90270c26991566bbf943c080ee944c7", "SHA3-224 24 bytes" },
     1493        { &g_abRandom72KB[0],        25, "3b65d20cf2717de484574d39656a8684a71e9bc9ed6640e075ccb018", "SHA3-224 25 bytes" },
     1494        { &g_abRandom72KB[0],        26, "0219518dc74ea5829974af838fada6581e611b2909365269bba0b2d6", "SHA3-224 26 bytes" },
     1495        { &g_abRandom72KB[0],        27, "2f4d4afa8dcc6d2bdcbcf148a328b63392c5a6cca40939c243e20832", "SHA3-224 27 bytes" },
     1496        { &g_abRandom72KB[0],        28, "c4fd8e78042ef4a366a7d9bc81c089e7391c93fafa85c48fedad100c", "SHA3-224 28 bytes" },
     1497        { &g_abRandom72KB[0],        29, "ab364ae73034dba102a0c477c3acee20d9ea6a967c49a0361f60e241", "SHA3-224 29 bytes" },
     1498        { &g_abRandom72KB[0],        30, "dfe98cb78941401a9c50fb87659cd6413a2cb13c7ff8ef0823553cde", "SHA3-224 30 bytes" },
     1499        { &g_abRandom72KB[0],        31, "d40afd915348f9b2fd9e6ada40d27859ca1efed9d795eef714f65809", "SHA3-224 31 bytes" },
     1500        { &g_abRandom72KB[0],        32, "2503528850f2f418c7bb029f507766d77fb5be193b66ed74edf24d6b", "SHA3-224 32 bytes" },
     1501        { &g_abRandom72KB[0],        33, "2c13b17427c015049e746cbece772caba6937adac3a5255166b032c0", "SHA3-224 33 bytes" },
     1502        { &g_abRandom72KB[0],        34, "d36fc360863705e3d1c22d1dfe7c3d369ae5445aa835e06046b06236", "SHA3-224 34 bytes" },
     1503        { &g_abRandom72KB[0],        35, "688909a2d656bdc79d9607628c13458668b4a68f418eee4ad40e3797", "SHA3-224 35 bytes" },
     1504        { &g_abRandom72KB[0],        36, "8564656691fb972b8d8462944c4fc95dfb815ead67402dd150310ad9", "SHA3-224 36 bytes" },
     1505        { &g_abRandom72KB[0],        37, "000e42152df4306c46fd86b64abc64061861b535e73c1db755873c92", "SHA3-224 37 bytes" },
     1506        { &g_abRandom72KB[0],        38, "5797e1b6e7738bcbea346d58ed7e82cdf4921c8c7061ad273a652fad", "SHA3-224 38 bytes" },
     1507        { &g_abRandom72KB[0],        39, "d9f70e175a6ec2b87fa53dccd8fe2fe662619d4227e79b020354a8ef", "SHA3-224 39 bytes" },
     1508        { &g_abRandom72KB[0],        40, "a567898565c10d9d233aabacc661b3b534f823ee9144a78b3538c29c", "SHA3-224 40 bytes" },
     1509        { &g_abRandom72KB[0],        41, "f9879abc1aeaa3b93465bf012bb0bca619994d1e38c5d9704a4c4737", "SHA3-224 41 bytes" },
     1510        { &g_abRandom72KB[0],        42, "a947c58c199a49cd27837c7df25bba6d4832eab3f6ad7825481439ef", "SHA3-224 42 bytes" },
     1511        { &g_abRandom72KB[0],        43, "496485839fdd5cc8dc0f0ce1973c2bde663723dfe5eafe539bd96599", "SHA3-224 43 bytes" },
     1512        { &g_abRandom72KB[0],        44, "fcea784f1428967cae93ae58716a1a7cde35ce3d295c65439a4f24ec", "SHA3-224 44 bytes" },
     1513        { &g_abRandom72KB[0],        45, "3a2e32058f0553e706fc1ac804931c809994598d86d74c3a00e88bf9", "SHA3-224 45 bytes" },
     1514        { &g_abRandom72KB[0],        46, "d964782b0fc1743a590efe7f42de8c3c44e8ddcd5a1b7bb343223d56", "SHA3-224 46 bytes" },
     1515        { &g_abRandom72KB[0],        47, "7e4c82f47d77ac4539d25e6fa122d70d2d017f96a971b108c190fa78", "SHA3-224 47 bytes" },
     1516        { &g_abRandom72KB[0],        48, "66393d6e347cbd37e81b3d0c43175ab2a874196bb051391d8ed75353", "SHA3-224 48 bytes" },
     1517        { &g_abRandom72KB[0],        49, "865e7ab710d415c2c291491891f0a076c6064863c49e483fa4e77b80", "SHA3-224 49 bytes" },
     1518        { &g_abRandom72KB[0],        50, "b495da95e14b544f0229788ee6b88dfc7c1b0e809b1c9f89884db075", "SHA3-224 50 bytes" },
     1519        { &g_abRandom72KB[0],        51, "9ce32908772904b4863513044646a89e69493cc6d5d43c3b07afa48b", "SHA3-224 51 bytes" },
     1520        { &g_abRandom72KB[0],        52, "da457f9a263e9b1b73130419c9be8eaa91d9c742b8965c4721fb3a1c", "SHA3-224 52 bytes" },
     1521        { &g_abRandom72KB[0],        53, "86707eb2d9e32b3241740d7c915cfa0216928eeca1c66e4bf61304ae", "SHA3-224 53 bytes" },
     1522        { &g_abRandom72KB[0],        54, "2ed6f9b614341b440107ac9743f202d56698757ec704d051b6b98c09", "SHA3-224 54 bytes" },
     1523        { &g_abRandom72KB[0],        55, "8c6c71dcd399cb83506b6cdf0d58bc07301e674e643fbd28c8510044", "SHA3-224 55 bytes" },
     1524        { &g_abRandom72KB[0],        56, "ee58b4581f368a8530d8c97f568d22d25710279044450d9616b3642e", "SHA3-224 56 bytes" },
     1525        { &g_abRandom72KB[0],        57, "bcfc035caa5b5604221a2eb4fb52ea14f362e719cde6de940409fe36", "SHA3-224 57 bytes" },
     1526        { &g_abRandom72KB[0],        58, "83e3508129d6891269e6e71f25a72143ea106ba6a03fa86fb394a7a5", "SHA3-224 58 bytes" },
     1527        { &g_abRandom72KB[0],        59, "7ac6956c9966581a9fb892c56e798e9fb0f5ef32f417daf015e50826", "SHA3-224 59 bytes" },
     1528        { &g_abRandom72KB[0],        60, "ae689e3347198b48aebc96178dddc52e35e6c54c3cee365e49e0ea69", "SHA3-224 60 bytes" },
     1529        { &g_abRandom72KB[0],        61, "0279f79ba33d32b8214c1133097b9f89fa659b77c44eaf166ed2529e", "SHA3-224 61 bytes" },
     1530        { &g_abRandom72KB[0],        62, "9b27f0538ac8fce31e123ae6ab2ca9569d3fc8e018b7e6fc1eb7c73d", "SHA3-224 62 bytes" },
     1531        { &g_abRandom72KB[0],        63, "7961cc0f6091100760f0b1e2d4db62969320fc1780092576d1dee5be", "SHA3-224 63 bytes" },
     1532        { &g_abRandom72KB[0],        64, "e5740eb1c2c611e2a75fbaf4375be8bb73fe5718d9fddc3bca889c5a", "SHA3-224 64 bytes" },
     1533        { &g_abRandom72KB[0],        65, "54699c4f043f96b065d04af21b8fc0ff21880a4f82c3c32d6a11c1af", "SHA3-224 65 bytes" },
     1534        { &g_abRandom72KB[0],        66, "fcd22829d13a6d7cec11876a1a376afd521c98d29363fd683a58e907", "SHA3-224 66 bytes" },
     1535        { &g_abRandom72KB[0],        67, "02dc82ad08e364cf2571c047de6ceb9cbfa4928e907484497d66fb3b", "SHA3-224 67 bytes" },
     1536        { &g_abRandom72KB[0],        68, "17156cb0b69423dac7e749db311abf4a706b16fee64698c6565e7869", "SHA3-224 68 bytes" },
     1537        { &g_abRandom72KB[0],        69, "42a22855ab3be53983f392f7cbd038164b0eb0d482bfcb4b9f2c3e70", "SHA3-224 69 bytes" },
     1538        { &g_abRandom72KB[0],        70, "0758abc06dcdf81cd6923f1d97246bf24e0bd50f43c4215fde41d25f", "SHA3-224 70 bytes" },
     1539        { &g_abRandom72KB[0],        71, "8fdc4d4d0ee58239eba5bbee83b9e06a3d35ecc45e7ef94428ac5766", "SHA3-224 71 bytes" },
     1540        { &g_abRandom72KB[0],        72, "831289ea7a65354937575adeba26668776640421c44f3619421054b8", "SHA3-224 72 bytes" },
     1541        { &g_abRandom72KB[0],        73, "17e7a1aa6bc9b5a4e6964801c119ceed987406d328902ee37accf277", "SHA3-224 73 bytes" },
     1542        { &g_abRandom72KB[0],        74, "0c79a923e2a3178808f6bb4215357990f5488fbb3793247af84f9bf9", "SHA3-224 74 bytes" },
     1543        { &g_abRandom72KB[0],        75, "c6e157824d65e3880eb35d6b97c26affaf49e323009ccbdf23ec91de", "SHA3-224 75 bytes" },
     1544        { &g_abRandom72KB[0],        76, "a4a2f31afe00a3e7ed111809ca4b36d24aff59fe9515908187c28f2b", "SHA3-224 76 bytes" },
     1545        { &g_abRandom72KB[0],        77, "a427e8644082b21109519306030dd62b48a3913f996b21039b46fb50", "SHA3-224 77 bytes" },
     1546        { &g_abRandom72KB[0],        78, "7d930aca6fef38522af10a132d146325cc30937ae9abb301605c350a", "SHA3-224 78 bytes" },
     1547        { &g_abRandom72KB[0],        79, "da75e1be010a756971d76da39015c34978c6295f77d01dbed4f39028", "SHA3-224 79 bytes" },
     1548        { &g_abRandom72KB[0],        80, "3541d7bce47da0d906fb90fb1d98610dacca9adf79d156337aa22683", "SHA3-224 80 bytes" },
     1549        { &g_abRandom72KB[0],        81, "f79c13e00d5836f6d047d84eebbeb0edf296f8aa72fcfa08b49efc5b", "SHA3-224 81 bytes" },
     1550        { &g_abRandom72KB[0],        82, "63ed5e252ca90d5f83c1f27ec8f658c488e4671a1b18c070d954e2f3", "SHA3-224 82 bytes" },
     1551        { &g_abRandom72KB[0],        83, "653a98bf1b4aed149dd9552aa9e9b5598d52fe6bf777f92e61df850c", "SHA3-224 83 bytes" },
     1552        { &g_abRandom72KB[0],        84, "c685ef068ea79653eb9deb7eb19616421a1a32ad11bd7ac4a3e76bde", "SHA3-224 84 bytes" },
     1553        { &g_abRandom72KB[0],        85, "53d01a556bce8d05e6ead02cd8376dea9abc73051d08165afa4332cb", "SHA3-224 85 bytes" },
     1554        { &g_abRandom72KB[0],        86, "b245082e59d780d00b2f26d99848808b467c8ca00aa9e9be7b6015e1", "SHA3-224 86 bytes" },
     1555        { &g_abRandom72KB[0],        87, "a43477d9ad4c176a2efb21b970e273270856d5fc212060142c03abaf", "SHA3-224 87 bytes" },
     1556        { &g_abRandom72KB[0],        88, "50d777f861dec127b5a1033f53c18ec3b42c3b7506cac20714f1b840", "SHA3-224 88 bytes" },
     1557        { &g_abRandom72KB[0],        89, "367c94e4553e21f893e50100eef0c73a9c4ece979f15feecffd7ae6e", "SHA3-224 89 bytes" },
     1558        { &g_abRandom72KB[0],        90, "f6b9bb09f5518ec01cc8f1dfa8a15f3956a40699eb306cbd8ee3fd2f", "SHA3-224 90 bytes" },
     1559        { &g_abRandom72KB[0],        91, "87e0ff97b08b82abf918775d9bfae231224046c94d17803ce2891708", "SHA3-224 91 bytes" },
     1560        { &g_abRandom72KB[0],        92, "8ff74e71ac81da91b9333d0da134573616180972656a5c78671eee1f", "SHA3-224 92 bytes" },
     1561        { &g_abRandom72KB[0],        93, "cabd5597a76890d584d639652b3987c7ca0a66508b00d011cc439f8b", "SHA3-224 93 bytes" },
     1562        { &g_abRandom72KB[0],        94, "686774c4d9124325b9643a575964e09c51bd3bc24cb2cc42a9c5061a", "SHA3-224 94 bytes" },
     1563        { &g_abRandom72KB[0],        95, "9cbf2c98dad0ae73735f2cac071129e41ae2585776ded9e2d43d57cf", "SHA3-224 95 bytes" },
     1564        { &g_abRandom72KB[0],        96, "f53faed02f1dfccc0547af35da372774218e2504298a3bf80d05ed97", "SHA3-224 96 bytes" },
     1565        { &g_abRandom72KB[0],        97, "72cd564a08ba595c375197df0158c90b7358a047d6b8f6cf98315b2f", "SHA3-224 97 bytes" },
     1566        { &g_abRandom72KB[0],        98, "afa5d854d139ea9bb8d9ebb58cc593c4b4bea8aa0046427c77ffd5e6", "SHA3-224 98 bytes" },
     1567        { &g_abRandom72KB[0],        99, "fc81822a0155f881431c2432ec4caa9fd4c1ac739a03c30f8b320d53", "SHA3-224 99 bytes" },
     1568        { &g_abRandom72KB[0],       100, "25f2f31b98e6001329a8a5008d3f20479afea8a38a857b4c04c30090", "SHA3-224 100 bytes" },
     1569        { &g_abRandom72KB[0],       101, "7f86d0e097e022b180899413c99360872b733544cc3337172c85b2f9", "SHA3-224 101 bytes" },
     1570        { &g_abRandom72KB[0],       102, "d35db0d601a2e096cb6788a966dfd161ed8f5056ad0e0a7e1e9e717f", "SHA3-224 102 bytes" },
     1571        { &g_abRandom72KB[0],       103, "c5934041c642050bcff5ecc477cd03465a504497dd93f80be9013e68", "SHA3-224 103 bytes" },
     1572        { &g_abRandom72KB[0],       104, "518317aef82651992e5142570beffcdbc74ed18f4b8d594f0541231a", "SHA3-224 104 bytes" },
     1573        { &g_abRandom72KB[0],       105, "dc01a97914e9fa82adc76e1cb544e90d28a746a8e4922bdc3d8c45a9", "SHA3-224 105 bytes" },
     1574        { &g_abRandom72KB[0],       106, "4f38ae5d26757a2c945134106b29302286d252d97c8412e104698364", "SHA3-224 106 bytes" },
     1575        { &g_abRandom72KB[0],       107, "228bac7ab9519c2840485cd89abb6a8ce7168a6c7bada34aa67549e3", "SHA3-224 107 bytes" },
     1576        { &g_abRandom72KB[0],       108, "b4066bbd7b2e50f945bdd8975077ee1ad0bd5dd43ee6de168f5eaf26", "SHA3-224 108 bytes" },
     1577        { &g_abRandom72KB[0],       109, "848724ab14b37effa4f2de9eb7d509c4a67420655a8202aafc2245bb", "SHA3-224 109 bytes" },
     1578        { &g_abRandom72KB[0],       110, "9217bd598153cd6bbf121034d7fe57e461be564dc27096760932c9c5", "SHA3-224 110 bytes" },
     1579        { &g_abRandom72KB[0],       111, "c97bbaf7e7d2c884f8c11cefa049fbeda46385abb3cc3cfe60ee7025", "SHA3-224 111 bytes" },
     1580        { &g_abRandom72KB[0],       112, "e0157bab5712c11296e8497ebaa461eb1117434d849aac9af578259a", "SHA3-224 112 bytes" },
     1581        { &g_abRandom72KB[0],       113, "afec901dce2536c1b4d986816edfbff81ab5ab677cb1c5852de14947", "SHA3-224 113 bytes" },
     1582        { &g_abRandom72KB[0],       114, "c7ffc02bf2c055ee7c6d72deeb19a70538a4ec61845b8d5df16655e8", "SHA3-224 114 bytes" },
     1583        { &g_abRandom72KB[0],       115, "774d505a09932de66f66d20f2ba355cadf36fa143715c747834ebb8b", "SHA3-224 115 bytes" },
     1584        { &g_abRandom72KB[0],       116, "32bd91adeaa38f017696ccadda32445e65f76bc7abc73ebcd35a324d", "SHA3-224 116 bytes" },
     1585        { &g_abRandom72KB[0],       117, "27712acf5577badb6e87fbc519234b795ffa7ce509bc99665b0bc06a", "SHA3-224 117 bytes" },
     1586        { &g_abRandom72KB[0],       118, "56b83dbf7aa7d0b3162a6f0a667ba469370e9a648b59db643172649c", "SHA3-224 118 bytes" },
     1587        { &g_abRandom72KB[0],       119, "e6f35f53bf2df44eeff1dcb3549afa02e6dbec8febe17cd4417ba141", "SHA3-224 119 bytes" },
     1588        { &g_abRandom72KB[0],       120, "8c44941f21d2e863daffc5ad7faee2b5a79475496e95753491345a4d", "SHA3-224 120 bytes" },
     1589        { &g_abRandom72KB[0],       121, "1cb79d12f6eb093469aba8f0f3455389b09f8dd965d05a6cc06fdb21", "SHA3-224 121 bytes" },
     1590        { &g_abRandom72KB[0],       122, "6080d39958b1472f5f4e9bdfcf36df30e074603464a9a242857fbe3d", "SHA3-224 122 bytes" },
     1591        { &g_abRandom72KB[0],       123, "614920d5cffdc929efb38768ab8f6d940dc9488211c550d0526f3839", "SHA3-224 123 bytes" },
     1592        { &g_abRandom72KB[0],       124, "5dd2081e84d1946245e8a58f27be169d26c017fa9ed583c0f29555fc", "SHA3-224 124 bytes" },
     1593        { &g_abRandom72KB[0],       125, "cfe8e9b33a46812f82c6cd72908287afc40e9e77bb3a6cae670b4315", "SHA3-224 125 bytes" },
     1594        { &g_abRandom72KB[0],       126, "7d8d13b5e533456fd67e4b3a674a3c1d83218a77bc47cc3019cd4df1", "SHA3-224 126 bytes" },
     1595        { &g_abRandom72KB[0],       127, "b29f872062dfb9f40b1ae7b40d9eca735c5ec1e2de10f0eb393e638b", "SHA3-224 127 bytes" },
     1596        { &g_abRandom72KB[0],       128, "edd905ef5427ac92cbed887eedee28193cc6ccad967769f112663031", "SHA3-224 128 bytes" },
     1597        { &g_abRandom72KB[0],       129, "eddbb15b21c9edf478ff14c6cf99f5b1d82a92a91de38eaf8756f44c", "SHA3-224 129 bytes" },
     1598        { &g_abRandom72KB[0],      1024, "c200848e295665570e56cd995f51e58289e1e6398c9c9f326d757bab", "SHA3-224 1024 bytes" },
     1599        { &g_abRandom72KB[0],     73001, "95a8479d32047490841a03c0c2152554c40e4b470cac18777b96e245", "SHA3-224 73001 bytes" },
     1600        { &g_abRandom72KB[0],     73728, "1acd8a512e1ea38402b16ae7fb796d2a195106078b65a77f28d517a1", "SHA3-224 73728 bytes" },
     1601        { &g_abRandom72KB[0x20c9],  9991, "e2d5e6c023bb4a663c0958eef8b4ef4de953fe94d1b45c3cdc51fe8e", "SHA3-224 8393 bytes @9991" },
     1602    };
     1603    testGeneric("2.16.840.1.101.3.4.2.7", s_abTests, RT_ELEMENTS(s_abTests), "SHA3-224", RTDIGESTTYPE_SHA3_512, VINF_SUCCESS);
     1604}
     1605
     1606
     1607static void testSha3_256(void)
     1608{
     1609    RTTestISub("SHA3-256");
     1610
     1611    /*
     1612     * Generic API tests.
     1613     */
     1614    static TESTRTDIGEST const s_abTests[] =
     1615    {
     1616        { &g_abRandom72KB[0],         0, "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a", "SHA3-256 0 bytes" },
     1617        { &g_abRandom72KB[0],         1, "afcd9d4977b545e10872d720975b66368e9388866420da61b967d84d6791819b", "SHA3-256 1 bytes" },
     1618        { &g_abRandom72KB[0],         2, "b390b8f8ab7d1dd1570d9583c5536a09896836f78bfa6e146b2caa217fb03282", "SHA3-256 2 bytes" },
     1619        { &g_abRandom72KB[0],         3, "6714921795665b34839a95593f20981a85f0bd84d079baff97419d6803303b05", "SHA3-256 3 bytes" },
     1620        { &g_abRandom72KB[0],         4, "430bfb151ddae9b7c16e2ad9cbd33b6722ae1eda83f2b6bb6933e8fd3da56755", "SHA3-256 4 bytes" },
     1621        { &g_abRandom72KB[0],         5, "9cf2b6d2627900be1174bebf23e705664eb4c08904430daefe537c6493a29d8e", "SHA3-256 5 bytes" },
     1622        { &g_abRandom72KB[0],         6, "871549e51b212f4d63d0c7a55b13555ade1d73cd4002eb79144bcc4b97937cb4", "SHA3-256 6 bytes" },
     1623        { &g_abRandom72KB[0],         7, "ae27b315124cc7b003ab1aaf2c108591fe2f31f807ea1b970799c3598e101204", "SHA3-256 7 bytes" },
     1624        { &g_abRandom72KB[0],         8, "181674cc927edc7466c9408055d43a554448175edb5f3a3484a92c9d7344d81c", "SHA3-256 8 bytes" },
     1625        { &g_abRandom72KB[0],         9, "a75aae88c58895fdb97ca7e26121d73ee2ad76bf084bcb3d5d7663efed5d918c", "SHA3-256 9 bytes" },
     1626        { &g_abRandom72KB[0],        10, "1e7cc10a8cd646a063284960e443a83b36ca50d6c9429d0e4f2d098fbf20a850", "SHA3-256 10 bytes" },
     1627        { &g_abRandom72KB[0],        11, "e05c7bf58b23cd04f390fd805ebd11d5e4f373382dd3f4fc065e3b5d36986f37", "SHA3-256 11 bytes" },
     1628        { &g_abRandom72KB[0],        12, "362e87c0856768db0cde2c6a9edfc3ce513a021420d93b15669c18972ffbaa01", "SHA3-256 12 bytes" },
     1629        { &g_abRandom72KB[0],        13, "c7a99d13b7da44be0565b3b726ed8948e425ae1c43adbf7145c715c7f725f60a", "SHA3-256 13 bytes" },
     1630        { &g_abRandom72KB[0],        14, "0ffa1ed9b160cd0adc964f42834f6b18f65c6a5d12883594ad1b3ee53562585a", "SHA3-256 14 bytes" },
     1631        { &g_abRandom72KB[0],        15, "dfc04b284a6e4db24ab307700269b25b4400242c0dd4773b851d7c24106f9e3d", "SHA3-256 15 bytes" },
     1632        { &g_abRandom72KB[0],        16, "f567d888fec188b3a85600a4f31e3842e4b46fa3efad941b2e720f186a080e93", "SHA3-256 16 bytes" },
     1633        { &g_abRandom72KB[0],        17, "a6d07d11cb3d6de6976ba487892c50c9bb73fe234827b224c92c70a950eb955c", "SHA3-256 17 bytes" },
     1634        { &g_abRandom72KB[0],        18, "a494c5307e6210c405e990992ded702460a967e82e680d3c07db2a61a64d9565", "SHA3-256 18 bytes" },
     1635        { &g_abRandom72KB[0],        19, "5c6eadddcd686959bffd39d1311c4e9ea71ec63d532d87cba38136fb9c156db6", "SHA3-256 19 bytes" },
     1636        { &g_abRandom72KB[0],        20, "eef8fd8e01b47dbb4650f09e5306eb48a477e0f38170c3242e755f0bcc44d574", "SHA3-256 20 bytes" },
     1637        { &g_abRandom72KB[0],        21, "c93e8811b3e7a2409c96d4a738c2c20658cc7740d971e9c7d12044bdd9abad81", "SHA3-256 21 bytes" },
     1638        { &g_abRandom72KB[0],        22, "6c78e40e3f570e4e7ff22b47f4cadee3f0007aafefff83e42d04cec20b4d9de5", "SHA3-256 22 bytes" },
     1639        { &g_abRandom72KB[0],        23, "ef35d85cdd3b7e0cf364c3d19d28a3c6e187052a92a4085e014b5b89b1a94e18", "SHA3-256 23 bytes" },
     1640        { &g_abRandom72KB[0],        24, "1e6d74bfd46200dbb0ba76c536004118da36350a8fabdacdf33405e969964d76", "SHA3-256 24 bytes" },
     1641        { &g_abRandom72KB[0],        25, "a03c0e30ec83406b0a9987cf9d4355b45f26a9f97190df193886d576e335cd0f", "SHA3-256 25 bytes" },
     1642        { &g_abRandom72KB[0],        26, "8df121000eb2c38c9cab237e8e098b6e021ba6ad514da55ca1c1a62f8caaaa9f", "SHA3-256 26 bytes" },
     1643        { &g_abRandom72KB[0],        27, "568b200871d9586bad5912369703c0e89954e063246ca7a778e1ce5e33794302", "SHA3-256 27 bytes" },
     1644        { &g_abRandom72KB[0],        28, "e84cb03accae1b85e27bf7ffcf25c88902a911478823c37713ab2b9aedc79a67", "SHA3-256 28 bytes" },
     1645        { &g_abRandom72KB[0],        29, "94df7a85582b1ed59724d0390851e7b2bf62b99dbb2b03ce0edb660003469a31", "SHA3-256 29 bytes" },
     1646        { &g_abRandom72KB[0],        30, "d8b23f6aecc5824335c5982aa9e02157d97ce719e416184bcc86e101b9c196b8", "SHA3-256 30 bytes" },
     1647        { &g_abRandom72KB[0],        31, "93a281f2175a8da699e0822f8b5ff64035a40d1d3f7de4d52eebca43bc793f87", "SHA3-256 31 bytes" },
     1648        { &g_abRandom72KB[0],        32, "f61d85fc0c2bb5df6992d3c06ee0104be88d8ad9ed4a3d76dd2dd1e8600bbe78", "SHA3-256 32 bytes" },
     1649        { &g_abRandom72KB[0],        33, "eeea3fc3344187d0fc85a2e92d4bb30ac60ab71bd04ef8dd26b6de2821af3e5f", "SHA3-256 33 bytes" },
     1650        { &g_abRandom72KB[0],        34, "5606fae500a3d14548ae4d87ac76cc5b039b430db2c52e85838f3752f90899ab", "SHA3-256 34 bytes" },
     1651        { &g_abRandom72KB[0],        35, "698fc06075518e6bc6ae19518fef105536693ae66e449ae1654737f74d7be978", "SHA3-256 35 bytes" },
     1652        { &g_abRandom72KB[0],        36, "d14d4e67cca9eecda54e575ac70189fcba7ff6a192baec5ed1b49cb31f0798c7", "SHA3-256 36 bytes" },
     1653        { &g_abRandom72KB[0],        37, "26e139c6ee4441251e88fa9140494630dc1330e5986638fd358a1cc43222a1cd", "SHA3-256 37 bytes" },
     1654        { &g_abRandom72KB[0],        38, "22264dc5858425ef089803019321a6e892f7d65e8290ec9d1d14950c69e57ff9", "SHA3-256 38 bytes" },
     1655        { &g_abRandom72KB[0],        39, "a5a7f8b33538b0fd66efa56656801a61f97c12d6fdf145c6a121eb03417e9e69", "SHA3-256 39 bytes" },
     1656        { &g_abRandom72KB[0],        40, "32f01debb886b3792de6be774be4ad24fd29aa023aa73a79912ce2dbe58213ee", "SHA3-256 40 bytes" },
     1657        { &g_abRandom72KB[0],        41, "6db83652a8ace783bf009cc45699e13eaee316554ea746c4ed75628e69698b54", "SHA3-256 41 bytes" },
     1658        { &g_abRandom72KB[0],        42, "af81c002afaa1ce4c06728cdacff430598c434ca7e019b5cc783965d881b257c", "SHA3-256 42 bytes" },
     1659        { &g_abRandom72KB[0],        43, "c3d030e8dcc15924f60982e353c1c59079fae57a42fb064b979c5da78ff1fc5b", "SHA3-256 43 bytes" },
     1660        { &g_abRandom72KB[0],        44, "d33b4edbf75dddcacaf2a547714a934cd001eb9ecd5a2a7f4633ba2868ad5d04", "SHA3-256 44 bytes" },
     1661        { &g_abRandom72KB[0],        45, "a7fc1974dd18dad78c5fe4b649a3e634106f0ea2e8fd1a5488cc9e395618e5cf", "SHA3-256 45 bytes" },
     1662        { &g_abRandom72KB[0],        46, "269fafc4016c68275994c6a48411fa06e97e754374f79084f81a6a3b2afbe2a9", "SHA3-256 46 bytes" },
     1663        { &g_abRandom72KB[0],        47, "d2e95c6b46381bf506af9845af4ad5c34b0a046c745e80a1eac9dbd20ce7464a", "SHA3-256 47 bytes" },
     1664        { &g_abRandom72KB[0],        48, "35024a13cf9b8487e0a1c76815cf085beef986509a07ecb179ebb73db727e999", "SHA3-256 48 bytes" },
     1665        { &g_abRandom72KB[0],        49, "d4012893df1482cdf74dabc4b3394395e9eb11d638e69818c14bb6783575112d", "SHA3-256 49 bytes" },
     1666        { &g_abRandom72KB[0],        50, "b8e4231b19c6ceb78c07dca93131d9dcae75dc263ca5bb00fa857b3863b21ee9", "SHA3-256 50 bytes" },
     1667        { &g_abRandom72KB[0],        51, "f831e375922ceafd5478a277e2c35cef17210a941dc82266e3e0b29a08ece983", "SHA3-256 51 bytes" },
     1668        { &g_abRandom72KB[0],        52, "d54c127b8fd298247c6d31afb17b2849e63b8931527d687e3fc71dd22cd4463d", "SHA3-256 52 bytes" },
     1669        { &g_abRandom72KB[0],        53, "54ac308411c45e3a3b921e027bf4a64d738bcae1aef174cc28fedc5d9e10807f", "SHA3-256 53 bytes" },
     1670        { &g_abRandom72KB[0],        54, "17dd8c4ebba743005f76e97ceab0632ee39b85e4fcf143b343e2ecd159bd9284", "SHA3-256 54 bytes" },
     1671        { &g_abRandom72KB[0],        55, "258e0ff160dee3cfb01c9db942b7cc43388ca4459873251a8f1963ee0d85b4dd", "SHA3-256 55 bytes" },
     1672        { &g_abRandom72KB[0],        56, "0d5dddf6e30c93f508b34987c2747b32d5dad3ea222bf03147fd483a9c65329f", "SHA3-256 56 bytes" },
     1673        { &g_abRandom72KB[0],        57, "01d6132d90233f2b6ae40d4881ef2cb5d908283fcb413482759aa89a14d45374", "SHA3-256 57 bytes" },
     1674        { &g_abRandom72KB[0],        58, "1416bf31ac8140f47135c78ad9ceb01c84ce8c31330c63846cc4234f982d1335", "SHA3-256 58 bytes" },
     1675        { &g_abRandom72KB[0],        59, "5605bb41089bccd61bfa9b4dbbb87043f501a5417f3d93f515693f29ab0701cc", "SHA3-256 59 bytes" },
     1676        { &g_abRandom72KB[0],        60, "108bcf872c5b226c70b4323d1ad61f60a94b2fd1e002c96c4f592cf5f0cc95a9", "SHA3-256 60 bytes" },
     1677        { &g_abRandom72KB[0],        61, "1b0339f2b871802a7a7038cf8825192f84346ee55c04deea5db87f98648c19e8", "SHA3-256 61 bytes" },
     1678        { &g_abRandom72KB[0],        62, "52a82b911a628797ed8071c41a349e09be92b49320b360b2a220dab8fb923d55", "SHA3-256 62 bytes" },
     1679        { &g_abRandom72KB[0],        63, "b043822070550ab5a18340c950bf5676274b4442c770ef5c4301d25b5307cfb4", "SHA3-256 63 bytes" },
     1680        { &g_abRandom72KB[0],        64, "d57eea9e407e20c5a5af4bef5319330c2c06a936bf9d6943ca3cadf3e276c30c", "SHA3-256 64 bytes" },
     1681        { &g_abRandom72KB[0],        65, "e6a1a67b5c72926a91316c81f78e60cff33d90d78f5772b7324a99926d01721f", "SHA3-256 65 bytes" },
     1682        { &g_abRandom72KB[0],        66, "6eb286ad53f1b84d24eb69b4350368ca6630fb381c9f9915442b1fcf0dbad04c", "SHA3-256 66 bytes" },
     1683        { &g_abRandom72KB[0],        67, "ac9f8eae18862b36df72387d31b713fa0c38040e13496f1743081ebd36847cfc", "SHA3-256 67 bytes" },
     1684        { &g_abRandom72KB[0],        68, "1b083e91d0d67d491fe71f87429834606758602a1f3b3a8c6ff9d554fac19d03", "SHA3-256 68 bytes" },
     1685        { &g_abRandom72KB[0],        69, "c3dbdcbad247ae031b7dc1f5800b8857d2a7038f582cd530a8dfbb4634c32322", "SHA3-256 69 bytes" },
     1686        { &g_abRandom72KB[0],        70, "604dbd1b9f6c3a9fcb598ddc9113ef1cc4e38f9f711f1ed6444f71b286a507b3", "SHA3-256 70 bytes" },
     1687        { &g_abRandom72KB[0],        71, "bf2372cbc8fb128c2a4ac54e9acc51c37f73a8d64994f62924cae9c60a9724e9", "SHA3-256 71 bytes" },
     1688        { &g_abRandom72KB[0],        72, "b27584e3b982cd937b73442e9b1626cd7c5e305a2f6d0a5aee11d6a2f1d49f20", "SHA3-256 72 bytes" },
     1689        { &g_abRandom72KB[0],        73, "40caa6117a773cd12bb121a6fcd15015548a7273c0b02bdbf411cab4fc1004d3", "SHA3-256 73 bytes" },
     1690        { &g_abRandom72KB[0],        74, "4e92df398fd4372832411aad4cc97607b56437c41454381a1448052fa951cda9", "SHA3-256 74 bytes" },
     1691        { &g_abRandom72KB[0],        75, "47bbe0d5cfb501764956def15b83c8a8a29f12c20d1e0f50a47226046fd5e2e1", "SHA3-256 75 bytes" },
     1692        { &g_abRandom72KB[0],        76, "905bce96097d868e7b52c77df101afb9003ccd158603cc87c2e73d3aa3e7089b", "SHA3-256 76 bytes" },
     1693        { &g_abRandom72KB[0],        77, "fc69a2b6c2640d657bd9bfcf4d578078dcb13521be073eca0f4c3690573198ea", "SHA3-256 77 bytes" },
     1694        { &g_abRandom72KB[0],        78, "4f6a2ac1ef0ad1a065f48aebd20a13fa1e531f5f0d413fbdf95affe066186eb9", "SHA3-256 78 bytes" },
     1695        { &g_abRandom72KB[0],        79, "57ac8ba842322f02b01d8f0e59a8ffaee945d8f2959712c9a3756b84a40a4a74", "SHA3-256 79 bytes" },
     1696        { &g_abRandom72KB[0],        80, "57870b5575b8849dbcdb16f69c8ad47161f84052c92267b5f24b07a25681aecd", "SHA3-256 80 bytes" },
     1697        { &g_abRandom72KB[0],        81, "ae26a9496fec4d6caa862ffc8948f8e70bd5c59f23b6ce7594a0a2d43a554665", "SHA3-256 81 bytes" },
     1698        { &g_abRandom72KB[0],        82, "21f2317c9c6e10396b03f98696a6c060289323afde658c44e1943c154d4b0e4c", "SHA3-256 82 bytes" },
     1699        { &g_abRandom72KB[0],        83, "d3a8a809aafc9852e44acd88f87a66b4376fa226e2c084ebcddd5a89b59aaa53", "SHA3-256 83 bytes" },
     1700        { &g_abRandom72KB[0],        84, "7222c4a3dc927db4f8b10c2d4b7c4a14315a73f344146f83781e5679e0a4386d", "SHA3-256 84 bytes" },
     1701        { &g_abRandom72KB[0],        85, "5e2bed3edf023680143d4c2ad0fa361e6d1f41842094cf4df908311b54529041", "SHA3-256 85 bytes" },
     1702        { &g_abRandom72KB[0],        86, "13adbdd8f6b753f3c32c896240f043834a15ded83931418f163b5c8201ecaccc", "SHA3-256 86 bytes" },
     1703        { &g_abRandom72KB[0],        87, "fd9c24db36b84a0054bb9f752663b5d5ca77bfff5441c6ceaa65948fc521826f", "SHA3-256 87 bytes" },
     1704        { &g_abRandom72KB[0],        88, "d05fc925bea2dc42d0b10a8100dc746dc7590bc4d15b6f4c0b4ab364d69a81d0", "SHA3-256 88 bytes" },
     1705        { &g_abRandom72KB[0],        89, "256f7f16eabc63b3a080c702737518060e83bf62169ec4f2d84febb1122031cd", "SHA3-256 89 bytes" },
     1706        { &g_abRandom72KB[0],        90, "cdc601dedb0627e8ba5b5a9e53230b8421c4776ffec7e53d0fee0adec104418d", "SHA3-256 90 bytes" },
     1707        { &g_abRandom72KB[0],        91, "c9cc24d55dccaf7b9e5b0de3116d8a25d9f564aab207a07b26c0191502bc1e94", "SHA3-256 91 bytes" },
     1708        { &g_abRandom72KB[0],        92, "f3994256c1745b761b929da74cdf987109b29ee5c3bd6436786bcfdb5358a32e", "SHA3-256 92 bytes" },
     1709        { &g_abRandom72KB[0],        93, "d2881b2c298c424e4e1a478f20f36ab8c55a24c79b9329104bafd024b12f51ee", "SHA3-256 93 bytes" },
     1710        { &g_abRandom72KB[0],        94, "5d2d97b27a328df73a1528d6d955bbae6498f6ef9f3364acdf1f7b83e4a6dee4", "SHA3-256 94 bytes" },
     1711        { &g_abRandom72KB[0],        95, "cfa103153e3746324df951b2d89ca1ccdee67e8e3d97a8196b2581ee3060668f", "SHA3-256 95 bytes" },
     1712        { &g_abRandom72KB[0],        96, "344e10910c51c9486caaaf7550f0687c4b6d5fdbaf66dfe67d6383844104e21e", "SHA3-256 96 bytes" },
     1713        { &g_abRandom72KB[0],        97, "e37ce426d69ed6c9b7acb78bda6a59c08ae1243d5a6cfceaa6adb78f3eca2b0d", "SHA3-256 97 bytes" },
     1714        { &g_abRandom72KB[0],        98, "5c9e2a53a2dd0098e62c47b4a1b22fb64004d65aeb0828030e33be77e828b273", "SHA3-256 98 bytes" },
     1715        { &g_abRandom72KB[0],        99, "5cd4c97198591bf91c6565429ed28f89e53815f7e4dad39be6a215a1c2c4cc69", "SHA3-256 99 bytes" },
     1716        { &g_abRandom72KB[0],       100, "ca908c8aa585538640742c2baa10785e4a5daaf128cc94087bd9f880344660f4", "SHA3-256 100 bytes" },
     1717        { &g_abRandom72KB[0],       101, "6011ab054563f201cdb70229cab8bf19372c47321c3d567af535315c08b6f341", "SHA3-256 101 bytes" },
     1718        { &g_abRandom72KB[0],       102, "99e6a8b95d22e796368f48752b49e2c1760629369e8c1d2fd273bf2b81b7b1c4", "SHA3-256 102 bytes" },
     1719        { &g_abRandom72KB[0],       103, "f708c03570a45f25b9abc9764d7b974fe9fe97b0a418194eaa5003eadaa6d428", "SHA3-256 103 bytes" },
     1720        { &g_abRandom72KB[0],       104, "84619f8a92cbbedeaf50712874f228ad3cd9c9045aa60732a3555901ccdafe2d", "SHA3-256 104 bytes" },
     1721        { &g_abRandom72KB[0],       105, "31af9794fa3ad4614d34eca3727f19814db9edd74bdee043482a2d3ae5590368", "SHA3-256 105 bytes" },
     1722        { &g_abRandom72KB[0],       106, "0bf3834a655045ba00e2b0967a643bce3fa89fc2e5f201dcd5b000b52fad4cce", "SHA3-256 106 bytes" },
     1723        { &g_abRandom72KB[0],       107, "784acc66db73d12a8e49f0319db17e10a0667bafd58576076bd009a629dddf12", "SHA3-256 107 bytes" },
     1724        { &g_abRandom72KB[0],       108, "02f7c426f430b3d082ee899ca85112d3e5286f88bfe0e90f0c623634c7e03c98", "SHA3-256 108 bytes" },
     1725        { &g_abRandom72KB[0],       109, "b438b0781a78ef42a40f680f117b65a592128a197536d115e8b9ed9037f08134", "SHA3-256 109 bytes" },
     1726        { &g_abRandom72KB[0],       110, "6380cd9e9e93dbf931efdbf84ca60560b9d2d18b517485a0ae0199db55e830b2", "SHA3-256 110 bytes" },
     1727        { &g_abRandom72KB[0],       111, "de89367fb625762274b37f205a9318730168616c153400f2d3e6460e49b56dba", "SHA3-256 111 bytes" },
     1728        { &g_abRandom72KB[0],       112, "514a48d1734e4a4ba0d555a72fe48125efd7f0adba027ffa52c722a7911fa806", "SHA3-256 112 bytes" },
     1729        { &g_abRandom72KB[0],       113, "4ae2bf547fcd3610199b96431d634696400c9c139ce813a567da50a71037ebf1", "SHA3-256 113 bytes" },
     1730        { &g_abRandom72KB[0],       114, "84bc4a36d34c6637c470872be38154d31d493d9470b075a0383ddd28cdbe9eb2", "SHA3-256 114 bytes" },
     1731        { &g_abRandom72KB[0],       115, "b863d5691e4c89063e2c2851d992c7f5324ad62e79f68350bbaa8b0025e15f61", "SHA3-256 115 bytes" },
     1732        { &g_abRandom72KB[0],       116, "29a8b23a03b1ddba9a7bf2e95cbd8414ffe8dd20bef6c4895989bc5b98fe409c", "SHA3-256 116 bytes" },
     1733        { &g_abRandom72KB[0],       117, "1d89fe8bad953887b7e9b1d0f356f34b8c6f4961dcc27b634843ff7702635a92", "SHA3-256 117 bytes" },
     1734        { &g_abRandom72KB[0],       118, "60f5bc20e290c189677f4c91ce97a3334c21cda5196c670cd84c076518536f29", "SHA3-256 118 bytes" },
     1735        { &g_abRandom72KB[0],       119, "9ef5150c77dc16e8bbd04386ec076065dd5fb6d77af39e41740d861ad52f9bf1", "SHA3-256 119 bytes" },
     1736        { &g_abRandom72KB[0],       120, "235ebf0c8b52c19986e1a63ca0ef63e88e83343ccd286a09a8e893c9d2530707", "SHA3-256 120 bytes" },
     1737        { &g_abRandom72KB[0],       121, "27666c10e02ac3d3ab7a84a46b6e82edd7610403fdb4fb69527057d05531cfb1", "SHA3-256 121 bytes" },
     1738        { &g_abRandom72KB[0],       122, "5200ffb7dfb207ae1fd3dfa76ca47368f2f72895a4ae91eda4c226d059a28b5e", "SHA3-256 122 bytes" },
     1739        { &g_abRandom72KB[0],       123, "b04bf4eae46d4372ea481637a110c716aa2fe077adba5652ad195c58fe9bdb30", "SHA3-256 123 bytes" },
     1740        { &g_abRandom72KB[0],       124, "dc84dfefe157486e2f705a572af10f73a840f92a6eb55261a776966b046f7645", "SHA3-256 124 bytes" },
     1741        { &g_abRandom72KB[0],       125, "c7fc5d07ae481a3a2c70d7ac1df5973301f416ec427919a1cb1552a07e31ceb6", "SHA3-256 125 bytes" },
     1742        { &g_abRandom72KB[0],       126, "f155c1dd830afeff3964fae4a0944017b8557bbc3304a33e629accf0eb66dbde", "SHA3-256 126 bytes" },
     1743        { &g_abRandom72KB[0],       127, "d31cad30dffc49ae149d3cd369df776a58ac2f5d1deee03a869eb2e8ffcbb1c5", "SHA3-256 127 bytes" },
     1744        { &g_abRandom72KB[0],       128, "6c42f5ff3377b65bceefb5b16bd5048fd7a605b3c538b7215b1c7b6e0126041c", "SHA3-256 128 bytes" },
     1745        { &g_abRandom72KB[0],       129, "b7f894e617320ec30587f0b678f5cc6c238b6f94ef16f1e90935c4f41755acb1", "SHA3-256 129 bytes" },
     1746        { &g_abRandom72KB[0],      1024, "753ba264db6e163510a9f464b231a3eb9284d077f3785e527aaa4e33049f9e5c", "SHA3-256 1024 bytes" },
     1747        { &g_abRandom72KB[0],     73001, "7411763136254c7c9846ba64be8df5797da17d8412ab064f7a2b3ef669e138ea", "SHA3-256 73001 bytes" },
     1748        { &g_abRandom72KB[0],     73728, "8736966ca1364256f5db9cfc1803f3989f5e0a2517cead959788cfb34053ccbd", "SHA3-256 73728 bytes" },
     1749        { &g_abRandom72KB[0x20c9],  9991, "4f343c7135ba2023b9bc918e8926fd55386c9f7d33138cb31f30b89c00b22e5e", "SHA3-256 8393 bytes @9991" },
     1750    };
     1751    testGeneric("2.16.840.1.101.3.4.2.8", s_abTests, RT_ELEMENTS(s_abTests), "SHA3-256", RTDIGESTTYPE_SHA3_512, VINF_SUCCESS);
     1752}
     1753
     1754
     1755static void testSha3_384(void)
     1756{
     1757    RTTestISub("SHA3-384");
     1758
     1759    /*
     1760     * Generic API tests.
     1761     */
     1762    static TESTRTDIGEST const s_abTests[] =
     1763    {
     1764        { &g_abRandom72KB[0],         0, "0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004", "SHA3-384 0 bytes" },
     1765        { &g_abRandom72KB[0],         1, "351a6f908eae0c58a7bc6a9baff7778ffe794b2056dec37b5564fcdf5e5aba3fa7739c5032ad7e1fecb7b8764928f002", "SHA3-384 1 bytes" },
     1766        { &g_abRandom72KB[0],         2, "52805f0b7fdf522da3f138d3a1bef821b31383721eeb10de12d503d3359eeb491693cbb9cee4cdb0d3d21122b7e5c582", "SHA3-384 2 bytes" },
     1767        { &g_abRandom72KB[0],         3, "73c573da6e0fe95bf52c74ca90a840f2c7313e1551fea63ce4d52dcb3a1de4d6eaf93bd00e632646bcd073165b37e56d", "SHA3-384 3 bytes" },
     1768        { &g_abRandom72KB[0],         4, "f225dd6b5ca7551c90dd02e8b6cb2897de0d94e51f82122386cee7c9dcf626bd51fe221624a0e1c6f8670ca033ca211d", "SHA3-384 4 bytes" },
     1769        { &g_abRandom72KB[0],         5, "70e82b29ef43e63d66aa750afc62c9a7a50fafb43de8ad25ee2ec48d310a71fe36996cf01ec4a7d0b6eba74a2c9a7814", "SHA3-384 5 bytes" },
     1770        { &g_abRandom72KB[0],         6, "a987f80ad4dd0fd315529233a33233b34af4030e4a3be6ef27992d5e04ee1669a1c7799075a7cc514243f6a05e7b6303", "SHA3-384 6 bytes" },
     1771        { &g_abRandom72KB[0],         7, "b80eb8e14d5a0547c7296376d08af26b3b9bdb4366b355408ad2e8f869a312006ef5489208cad08374c36879be01e54e", "SHA3-384 7 bytes" },
     1772        { &g_abRandom72KB[0],         8, "ab74e8ee36754243b7261d68f82956a70c0e4b3e2a98579b92ebd1c9123c37907760012a8bca8da41ed6bc60c1dcdd5e", "SHA3-384 8 bytes" },
     1773        { &g_abRandom72KB[0],         9, "2d48b90f6b595fb44cccd5926d4877f0a4a31a9d3055d57435ded8fdf97e2b235db849a73406aa8a02708f3fafd94670", "SHA3-384 9 bytes" },
     1774        { &g_abRandom72KB[0],        10, "7540111d23ff8305deba8c60a739da70ca0e78e57a9fe07075f9bca229a13fbec6329916ff4697e7bcac9dc148738791", "SHA3-384 10 bytes" },
     1775        { &g_abRandom72KB[0],        11, "31a3fdafc1a057e487d40cbd5e65d8152d90cfb7362707a2f374851beae1e42f32755001d96848e728afe3cf88a5dde7", "SHA3-384 11 bytes" },
     1776        { &g_abRandom72KB[0],        12, "3f581f6a75f2cf5702a879a3beb2b424e40c066c1bac767d8cfdcd2d4b967f52cfa3d0f7e47b7bc03a50c75ce56080a6", "SHA3-384 12 bytes" },
     1777        { &g_abRandom72KB[0],        13, "ec49f22fc85a6b813f7222c9799e9fc220838462e8948ff46ededd73b888c874f0ddeb2a85dd0c9c3a848f822be06522", "SHA3-384 13 bytes" },
     1778        { &g_abRandom72KB[0],        14, "bae3eb3815b0eec7f834292a21d5de705657a9345e7029599758e509ef2c0fbfc35c13a2c88605d505373a213fc4e37a", "SHA3-384 14 bytes" },
     1779        { &g_abRandom72KB[0],        15, "75bf52c9a95f795a97571e8734c368d023b850dbcae9e33f38b7135a941675914be511e8a3d49292e2073ea7acd1ccb8", "SHA3-384 15 bytes" },
     1780        { &g_abRandom72KB[0],        16, "ec0d76053f71ff3c78f3a35161cc50e90515398597d265f80f0519beec5829783874453661d6c5387fe6b92b63948060", "SHA3-384 16 bytes" },
     1781        { &g_abRandom72KB[0],        17, "75bff0a4214cfc36fdcbf1dc4a156a1ff014c8337b63a97cf4a95edf0ff940e31820e5b618261fb93ad506eec600518b", "SHA3-384 17 bytes" },
     1782        { &g_abRandom72KB[0],        18, "08eec95e0109eaeb5a152e43a96dc4568c02580b0da6f4772dfbb6b93a6fec38db201597ea5dc9cc64c39c190dddb671", "SHA3-384 18 bytes" },
     1783        { &g_abRandom72KB[0],        19, "0797dd6277689061f5590cfb6fc2331c0f0e6d197301b1ffea2b1d87d5bb146cbed54de3dd907c03bf36c2d66b09188f", "SHA3-384 19 bytes" },
     1784        { &g_abRandom72KB[0],        20, "0976f1e66c6e22ac5c42bce96f6fcd0f80ca2c1360ac55d22be5b65cb042a0b226b9c69c38a8221ff9ad15468af3d114", "SHA3-384 20 bytes" },
     1785        { &g_abRandom72KB[0],        21, "efa2a237fa24bfa349f026b49e38243b18dc9a67ab812c802115bf4be4f4d2d38f8982ae17fe2b95e429ead2617b81e2", "SHA3-384 21 bytes" },
     1786        { &g_abRandom72KB[0],        22, "c8fd4c651d40550fa11b25b2e5beb4c82e0b8deb35cbf15774a60ccb59c1e49663ce003d9b9b716ef55e7e9f9698c4a5", "SHA3-384 22 bytes" },
     1787        { &g_abRandom72KB[0],        23, "a3ff1d39e935e7ad9db2006f407aae652101684046d05933a6625e9b41f11365754f79bdeb8c448aa186994360fb5d8c", "SHA3-384 23 bytes" },
     1788        { &g_abRandom72KB[0],        24, "ef3a883129fbe6a3a484c1cf402d6ac4bfa403d9976940643a4e3d3d0aa08dad6f2f1b129b95d9509db392ac1783db4a", "SHA3-384 24 bytes" },
     1789        { &g_abRandom72KB[0],        25, "c38974c59f2d39826f277358aaffd08d96e9a17057b7040ffa996dc0ae9b3ee2c8f99a40de8b14da6668cd48bd290ae4", "SHA3-384 25 bytes" },
     1790        { &g_abRandom72KB[0],        26, "e4342539692f426b15dba992704745e685b1df1442b63c2e23efd725e3fe2580982106af450d640f8fd53dc6e21cd666", "SHA3-384 26 bytes" },
     1791        { &g_abRandom72KB[0],        27, "c0f7bddf4ce882387d733ee4bb61c55f7e85066c13e68bde2d457b6734dde13c1d2970aa24ab1fd9d755f2a4534ad72c", "SHA3-384 27 bytes" },
     1792        { &g_abRandom72KB[0],        28, "66d1e453556618070cdf1d27364296ea8f12b64986250b4dc3491da2c9908c15d3eb731e48d77c9a2ff5ff985312e750", "SHA3-384 28 bytes" },
     1793        { &g_abRandom72KB[0],        29, "e1ececffae0e3e58d2dd4e834edb6365830e28c1fa37046c2368fc3c7a1adf5da4ec9437a9b526db1834e53e409764bf", "SHA3-384 29 bytes" },
     1794        { &g_abRandom72KB[0],        30, "b86f6e5485cd773ac37ed59a06e44d2f68553f2235695988024b84d9ea311db1634124a23021d9879d70f3104ba92bd5", "SHA3-384 30 bytes" },
     1795        { &g_abRandom72KB[0],        31, "853e6213578f7324056b05eec706c976346667051b50ea4f7dbfe8a3752a40c93af76e517b4ae3e849d50b2c41d06b42", "SHA3-384 31 bytes" },
     1796        { &g_abRandom72KB[0],        32, "8d12a1665736d1f197de900387597965701029b3c898e3b4cbe81fe3838b457c9116eec6fd3ede7baa5aa88509af42e1", "SHA3-384 32 bytes" },
     1797        { &g_abRandom72KB[0],        33, "c014fcfa6c0c02f83dd88a2be34f57ef5ba711319f974468a3835b36dc65c8c2a1a6a9f7a58c068d57807228989c64d8", "SHA3-384 33 bytes" },
     1798        { &g_abRandom72KB[0],        34, "d82b000e22fd142f9bbefe67514f05b8b3a59fac3c393a335f12899ad8d60445dfe644c7638e164d08acfe6ebc1477d7", "SHA3-384 34 bytes" },
     1799        { &g_abRandom72KB[0],        35, "6fe7de0e226cbfed362b33f3f2281ec3943a7caec2e824829c24f23a31e3fca9d9e375f55d6a1f64d7b495a4be652bd0", "SHA3-384 35 bytes" },
     1800        { &g_abRandom72KB[0],        36, "b5c28e85b4ce16b6fa15e08290910941e7a3e6db49debaaaea4ac1616e38362daa73974a88b7e058738608f8f7e850f2", "SHA3-384 36 bytes" },
     1801        { &g_abRandom72KB[0],        37, "3a1f8c9a52272e8b167d7df37a40b470820b5ae455b89290740fc02085212aa6e56f874edec5c9026a933a21c4e5b249", "SHA3-384 37 bytes" },
     1802        { &g_abRandom72KB[0],        38, "d1c1b8aa38cb26a57cc31f9e4409a9fbde4f345b85c1c5d0b5237f61aeb9e19aa676b3a58abf5a484d66b83cc7635220", "SHA3-384 38 bytes" },
     1803        { &g_abRandom72KB[0],        39, "81cad2561d80d5278635f1ecccf7e60550fb1276041c18e386fa78392106c000c5f946b0963f176b920f8ed5b2d51e88", "SHA3-384 39 bytes" },
     1804        { &g_abRandom72KB[0],        40, "18d87d1e74d4eedf4ba7816dbc4d0249f69869d4d2a73af5558b7678179344ec89dd3afe4b71171ffe43fcaeed6f6780", "SHA3-384 40 bytes" },
     1805        { &g_abRandom72KB[0],        41, "be04c4f1b70fdbb8741b9f1fe3712e60b56ac1cc3d157856e7dbaa47d0dab9c9ed3677bbd5b38deeb89c805befb00b2f", "SHA3-384 41 bytes" },
     1806        { &g_abRandom72KB[0],        42, "945c8c93784f3bbdb625866bdbc506e20bea661d87de978005a97bf68178c55a4faac033f38d0231cf35af57c3b13c23", "SHA3-384 42 bytes" },
     1807        { &g_abRandom72KB[0],        43, "3c2fff20cc9405f022d4571d30c9cbf2768dc48e95d8eefdf16bd1f5a6d07027baa0a898245dda935efd01226f239fcd", "SHA3-384 43 bytes" },
     1808        { &g_abRandom72KB[0],        44, "9fa1bae02937e2799e4c053814203391991e9492217166c5d525c245f1f898d86ac0c93a6aab4c26159004be867e108b", "SHA3-384 44 bytes" },
     1809        { &g_abRandom72KB[0],        45, "3d05fc09ec76cad99b43b9576d44d4852dbf26a58c7ae6af2d4f211493ff8ce3b6da71e05e60096a8f7d23b9acc795f2", "SHA3-384 45 bytes" },
     1810        { &g_abRandom72KB[0],        46, "54650f8665809f950b92cd1449ed63633d96dff84b349cbca281dc7547d2c2ae554decf114fe32c066608c27553778b1", "SHA3-384 46 bytes" },
     1811        { &g_abRandom72KB[0],        47, "6122ab61add284f058ee45f0aaa209813e0b6503f907259a968e0b0fd706b6bcdd376a37a62e3dcb31e2e5a45e940522", "SHA3-384 47 bytes" },
     1812        { &g_abRandom72KB[0],        48, "5e2aa542591d5148e2b975c41e606de6877ebfcab832a89d4781a91688e76b5a2f30d6d289521d06363c1321975d1cf2", "SHA3-384 48 bytes" },
     1813        { &g_abRandom72KB[0],        49, "6dd1d9bbe2cab7d4ba8756a18a5978a3ab54eae07c068be07d6eb0ebf61f67a810281acff3df609821eb998699156503", "SHA3-384 49 bytes" },
     1814        { &g_abRandom72KB[0],        50, "dafa71cf50e1f80e6200b2280ec2a70fbd820783817ec40d811fa0d7dcd3ca80242d374b11b6c43497f943e610135b97", "SHA3-384 50 bytes" },
     1815        { &g_abRandom72KB[0],        51, "2839c75d8751796c680b9be0029eb3395835f87e653625c9954d161cea78c18d35fb96545ed71f8793cdc5153f3462d2", "SHA3-384 51 bytes" },
     1816        { &g_abRandom72KB[0],        52, "899c196d598401a2167ac88e452f76f1d78f039b4edee7e3f0d55bb6c877afa280667d0c6fbb74f6e4138aa6acd417aa", "SHA3-384 52 bytes" },
     1817        { &g_abRandom72KB[0],        53, "03c3d35a19b5f93121851a3aaeac2047c66cd128f55f7cd81eb6f55c79244571f10e0660e9c8f84408b93e3fb7212b55", "SHA3-384 53 bytes" },
     1818        { &g_abRandom72KB[0],        54, "016841b49625dd79f166ed9e9d0ab6628dc20a45ec41edecf8aae506db8059b51a81379ead0347e02f752839d947e8b3", "SHA3-384 54 bytes" },
     1819        { &g_abRandom72KB[0],        55, "b0873afe8b3b4cb37f34b9afd56bc9c879b58438f2dfaab09c6dc7490285db4a9f8261dc2dec9fb7a9b0ec79a663dfe9", "SHA3-384 55 bytes" },
     1820        { &g_abRandom72KB[0],        56, "bdbbac0fe4dd5cfc6a7b7f4bd8d7d4dfea2963ffa7fc5e3d87d71943b9140b65b36db9b91d512ef37031be3f173e45d5", "SHA3-384 56 bytes" },
     1821        { &g_abRandom72KB[0],        57, "c5205b3182b49ef264f97e1fb04dabe0f6c83409799f77d29713771f4335083e0ebee42b66694913c62131149dbfd34b", "SHA3-384 57 bytes" },
     1822        { &g_abRandom72KB[0],        58, "9324d23c2d96c321e9844808afdf82aa9dd2a13d6f850fa20abc942c77e4628f3632dedb25bdc2a7de81e34d0a683781", "SHA3-384 58 bytes" },
     1823        { &g_abRandom72KB[0],        59, "99017701633107f973e51c25d11a5fa3a05138b079901ba9a3ab2150658bb37ddffedbbd66a9788c87e652c0a16ff963", "SHA3-384 59 bytes" },
     1824        { &g_abRandom72KB[0],        60, "a336e96a7e06f6acc63c9f39a89689e71db54a28e69ffb58b88f97b5422be0b95bfc75105a0baf0d0c88ddb5b9b42b27", "SHA3-384 60 bytes" },
     1825        { &g_abRandom72KB[0],        61, "da0bc2c07c2e5d7aa461f335be8df794e13a696a53dd1be654ab3b15edf4289a36b7cd53a811b7366250ff3437b5b011", "SHA3-384 61 bytes" },
     1826        { &g_abRandom72KB[0],        62, "1e7bc6ca22c38de4b3fd17cde00cd98273a04a3cebad3375544954ce226cf7fe49bfe9edbbb3d611a622ed7057049b68", "SHA3-384 62 bytes" },
     1827        { &g_abRandom72KB[0],        63, "9f12eeb4b46c504538d30ca7ee816ad44d2b2ec9287076ed5fba572663100a14223177545c97f172792cc5dcc121734f", "SHA3-384 63 bytes" },
     1828        { &g_abRandom72KB[0],        64, "d5c58d56e3bec6e7c3b99c2bcb99435ea523eb7b2aac01859d0ba496874a3fec6d7ab9b2c1581543ea19f3363e04e161", "SHA3-384 64 bytes" },
     1829        { &g_abRandom72KB[0],        65, "0261d01bb6498f01ad42cd7a624b4f7fbc4dc9bcb1ba4bcaf94084a4b9bd357819c4cf41a60a2e7d90414e3a10b3dfaf", "SHA3-384 65 bytes" },
     1830        { &g_abRandom72KB[0],        66, "b94a286367a68d69d4c77eeaa5b03cafc1209f5ce04b98f6218a71150420da2fa786d8b91ae4f20c320d380830466eab", "SHA3-384 66 bytes" },
     1831        { &g_abRandom72KB[0],        67, "83355d1f784c7c5f5e97cce9427006706720191ed729f576b989a136aed99eebd835d5c934df5094db8e01d3534bc349", "SHA3-384 67 bytes" },
     1832        { &g_abRandom72KB[0],        68, "26895ff45f1d409fca25c169528d880e811b0e2aa57891b783d9606695e040bcbe9b1ec5bfe697bf80711afb075849f3", "SHA3-384 68 bytes" },
     1833        { &g_abRandom72KB[0],        69, "44744ffeee86553383e311a2f3af39e6a6c0e699794af43be2fb69f07ea843b67cbef422ac14fcf23be79e2150e55e53", "SHA3-384 69 bytes" },
     1834        { &g_abRandom72KB[0],        70, "6d8e393588ee37529e989ef4250c5d4d00effcbbe089ac3ed44ee3212f03162823f264ed1ddb2241302f9e3addd438f7", "SHA3-384 70 bytes" },
     1835        { &g_abRandom72KB[0],        71, "1717d8e9793a0b624875dc9e68c36cf3abc0164bfa3e3d291e36663ca144d3298dffe668726e59984b12ff2c28c9c394", "SHA3-384 71 bytes" },
     1836        { &g_abRandom72KB[0],        72, "b67fd24f2684a0353f94e97041ae439edeabf9e8dcb8c2eacd01821085fc31ed9d2d46f678aaec2f12211ee8118d17e7", "SHA3-384 72 bytes" },
     1837        { &g_abRandom72KB[0],        73, "08fbad7996bacab84baaa84783c57be6144fa1e9306865f3157f59e60986c831c50d24ac67a8db1d957db7e98812809d", "SHA3-384 73 bytes" },
     1838        { &g_abRandom72KB[0],        74, "f7dbeb3e8eec8dc93c8f43e7531208a2bc6d6b18bd6bed67aaa81490bf1e334b926c750f254c9c0b1675d69f93612a4b", "SHA3-384 74 bytes" },
     1839        { &g_abRandom72KB[0],        75, "277012f450a023c70e75ef7bac78ce8a6241bda7f4d9f41261aa77625062654c949fa1642867be894eef4c967e4a3f5f", "SHA3-384 75 bytes" },
     1840        { &g_abRandom72KB[0],        76, "f21f4c2110e24f2df77d6d97e8dd2acacb172f8929b78358a9cd1c4826cac04f11b37b4af205b08c5be16188e4ba4e4b", "SHA3-384 76 bytes" },
     1841        { &g_abRandom72KB[0],        77, "d2ff0145b121a78743806a1af5f8fd054d5a0cf86272179754e05e498535fa05733c70b7f70d872429df35c3441c64ac", "SHA3-384 77 bytes" },
     1842        { &g_abRandom72KB[0],        78, "a728f1b1e30a286d31e8736b95284053f76b68367645bbe30f14838732c6b6d24aaef815a9bdc76fb86409c72ebeee2b", "SHA3-384 78 bytes" },
     1843        { &g_abRandom72KB[0],        79, "d509adc96cf2844b9c4df2008205c3a7b1ce8c2c071c225dc34c724eb79f961f29824f20d1bdc2ed9904822b9e7bcf5d", "SHA3-384 79 bytes" },
     1844        { &g_abRandom72KB[0],        80, "92872f5dd6f71ae3aadc4b717679893069ef2e9712d5b1ddb13d8ae70af58d5be0aed753b6e8a5264dbe37f424e848dc", "SHA3-384 80 bytes" },
     1845        { &g_abRandom72KB[0],        81, "00a8805d752e1e7a8c2eee08b7aad773e18e97bb22814189471c5faceaa0be093315c8ca74a5f2e3b847cae1cc521fc6", "SHA3-384 81 bytes" },
     1846        { &g_abRandom72KB[0],        82, "1c91d79d007353e898080e24ccb64d997b83590cc875ddc4e3e264ca160efeb731f04391197e9b3f135fc116461c0a1b", "SHA3-384 82 bytes" },
     1847        { &g_abRandom72KB[0],        83, "669bcf3fa978752a5b7b4199ce6cf5d876a3073519f3a73330f08b392b9aec6f0305ab52f99f634ffa293dbd852cb7c1", "SHA3-384 83 bytes" },
     1848        { &g_abRandom72KB[0],        84, "ac885cfbf0544756a4e6cd77270cfd66edf74dfd25a4f19181ee762a77895d93257193ca1a60000946b682b635ab6044", "SHA3-384 84 bytes" },
     1849        { &g_abRandom72KB[0],        85, "c32073b1b2cf925ba6ebd130a12b98e34826ef5669a5dc1fa8d3320d2533b27b9065e3565a8c0f8dff044421a9bc585f", "SHA3-384 85 bytes" },
     1850        { &g_abRandom72KB[0],        86, "793462351767807335b0844e6d4878b3ccfd4f594ea86ee111c642d19ef08427071caa3ea2d52a53293dd897c4ce9646", "SHA3-384 86 bytes" },
     1851        { &g_abRandom72KB[0],        87, "2287c449b17f68b63412faaf1d74148b86412ab77643dbe227a06327416b51e9b94116df822a52e0839c856c0cbb1ee6", "SHA3-384 87 bytes" },
     1852        { &g_abRandom72KB[0],        88, "6bc32f874a67eac1366456b704a4d0bd2fc611392f6ff339e8a5feaab217b101b827f89cc66647a1ccea4d739552e3d0", "SHA3-384 88 bytes" },
     1853        { &g_abRandom72KB[0],        89, "e322a1eb4c9d65cd25be405228cefabc757c49f1a1e954e6e2c218108449d5ebe5c444144e3d43c96d5736c4162a061a", "SHA3-384 89 bytes" },
     1854        { &g_abRandom72KB[0],        90, "678df2cffd333044f1dd056e257e2bbf99f0daa0f9ee5edcbe8e0c3bde8c9d5b3338939b8cd7de9039d24e873e3a34f6", "SHA3-384 90 bytes" },
     1855        { &g_abRandom72KB[0],        91, "f5487ff2ec0b0db09bffb7994749a76cff97424e5304ddfe650a19145a667e3ea5128b7455015be20b6fa950803299f8", "SHA3-384 91 bytes" },
     1856        { &g_abRandom72KB[0],        92, "a54f6fe4262eef9b24daf0cd9dcd5f49696f4b0b3fdfa7976c24faf04ea7242d65246844bdf9e774b2db9d134176fe98", "SHA3-384 92 bytes" },
     1857        { &g_abRandom72KB[0],        93, "025aebd069a29ff9145831843819875491a7833ecf2cbb9271f8b9075bc7a5601576706f47c45dabf1383aaf267e6406", "SHA3-384 93 bytes" },
     1858        { &g_abRandom72KB[0],        94, "6b3bee378866a5a886241343219459ca25c4092c47e8498632043f6b20a91d7d51a0fbfc92b75ff8d83ed81d1db8517f", "SHA3-384 94 bytes" },
     1859        { &g_abRandom72KB[0],        95, "02adf1f5edebd714c6b4717b212cad4ad80b5ebc0ea9cbee28b2eb2c16142001f829a42e789b56b05a39347afa962bce", "SHA3-384 95 bytes" },
     1860        { &g_abRandom72KB[0],        96, "2f2257518e832826e833619221b721af3940e053b3fdb493143372289aa9687ffa1f0ede725ebde6a46921f7fa25d0e6", "SHA3-384 96 bytes" },
     1861        { &g_abRandom72KB[0],        97, "1638dd76882713a5da153c466b2c8721432b9b1241cc10ea0e2c4f908ea562ef7db4257c7013e85c63b3451467f68f86", "SHA3-384 97 bytes" },
     1862        { &g_abRandom72KB[0],        98, "dc19989c29044e28ec9dc1a15c8a3f9b3ed428f1e24d7d311e399f42e6b9707e8d26e0b83f426944c92f3ecd9fc145fc", "SHA3-384 98 bytes" },
     1863        { &g_abRandom72KB[0],        99, "98fe06676c51ac2daebebc2541366bbaa44d7681b2606282d18ca62432adfba14bf3025657f45487a5e467d62a907923", "SHA3-384 99 bytes" },
     1864        { &g_abRandom72KB[0],       100, "633e3ca7c740c42deb29cdce84b146d403af6467240f414a01d70a01dec4ffefbeedb4fd7f87ea10ef17fa8e2f95839e", "SHA3-384 100 bytes" },
     1865        { &g_abRandom72KB[0],       101, "265fc450e8fe8a939c3d1c3c3adb57f0c2fab198419743249462b9587f963c5b15ebe917ee2870cd5b88b4a22892b2f9", "SHA3-384 101 bytes" },
     1866        { &g_abRandom72KB[0],       102, "c13be9e4720cbd2dec27b15e39cb348fd36278f09d4a809142256ff943c91400c911ddd685b029798103a07e27d13ea1", "SHA3-384 102 bytes" },
     1867        { &g_abRandom72KB[0],       103, "df4b85fac28b97c0a9530f3658b43861426ce9b7178e6d684a7a19e62527e65c7e02e6a21f70bda08cc7d77891cc1e7d", "SHA3-384 103 bytes" },
     1868        { &g_abRandom72KB[0],       104, "dc5d36d735b0db6ceadb6a89ee9fd71348fa92c6c8b6ff5122364e507f0850a8bca5de046dbaeb072ade79ab90ef6554", "SHA3-384 104 bytes" },
     1869        { &g_abRandom72KB[0],       105, "4405f031f7dc2bff4d4edcc19225ca48f87a6d26863293505a4750f08d37b8acb345e81eb7f3720da34badde724eb8a9", "SHA3-384 105 bytes" },
     1870        { &g_abRandom72KB[0],       106, "fc77e20166999b025d11dbfda2ada5ac55e79a13f5a28834c802af316d8d4dc1daabc884e9f4ac28ef71598c44632818", "SHA3-384 106 bytes" },
     1871        { &g_abRandom72KB[0],       107, "c738f15bed5c991816fece164170da1a13623d1ce841a36d03825f52da5b667b359efaea48d98146acfec23e2292c19d", "SHA3-384 107 bytes" },
     1872        { &g_abRandom72KB[0],       108, "05e12cfe915c8cacb57bf65a298f5257d5991af5276eb21d1a71e5209143fabd52ab18488c50d919dff840fb58f9f4ad", "SHA3-384 108 bytes" },
     1873        { &g_abRandom72KB[0],       109, "30d27e43a3e5c8ea5d246e93325768f578b00059b0c83ede760d591543512c58cd879283ec68907c6cf2786fcc51e422", "SHA3-384 109 bytes" },
     1874        { &g_abRandom72KB[0],       110, "ca8020c153045996c1db89b8a9d8715b87725af59d467d4647140cae82a976b911ca5be702119a8006f3c695dbc53133", "SHA3-384 110 bytes" },
     1875        { &g_abRandom72KB[0],       111, "b902694b31ae535f488ee74202348d3c2a69664f416b1751a009831b660a42584c9a13818da8223b4a597776d507becf", "SHA3-384 111 bytes" },
     1876        { &g_abRandom72KB[0],       112, "7a5b4a263964173138ac85fab23e69e3ee43754bc06a92d712773d78bd182642a0d7640bd1efef9f16dd5a3a4c11742f", "SHA3-384 112 bytes" },
     1877        { &g_abRandom72KB[0],       113, "04fe25a667631b12a421c0d059fd632c9f91050fa219307571c95f927f58838a67f92563a256737f0d0667964d6d044f", "SHA3-384 113 bytes" },
     1878        { &g_abRandom72KB[0],       114, "9253e185ad4ccbd6ad51bd4f9b15b972d187be7b13bec3af0830d4f38865c77726a52b0316b6d8b2fc90ace13b456325", "SHA3-384 114 bytes" },
     1879        { &g_abRandom72KB[0],       115, "d4379a4a6f2c5e13e945089d4d02b19d59e4b5f4566e74f491b5dacf6a3b10539daea4d13f53bfa3506ce6ad0436585c", "SHA3-384 115 bytes" },
     1880        { &g_abRandom72KB[0],       116, "a95251f8b89a5b45e61040ce0b6f9705b863f177ba7fec27f02cead8a7e1684ab3f9736fb4d6ac688937a40a1be791fb", "SHA3-384 116 bytes" },
     1881        { &g_abRandom72KB[0],       117, "61ce9c3bc8fd2d2500ae8f6694c66c918facd2cae77b50dc0247cc25e8f1bbdfe6b6d1e92a429dc9f844216e3b8acf17", "SHA3-384 117 bytes" },
     1882        { &g_abRandom72KB[0],       118, "763a1c60a5356ea751ff166e6e9f9a981af3833fedf127cf9db3df2cd4038ebbdbfce2ec6eb1e3a6825a8810d9706952", "SHA3-384 118 bytes" },
     1883        { &g_abRandom72KB[0],       119, "c93f6d4ffa7fca49127f0b3a85555e048bb8984f62f31303614d582757829917292da620a248cf482f18ab61d299e0fc", "SHA3-384 119 bytes" },
     1884        { &g_abRandom72KB[0],       120, "ea255bd5294daf26e46c36333d677a445269e0a5e1cef27a4123c120afb19a6c5ff9273e849c4e0ff41be657ce484293", "SHA3-384 120 bytes" },
     1885        { &g_abRandom72KB[0],       121, "4830fe904db9b4b17766a5fe346720259805e7e02798910c0134377224e4632af0e451e01f1e878554325e203d1650b6", "SHA3-384 121 bytes" },
     1886        { &g_abRandom72KB[0],       122, "99781b361e73d5eacb0dd02f2f87fe4a440b14942756aec6f8afbec276781315782bd20fee1fff2a4f2a77057d797748", "SHA3-384 122 bytes" },
     1887        { &g_abRandom72KB[0],       123, "470d3d508fc216e1a1e6b7d98646a01144175758421b0945e934d7b3fd43963fe61517d99757565868d4e94dbff56cfc", "SHA3-384 123 bytes" },
     1888        { &g_abRandom72KB[0],       124, "8a9c1715fe95519a8f5b3978c581840d0dd1feda450f28163b5c0497111e04771ce90b31d3c786075092d89c167e2007", "SHA3-384 124 bytes" },
     1889        { &g_abRandom72KB[0],       125, "8cfc174c8567f4a7cdc02b11db37dd915a28b3da8099f803a8440b6bf6b11bfd7afbc26b0c0edee50500ba26bd41eae7", "SHA3-384 125 bytes" },
     1890        { &g_abRandom72KB[0],       126, "fb89ee296bb8ce1ff1f787dafaf066aa0543bc154a7b2b5f395150e16d30dd9411fa9a455106e478119f7bf4f3445f04", "SHA3-384 126 bytes" },
     1891        { &g_abRandom72KB[0],       127, "02021f9486fdfedba2b51ea503922f2e4bbb5a0c01b4e0f4c5a7c4a22193c69333eb6f1b4496dc23fe0cdc3f09125cc3", "SHA3-384 127 bytes" },
     1892        { &g_abRandom72KB[0],       128, "bd0b400dd2869c5332a041e8d8264f445f2d8ffc727f5efa38745c5a81981af6acfec6b8287543bf8100aad7cdd0b375", "SHA3-384 128 bytes" },
     1893        { &g_abRandom72KB[0],       129, "9a5282d4d4993ac395462551adc75feb644fb97bf4ea9d5b582fdf98dc0e7b70f9b075d150d11b3c8960629ad46a4de2", "SHA3-384 129 bytes" },
     1894        { &g_abRandom72KB[0],      1024, "f1a46e19369d97b0d3e50a23690d25d95592647d118cf0433d309024d7ffc11a69e172bee516f4e69b4a855c05a0a69c", "SHA3-384 1024 bytes" },
     1895        { &g_abRandom72KB[0],     73001, "6ba059a8af7d72660261347867e5308a80ce4c41159237cf6aabdd03cd86fa9e38a9c93b37ea86c63afb7e3a61348355", "SHA3-384 73001 bytes" },
     1896        { &g_abRandom72KB[0],     73728, "e69e5ab83d5cfc56bd36fc256229344e74d50f04de6c0c6a94adc7ccf674fbbbf8f9694dc1dd958cb41f0a65a78fd8af", "SHA3-384 73728 bytes" },
     1897        { &g_abRandom72KB[0x20c9],  9991, "0a2f284b452e440815778749ce156a666178e771f27b06b44bf55dd10a7ddbdbd0e149dd1112fb61666812ac9a11b213", "SHA3-384 8393 bytes @9991" },
     1898    };
     1899    testGeneric("2.16.840.1.101.3.4.2.9", s_abTests, RT_ELEMENTS(s_abTests), "SHA3-384", RTDIGESTTYPE_SHA3_512, VINF_SUCCESS);
     1900}
     1901
     1902
     1903static void testSha3_512(void)
     1904{
     1905    RTTestISub("SHA3-512");
     1906
     1907    /*
     1908     * Generic API tests.
     1909     */
     1910    static TESTRTDIGEST const s_abTests[] =
     1911    {
     1912        { &g_abRandom72KB[0],         0, "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26", "SHA3-512 0 bytes" },
     1913        { &g_abRandom72KB[0],         1, "4ee7f324651207f39d805a7316fa5fea29f4b220f0dab62c1b1543e9bf8bcca99f23717cc1a760ef1aa899b81457bbdcc03735dcb77826d888247349454d1db9", "SHA3-512 1 bytes" },
     1914        { &g_abRandom72KB[0],         2, "a37abcdae939bea2fca0098ed2605ce1ee435323afc3b25ce0cd3591e91ed0d14f8b5b472d7b24c6660fd56af8a738848b472f26582fbda90a76c8050d6c2a12", "SHA3-512 2 bytes" },
     1915        { &g_abRandom72KB[0],         3, "990d4cbd76529cbc6eb12e4da80ddafbd3400c4914aa6123aec0afea5620e1bee60b200125219911696abc77d62916c39755247a198084e3fb75252c093bb5c2", "SHA3-512 3 bytes" },
     1916        { &g_abRandom72KB[0],         4, "a4406495c343b9c3b313cba6013294afd81fe23374149906074dfb4b596269e3735c98d7e2b1499a05f6596ea0a7a7e1a82cc85032e94bea71a0e6a775bcd18c", "SHA3-512 4 bytes" },
     1917        { &g_abRandom72KB[0],         5, "f84d7503d3a0ca641b3e095c27afde5a273a1e6e838529d872215b0429a7bf27707b943780957441904395912fafe60b429448759f5dfb3e5ff32fb38dccb099", "SHA3-512 5 bytes" },
     1918        { &g_abRandom72KB[0],         6, "525662195aa6f59c6df3f289f2806d5ae273a173bb1d0c3ea1f81073f75ae79b4771907641e6bf8672c0e84f1b978142fb416ca65c3bba0de351f2b8d848ff53", "SHA3-512 6 bytes" },
     1919        { &g_abRandom72KB[0],         7, "821cef685d761af82b4306e1ae57f94de06c1e447b68eb0f928b50d48efedf36a6d98f0e6af966d94632bf135fccba4afcecce2fb7d96bd556877f8b35826fba", "SHA3-512 7 bytes" },
     1920        { &g_abRandom72KB[0],         8, "7e01e3c096f03241c590f228863ee9c412cc209d0234452f28f5e52d238133fd91795b7a19ba0e6a6187383eb22749b5ea0fdefa327f824bcfe5ded0128abdcd", "SHA3-512 8 bytes" },
     1921        { &g_abRandom72KB[0],         9, "1cb4b2dc7e3bc947c8b99a52e538491e7f05a86877895917db1a24dcfc68822997f2bf1cad9ab63d656b4ef7cacb32109bc2e4befd87755645cdf44e4b177405", "SHA3-512 9 bytes" },
     1922        { &g_abRandom72KB[0],        10, "b5db597d408db3e664422e8723a3f03e42e6302ed6765fded67e35406e73f9edf3610f63287059f1850c57a6d460fda1eead440e67c65ff60f28dbc9fb886225", "SHA3-512 10 bytes" },
     1923        { &g_abRandom72KB[0],        11, "b43ed646049b4d7067af01ea26c922f877cf1bcb83fd42ad7ee02ccd4f79c9bd7fb5c5c9e6538c67ba46f3ef7537f8b7c1465843191c17ced4d59d1a534091be", "SHA3-512 11 bytes" },
     1924        { &g_abRandom72KB[0],        12, "844eb1bdc2bda7a7a142c6769ea7f7c482457e6e025789125b43be6d2a10639ce939c4ec4bb80cf5113e7e3f608b3c3587c262fdba05ffd9c56354e64085d052", "SHA3-512 12 bytes" },
     1925        { &g_abRandom72KB[0],        13, "cfad914dc4738c54fede2b0bc0ba5f0d657d1a120f38c2d4dfa79528c210236a03cbcd277852413ea64d2e5e54659772e69d9b8af6c0df4aece7da71097c17bd", "SHA3-512 13 bytes" },
     1926        { &g_abRandom72KB[0],        14, "d7fadc895847ca55425da98b51cc12c38dac301475a0517cd7ac7b40fa328809e0edc07a3314409df18759dc03f30bbbdd5d78ed6755a761401b19b4c3426a99", "SHA3-512 14 bytes" },
     1927        { &g_abRandom72KB[0],        15, "46c539de6bfe7da9d6e145c8e73f9ad4a117b55a59fd0a913e3f56349f02f1af81736293e55f3439da7d8f7e6799fbbb0d76fd77d2b0acb0acf78ce08f775245", "SHA3-512 15 bytes" },
     1928        { &g_abRandom72KB[0],        16, "81cf0210eb63ec45bbbdb3105ed8ae148452e4989f0910e6ea857ad6beb4f879429ef521d649153c435210aa4edcf9509941460c10a2b9c26173dfb862e8f4ef", "SHA3-512 16 bytes" },
     1929        { &g_abRandom72KB[0],        17, "9cdd116f054627a52a1b323c42d168855520291d91a3dc7fe52ea3d4119d44e7a650b6a27e9041d37057e51a48c183ec0c653d21d5435c6d8cda6de300644b69", "SHA3-512 17 bytes" },
     1930        { &g_abRandom72KB[0],        18, "dc4be84a998b02b19c95d06486fbf02128742a3499adb8b720c4b63483c64ba96b11ac8769138561991f90211b7c0698691a852f949b843db968e481cce9a12a", "SHA3-512 18 bytes" },
     1931        { &g_abRandom72KB[0],        19, "8c156e9abe6337b23af7d82c15b7aef03118faa0b539f0eadef72ab0258f78e6708741d172c4185b420fa8a21b885c32ccdca1543eb9ec35d188b30254e0702e", "SHA3-512 19 bytes" },
     1932        { &g_abRandom72KB[0],        20, "b038a2cea0052814f2c29cf4815211d3d8f006a388c9c166ff20c9b214ffa264f68fde4842bbc773254f8dd4df10e98287cee82c85fdd170ac7ed2999cda0095", "SHA3-512 20 bytes" },
     1933        { &g_abRandom72KB[0],        21, "35ac6d2727b4af76144ac58cdb84f662d78855d76baf22411c75057ca31a86fc11e7c06248ef87661467d394428dfe75f5b88121b7e762920c3cf32a5ba0d6b1", "SHA3-512 21 bytes" },
     1934        { &g_abRandom72KB[0],        22, "7add7d739c6f31fe25b30367853f90c0fd9d7416c20ca2778e527b3d4b876b5676ea1610db6df508e1b6230c67c6e9f5eeb60de65b2f7cea85064eb7ab21771d", "SHA3-512 22 bytes" },
     1935        { &g_abRandom72KB[0],        23, "6dbf5a243571b4c3e03786a1978074d06fe78ba01ee73de50e165bcf461018f96c6eff1d69c44dadae3df2e1d406a207208c684cb04cd38e679bc883bf95e4d4", "SHA3-512 23 bytes" },
     1936        { &g_abRandom72KB[0],        24, "c2d88cd3da3db0883c01e622b40f93060ba176710e1f9988e94748a77a8c5c64cd461b4ad5190ac5a0a66294713d097478b0ea0f49da2f737d9208f4f844a509", "SHA3-512 24 bytes" },
     1937        { &g_abRandom72KB[0],        25, "3a7146eda5a22fdd53535da6706399c74ee9848cd2cd11944575270b994c7713c556d96b38c0b92b8592e8fb48fa79816cca982b56c673f7edc919d4f50b888a", "SHA3-512 25 bytes" },
     1938        { &g_abRandom72KB[0],        26, "23a48b562fa85ad25d08daa2c14bf47f1dab9edb5fca761586b3418c1672aa9297e5681c24822ec29a2e42c54a019d949c2464a52c3456aa5e435d452510730b", "SHA3-512 26 bytes" },
     1939        { &g_abRandom72KB[0],        27, "8aabb979e65d5c332cafb4ae5edb58437cbadeb13d8f7d985cc8dc0108060bca616add6c6be22eecf3059822a9f154471f690f3e1dfebce88c4c42533597ade9", "SHA3-512 27 bytes" },
     1940        { &g_abRandom72KB[0],        28, "0e3bcaae03e672848cb3bbad4f21cae7043a0a0c51c6f6bb0870b9e33f7f8fde86200212d0e5f25a2c5eed1cfcafc76f477a395b712b55071a139ff7726d6815", "SHA3-512 28 bytes" },
     1941        { &g_abRandom72KB[0],        29, "fb5a3094c42e4917388edd335c8c32eb8f1e2f5789329b89a9775ca84cd43f8f4187d8ab334bad952f21e426dca97a9f577a13d21cdbfb92cfb2a53d99c0c530", "SHA3-512 29 bytes" },
     1942        { &g_abRandom72KB[0],        30, "0be32867a3a919e9a2ba2ce700f801e7531e35c38897ca99c915b2796d215817ccdc64efe4a8aeee354ec0c68c1dfb6cdf27922d5340e89d86dc096df3c68dc9", "SHA3-512 30 bytes" },
     1943        { &g_abRandom72KB[0],        31, "33b0b014160167c2e1b893275f6c053156471cabfc20c13456302053aa8d96ba517db68322dabe41d3b990cffb6ed9ec7dc2a9365b92c94094fdc0e4376e4c80", "SHA3-512 31 bytes" },
     1944        { &g_abRandom72KB[0],        32, "0b532c07abc6739767601ddb0798b22bd0c7687a14ccd79bfaaf94276bd9d158c589d99ce845b218fc044ba3aba3f402f21aeec67d1b71fdd962df481701d89e", "SHA3-512 32 bytes" },
     1945        { &g_abRandom72KB[0],        33, "4e4babce8b0e0163388fcd1d3c81375949e9ff42c3ae97452b6c54875a8c5bbd684536991ee68fcc0422c3d892c3fd49ac1ec8938e416db3eac69f3c038709dd", "SHA3-512 33 bytes" },
     1946        { &g_abRandom72KB[0],        34, "bc67eb2b32f4cafbb395cef79781069cca2f15384896f9bce8b82af43073c6446675878c1c8b7bb2a5fbadd5e8296d3f35c02b9135ed4313454ecad603d1d8c8", "SHA3-512 34 bytes" },
     1947        { &g_abRandom72KB[0],        35, "2fb234bcebd0589cdf5cf30fa8d593d21e9734428f166d1c4dcd44c938f70ebbbe7f9d8f7089edfb3925c0d1c45c1b0db1244e2de97646282236f5e8cb517504", "SHA3-512 35 bytes" },
     1948        { &g_abRandom72KB[0],        36, "0d5069bfed5f8c77cff581cbb340239624a55d34123d138e110fe783d648190da2c3a4b2cd5e72d98223670a4435bfd8005b9305d6526fda164a5a7dc115cf8b", "SHA3-512 36 bytes" },
     1949        { &g_abRandom72KB[0],        37, "2c14f8534e40a03e8b4882c2751f818d2a4ff5862d0489c8111ce002f507ed215fa7efaa68293f5b50e8bf73c665bfb8a257a18f82b14809abc6cb03c4190547", "SHA3-512 37 bytes" },
     1950        { &g_abRandom72KB[0],        38, "0351c1c8507264c7a63bf148e7fa7d475f147c148ac9926ad6fd00f92815fc0d0cff79b2a57246757af6de325b186115c0152f89605edc9ed3fb8e74b0bf3c5a", "SHA3-512 38 bytes" },
     1951        { &g_abRandom72KB[0],        39, "2c25e88aad094ca1c65e8b4f4cafd03719a2af9e470e540f454297c245a7d1dc4aa6ddd8daad23ea682d520fc25368f8c58eefe2a977a0856b2fbe69bcfc6802", "SHA3-512 39 bytes" },
     1952        { &g_abRandom72KB[0],        40, "94e315fd9972515fcb737a4aa3131ec6c329d628f5845401d12b34f0b47d767b57aa5e1e1321324d301a18f0a678b9619819548e87d5f5eb7043505ffaa9ea56", "SHA3-512 40 bytes" },
     1953        { &g_abRandom72KB[0],        41, "d3d7fe9f5cab99b9b3d6dae377e6467eb8330ac54248e281a44c2c42877de5e2b63a2c3923d0d2760bbf27837e0646df797f9687cd4a9a7a99047be9681bec13", "SHA3-512 41 bytes" },
     1954        { &g_abRandom72KB[0],        42, "0fb6d3488f202dfa56e37f20269d17e84556c9cb9f28d2c7c5e66ff64f4557d17ca5f67874a97c0f73fdb71698cfa576eeeffc8cee7b499ea1335257102dc5ac", "SHA3-512 42 bytes" },
     1955        { &g_abRandom72KB[0],        43, "6dd66ccbb5c5e95f92d6e55b4bd159a96045d39a87c2c8e3db42abbf01cfe36e92b326aab17d42441a5717da4518884669d0f43d43453dba7a744167cda8f41e", "SHA3-512 43 bytes" },
     1956        { &g_abRandom72KB[0],        44, "afdb2b1b74767e6b26b96d174a89fe5efb3205c3aaceb6e067631a4e5834a067d9d74248556e32661ee50fc7aaaf49482a33a6fba3a24e19a7977c14af092643", "SHA3-512 44 bytes" },
     1957        { &g_abRandom72KB[0],        45, "d68f05c24ec746168af39ea279987643189c239f981173691f462296b682b320bccadc463fc4829668736ba007e47118cbf35b4d957d1758d5a1d3b0b5e3f6aa", "SHA3-512 45 bytes" },
     1958        { &g_abRandom72KB[0],        46, "03651133ed68ee78daae564e84d6749ceb7ebfed83b1db48dd19e37447f3efa0e2e18d844a3ca017c47fbf027460f9a8f37d6014ffdf6aac48f030ba1abc23f3", "SHA3-512 46 bytes" },
     1959        { &g_abRandom72KB[0],        47, "5629f7274311cd562e91ef70dbfdec9f09911ab9808407bb66cb4da61520dbc33f1a4aa1c4e8697e8c78b69d99eccfe1ed85e84420e1c7da492392959a5f3f2b", "SHA3-512 47 bytes" },
     1960        { &g_abRandom72KB[0],        48, "12e3c5cef70c5a6dabc95eee03b892787872f6d32e0d9371d89fced570b4e40d97ee6eb143eb109425ed56f6ee213b86de1ab2a028999fac519c77c3f26b3276", "SHA3-512 48 bytes" },
     1961        { &g_abRandom72KB[0],        49, "7e3941a41eadd11873df6e587275e9023626a3f5f21feac2691c7ffedf3be953bf8e72640d812ff3c286c0c59b1d635af071eceecf40a2501183dd32982e60da", "SHA3-512 49 bytes" },
     1962        { &g_abRandom72KB[0],        50, "e22da00a967377bdef1a65449c30df64847af91aabe4cb9b847066bc2453f8b3feb20614440b1718253ff8121ae0e385dc29c07b096dbb6a9c128660cf2d201d", "SHA3-512 50 bytes" },
     1963        { &g_abRandom72KB[0],        51, "915467a10f3e111ac7c7fde607aba3c9147be30d36516b43d4486344ba459eb20b9aca443b2d0173a0cf2230e9045589369fefab7d6d053048208508ea86ed5b", "SHA3-512 51 bytes" },
     1964        { &g_abRandom72KB[0],        52, "e6f45a0d9346e02b21e4ddef0ec776c65dea326af0b763dffc31eac2449506d723b1425e9b675463c63d4cd8c28533b76d50fbda2a431f8de6de62c1faf98352", "SHA3-512 52 bytes" },
     1965        { &g_abRandom72KB[0],        53, "bf1e3f13b1f26ce8fbb8dc38d4f061765f90845e2fc0527f0f010fd71925a0bef2e31e96b9b2c379a27089c5dad504da161741556c6a6570a0303e71146beb2e", "SHA3-512 53 bytes" },
     1966        { &g_abRandom72KB[0],        54, "5c57863608bc36390c697b82f30ee2c8f2d6f65d024b46b7c74f21203cf720e1a58e1bc8c42e203db4458e323ac3208ee6892ef106f5e2ec04cf89c5a6d04c93", "SHA3-512 54 bytes" },
     1967        { &g_abRandom72KB[0],        55, "65c1543ab3f5354882aa55050bd55f7e9d317e405352dc7ded30ae3dfd92f9b3191ccf0e616c963d4e5ebb45a5de5c880345d890fe3fa5f0695efb749e2b64f0", "SHA3-512 55 bytes" },
     1968        { &g_abRandom72KB[0],        56, "19c31282083102e9ccb901d617d7f676c10e10d93e718732bd0de93a42417cc7b9d30c3c59ff5ae1b39fe3ceff46d4a38be6f8276435c3183a4e2d6f4d062a15", "SHA3-512 56 bytes" },
     1969        { &g_abRandom72KB[0],        57, "9d1cfb089e112b391c20a649827f4e33be7ef24f902f7d7a9e51523df2f77ec80ef29364ac34f74199ff1ab96d276cf1d4f9d39e755221c14f993d1f84b3e5ad", "SHA3-512 57 bytes" },
     1970        { &g_abRandom72KB[0],        58, "2905d9b5f8e24bbee15b576084842ed5d81570369a4fca15f1a588e093d84949edf374e2b25bd845482f93f8d03e92f52d8179c4ac356fbf12bc0591cb8a6217", "SHA3-512 58 bytes" },
     1971        { &g_abRandom72KB[0],        59, "30bbd30b7b90c8c2ef65310a4d0ae0918c8e8f4c3b116305cf5960e5baa2c7d98e763d18993784e277ce6d51345046724626291c76b0293139074c31ad3f60bf", "SHA3-512 59 bytes" },
     1972        { &g_abRandom72KB[0],        60, "50f508336ec07572733d1e725218916d1ecd578891d49ae514e0de3d6175b50c4f5556d8b93cda8743cf37acaf69ff278e2944913d05bd9a13ee959d2616279e", "SHA3-512 60 bytes" },
     1973        { &g_abRandom72KB[0],        61, "e9d0c5b876151523c3cb2364d6c4788f37bfcfde0196c68b626418035929ff6c2a4c470d1d04b47d445b23144a529fc78f4cbc77aa4d04a0ee4b6aa2a699166f", "SHA3-512 61 bytes" },
     1974        { &g_abRandom72KB[0],        62, "b7e3fc3d74d63179b8832383c202e35b2f701e5457729652f7eff37bedc5df0f94548765d0b16d95d0b37c3cac1ecfdba5ca8cbabf2a72bbcb2f3313782976b6", "SHA3-512 62 bytes" },
     1975        { &g_abRandom72KB[0],        63, "0b47cb66418e1c6d41389c2191eadee2376db5db7808a6e2e3245ed7820652da63361c2e65c3801fefa81bcf580477a91b11d2377dfb0c3e5b5f08e49d46cc40", "SHA3-512 63 bytes" },
     1976        { &g_abRandom72KB[0],        64, "cf6365be34524c4bff524832f2d909e442428c90294f71bc6b7b38f26d53e215bfef34b89530e9ab0089c589dde9938bc97d43f9d429aabfee3af95ae1b4cfb3", "SHA3-512 64 bytes" },
     1977        { &g_abRandom72KB[0],        65, "3e4722b8bc5b8e4ed1e10896949cb29fbf6985eec29b4d9e6e4b0c9411996a3c34e9fe5a08bd7c962736d38bdb5aa65d432bc1e35d2f5a66709e9b0cb8cf786b", "SHA3-512 65 bytes" },
     1978        { &g_abRandom72KB[0],        66, "73520db68703a4704ec6a521d5e5aeff2d5dc26963e8ba64db5d2c890ae5cb20a206e4c887659af80436ba592c7451b24c9739ff444831692a89fbbc5663c410", "SHA3-512 66 bytes" },
     1979        { &g_abRandom72KB[0],        67, "83a6eb52acddffb2a4b01e65eb300811bacddc8d0b303cd103ddad85431cc7731b19dfa65404e0012a6776ed904831a273d2a530c181f66e6f1591c10d293916", "SHA3-512 67 bytes" },
     1980        { &g_abRandom72KB[0],        68, "9931cccc3c7e7ef3713b5fdc3c03fadf9c95ca94d03ea36da20d060df7af0e1c1ce985d147547052b2410d582d21552d864a7869f7b25eecccdbd6c044a5112b", "SHA3-512 68 bytes" },
     1981        { &g_abRandom72KB[0],        69, "492d08d8a38c0fa5524979765335585189c113a922481a468e782b2dad23d24415881a2998f46373f1c163cd1ca8a5db6856520e61b1dae443bb2fe95e54e189", "SHA3-512 69 bytes" },
     1982        { &g_abRandom72KB[0],        70, "2b16f2c83901434ca4bb10565b8370e408a7766e7df26ad7c7b6c304bb299654e8e5cc3c4c8fa4a7039f94762dc24f1dfbec782d590780042f5afc6c807da93b", "SHA3-512 70 bytes" },
     1983        { &g_abRandom72KB[0],        71, "923e4055b04dccc21ec30f1234fbd5ca4a917f2a38218119ebf14d664207b31ff706d1979f32e81fb0f9fdbaca8e7f10c255e107bc3f14bf353d9f09d1820ad3", "SHA3-512 71 bytes" },
     1984        { &g_abRandom72KB[0],        72, "4721edf451ffb8c7f367b9c5aef47d32932ae03e497786adcc51fba635148d2e4a9a2ef779700eca36273ac33c7f66ed5ad59090601b4d98f27958b90b195074", "SHA3-512 72 bytes" },
     1985        { &g_abRandom72KB[0],        73, "bb21eb1d4887ea6ed89f1cad785c88dab259567bc3988d85ad1a6cc0bd906d41862f7bc748176e691a79eefa2c679978bbcf7463e1dae772432985e01b713b31", "SHA3-512 73 bytes" },
     1986        { &g_abRandom72KB[0],        74, "9dcdd22af755313131b64b72408bea54b4aca212d2ea7f62763c60f21860bf68bdad60fb80e31dea30a291ec74e8e98db27886b96dee09c0f3a2c555de283cc9", "SHA3-512 74 bytes" },
     1987        { &g_abRandom72KB[0],        75, "73aff791c665b8af2606fb23418cce72cf6093179d7025fc29ea3592122dd9a27fdf85c1179241c28b9b945a5597ba17600342c8025e212b1ff95e571e3fdb63", "SHA3-512 75 bytes" },
     1988        { &g_abRandom72KB[0],        76, "6b81bb06ecd0c10c7ecbb20c303941cc04c2ab56294b1dc22ad0bc0c9dd039ef31aebb10fe9bb13499991bd5742a4887fa220b2e74d91af40998649b24470821", "SHA3-512 76 bytes" },
     1989        { &g_abRandom72KB[0],        77, "8cfacb727fd2ece3601ea7da001ab1c62dd6412c78a79b6960927d90a4daafefca7ceb1f025d05d7fef11ce36402c73c6d41a1fe917ccda47a119f8816a58d6b", "SHA3-512 77 bytes" },
     1990        { &g_abRandom72KB[0],        78, "1f02f1c2eecb7cc1247e09efcc528a151170caa7b45e426dac0c7f7d57201b078c0b2bc461a2585575b0f704e2c048ddc3db19ddf48df7811e6bdccd0d3e5f8b", "SHA3-512 78 bytes" },
     1991        { &g_abRandom72KB[0],        79, "e1a4f3f7d00c2a4b18ccf13ab5fb4ff073db381f6d31e8b82a3d476608e9e4685f0df71e4c59cc44557caae72f32591d5aa49829ad2c2a868c819f71240619a4", "SHA3-512 79 bytes" },
     1992        { &g_abRandom72KB[0],        80, "bc865da84d88fddd29e45b9bbddaded9e9011fb2e5277b3be1bb09b70d90d66e7ea1c57360b8d9defc40538e960adb356308efde38d22ab5eb74db91325c7bb1", "SHA3-512 80 bytes" },
     1993        { &g_abRandom72KB[0],        81, "a505111a146ad2713f6aa57a67a3e73c8f458ed5d943e1f081a9ecc484ab1da2f0157143bfe0e9a0a402e5514d165c76ef2879a772823c5f841805f09840116b", "SHA3-512 81 bytes" },
     1994        { &g_abRandom72KB[0],        82, "409131dd1171d05d96e2013a80ef9d44ffe39b39bb4b630f73d43fa9e0da4b9719add8cacf14406e00e5a14bb181ca7e45ee0264d81e5977dc5a0ede25c5a6c1", "SHA3-512 82 bytes" },
     1995        { &g_abRandom72KB[0],        83, "2930270075ecfdb960ba6696e7c158f56142fc969ffa1b77e89e36a1694b26aec687a12f865cc5c1ea75a0f318d8e7180715848d77d24959d0b428cd50b8db10", "SHA3-512 83 bytes" },
     1996        { &g_abRandom72KB[0],        84, "6a271f6d548c3ea27cdeca450e665c7370617f5309f629c18d1756b26d5546b18dde3af83ef79c1aafa70b0574f4d3b32e6d5d8fae359b810f37a6ed41013990", "SHA3-512 84 bytes" },
     1997        { &g_abRandom72KB[0],        85, "0484e9ddd706b1c13f595824f63ff24df87e61aeb029da69046118f269b247a682ec0106d774e1708c1c6f810bb10be8f6844b10f1f82e03ddcd8634aa72e693", "SHA3-512 85 bytes" },
     1998        { &g_abRandom72KB[0],        86, "414e13451dcc5cd997d384e7fcef8a6b0cb95a5eb75748a97529c424104bf4810fb7618150cff96940e41e1480c47be67d331450d8393760ec07302a674f7fed", "SHA3-512 86 bytes" },
     1999        { &g_abRandom72KB[0],        87, "a7653579f7740919644a229ff3e812be4d52afa49035800e42969d3fcf16f915c1cef0664ea59edbba8643aa84a96040bd2659992733c6c78877b5212164718b", "SHA3-512 87 bytes" },
     2000        { &g_abRandom72KB[0],        88, "f13ed79fe8185f13f3eab7f47ef5f17d1368c86c558ec76f4653c10db4d4eacac6a1adab465d8f8170e37fb1038d34c4238330f2878087116b0011e812e5f13f", "SHA3-512 88 bytes" },
     2001        { &g_abRandom72KB[0],        89, "477f9fd5978cc2b56793dfeedf2001a24c8813c052bc391bfa0991378bddea4d50953083309d5fef8b150a06f2869200858fb0b045d88e94cadb569b74eb4ade", "SHA3-512 89 bytes" },
     2002        { &g_abRandom72KB[0],        90, "c41eff28b115c8121b76cfd9d8410d292e9d8a7e1cfc954334e32ebd1fa1166f0f425e21ff4d5898ef824ce6617ca0509e7515d23e64cc2f4e88e376cf25c8cd", "SHA3-512 90 bytes" },
     2003        { &g_abRandom72KB[0],        91, "710cb43ac749bf771d9c86a4f10c2a137ada8e1ccf18df635149c769954c7dabcfbc37c650fb5e568169f34d5bd4790457d4f8550bb8f0bf2f54a74e1473cdcd", "SHA3-512 91 bytes" },
     2004        { &g_abRandom72KB[0],        92, "32aab1bdeb8d90becf600790aca16f4e7255923ad78e95e1733d3b4b11f51eb7198dedd4368c15647e5748fed5e0d9ada2af098b0b3a7b22fb3075ee48e4dfab", "SHA3-512 92 bytes" },
     2005        { &g_abRandom72KB[0],        93, "cf97dc9c3f51a0ffa92379d33e123e0a2e1849b0107d69ed346d5ff841d7bb39c289ff7f8941200e0a23bb636180eeb9b04942bbf344d877f5306e498fc6ec73", "SHA3-512 93 bytes" },
     2006        { &g_abRandom72KB[0],        94, "3b3dfebb00a8731103b54ce0e04903ab020c857dadd08642e8757c44afaab4b7d94cab2ccb9787f2a874004677d22780cf41c12df1fa0fe1752bdf672261327f", "SHA3-512 94 bytes" },
     2007        { &g_abRandom72KB[0],        95, "12c68fec6ee5748c31e16138a6a2fe6ca84ba55b52abb17b91b1ad40e735a5fe486fcc9033fcd5e306d0da7a1382cb375950de6f05956f7f98465c34f55ea921", "SHA3-512 95 bytes" },
     2008        { &g_abRandom72KB[0],        96, "0729b797cb8bb28274bd83258ccd5fb70ae3b50fff1a02137f8620ed7ed97807094e9735415b9288847eb0652d76bc2225f8c933016ae3e7a6c59283b67427b4", "SHA3-512 96 bytes" },
     2009        { &g_abRandom72KB[0],        97, "e553596d7464f147e7b728eb4cfd176fe68b6a01d1e5c9d436f3ba4f35fc5183dfc40af52cb22682b9e388bda9f5ccacbf3d28fb2751f1840bee01e84c336baf", "SHA3-512 97 bytes" },
     2010        { &g_abRandom72KB[0],        98, "5ff10285538450aac83075504612f99a97ef7d3b3d271af80d089fcb6cf0ba65d3b8627659dce567434f011241dd956fdaa603d3a6a95b183bc21a9e541c5c0b", "SHA3-512 98 bytes" },
     2011        { &g_abRandom72KB[0],        99, "8264ce198a9cf2c0df56ac0e66c4d28f43a538c77b54080a0d623226c360878a7bae213e1e05aad4933e1ec8f50646f3f1abfe2d26b97e879463ec20b1ec7398", "SHA3-512 99 bytes" },
     2012        { &g_abRandom72KB[0],       100, "ec1b9a77eef08fa9f30bfda857a404cea4ad382bef4d6c4468c6561e057396697f1a8d8f1981f369186c0d5302d7ba94dd21bef988934f4cce624e3727880c1d", "SHA3-512 100 bytes" },
     2013        { &g_abRandom72KB[0],       101, "52500498571ed5ff4d274c593017bf958676ce0bd9ad4dc512a79615fa753a9a74f753e29eb230b810b544bb27f6d978f10b10ece4ca20483f0648dc55ef5dec", "SHA3-512 101 bytes" },
     2014        { &g_abRandom72KB[0],       102, "b7e7a4fc48e5ee13a5fb6cb3d6369f16e73499ed689e843db5ef0f4113f5934ec88bbc1d88f644fc940eabe563962ddd253458fe353dd94b84fc0b68f79351cf", "SHA3-512 102 bytes" },
     2015        { &g_abRandom72KB[0],       103, "a36bdca11677f6d00c41480cedb84a61f50badfe139d8e3a614ab4a6dda92b814f4448cc8449fafc48b643eb650acef6a66ae4e1e8c9931e64120f2fca8df3fb", "SHA3-512 103 bytes" },
     2016        { &g_abRandom72KB[0],       104, "a251f1502eea3fd43aae904ee1aff0b710221bb21b934b1e2c8a2cabe865dcc34a1a35e81fd123c62bf007486332e6b33a15b621e94264f056d2388f7f37bd5b", "SHA3-512 104 bytes" },
     2017        { &g_abRandom72KB[0],       105, "ee284dac8cc77a76e2c5da4c51d50e536bd76ce532b2e879904a5dcdb53b8f19da80953728724af49a434d4f55ee22efca95fb64efa6d40b3ef7f2ab9e4e2f2b", "SHA3-512 105 bytes" },
     2018        { &g_abRandom72KB[0],       106, "91e36f3c8dc599d36ba96815b9f7aff30657f9a30554d4b3badf7d664b3f0364d934eb633fa314e71eb9d453ccac4f66b9497fbc329b1ed6a48b416a10e84673", "SHA3-512 106 bytes" },
     2019        { &g_abRandom72KB[0],       107, "2762a46b22f6259e864bb03324d313460e0daa74219787e0596fafc6fef8bb7f723d8375cf5a3097e6ac377c4b13588e978483c21240af30226b6cba043eca53", "SHA3-512 107 bytes" },
     2020        { &g_abRandom72KB[0],       108, "5971c80376d85e61caf25336b9af83aa90e5ae9facee9a36a5a89a889aaf589bf1e03aeb16d6cbfb167d61981b27f40731803385077ec9f427e2e16146afaa11", "SHA3-512 108 bytes" },
     2021        { &g_abRandom72KB[0],       109, "c40906c8ed4101ba4da184eecb09ac96b9196becd39922f859c5fe898aaed15c940c2a662fb5aea1efaa3ec8301a4baa3b44fa37281a06f5480836efc26f0ba8", "SHA3-512 109 bytes" },
     2022        { &g_abRandom72KB[0],       110, "29536834295248ddbbe1c366cb4e391eb0574ebf36fb0e3cbafd285de6d2568944b89a8108b644b48b60bd6e5e766d6472767654c3c36e373341fd5efe8baddb", "SHA3-512 110 bytes" },
     2023        { &g_abRandom72KB[0],       111, "7a6f98d03200f77661686b6d69d5bb48a37c618dff07c0e25fda73a1fb08c1f04312c33971878de46acbb338e4a20dfd09acf1b1133206af57732123f36c3f0a", "SHA3-512 111 bytes" },
     2024        { &g_abRandom72KB[0],       112, "6d46c8fe0f7645029f9a4af5d8a7a0abb2fddfbb1afc5235966df4d26cc4301d26cbf09bef044f264cf80a67a52861e9ddfe88b4a7f3224812750ffacf927449", "SHA3-512 112 bytes" },
     2025        { &g_abRandom72KB[0],       113, "654c3d3b664da1a419443566e8e58be49c1c8d55137a32bdc1e67ca93ce0dca5058c46e4f1c7be260790ee2c58cd9710e1ff0a3b3ff0faccbf66f7e3279830e9", "SHA3-512 113 bytes" },
     2026        { &g_abRandom72KB[0],       114, "232d3a6bb57a2dbf2b287698e7446876b68be7934afb7701553f2eec05b999aaf895d993d6643b1b90ac646698f1fa8b4a8a2c9aca209feee4bcf3ea865b94fe", "SHA3-512 114 bytes" },
     2027        { &g_abRandom72KB[0],       115, "2d8ef7d8cfbf11c02064a1c34df41eb7ae652f076d9608639ad4aaa6949c86819a3752e509ec55d2291561ad5bcbf149b01bf497dd5bf0dbcdfc237536e8f567", "SHA3-512 115 bytes" },
     2028        { &g_abRandom72KB[0],       116, "b1f8dc3aa2f6222c8cef637be1e3c27c6f718cc7747776f5adea6d9e73e8c0f522a7bacefa0dc40c75be982de3ac525eaf5d23d5fc1db5e61d33646211fab42f", "SHA3-512 116 bytes" },
     2029        { &g_abRandom72KB[0],       117, "9d942fb3a3b4b16b42125e5680384541d840729796eb24b2132eea8e4614fe1483191ef33543fe5438d66c2ebd3fbf3baee2886e3665e2e7bbdb3d744fb98a45", "SHA3-512 117 bytes" },
     2030        { &g_abRandom72KB[0],       118, "c9768aa0cc49ec005b17e3977055eb78e979404b5138209adc45a7c293bfd52dfbf442320b2f955fd90b360741be7e1c94f5ed844ac09caf1fa089bc6182ba47", "SHA3-512 118 bytes" },
     2031        { &g_abRandom72KB[0],       119, "29dfb602406ff7c35d6980a31c9c9e4cedb070cdd8fd19427b10daeb7509dce0f52123ddbb4a57f970ed346f338c59af917b8f90d32b3927bf4a2a10efabc647", "SHA3-512 119 bytes" },
     2032        { &g_abRandom72KB[0],       120, "b299a46e17c12dd35d49374c11f91e47d1f8b804c7aaeedf1fb2b84f77fc6247f7203bca813f812a6d062e505db43d03cdfc633fa23b6101dee42856c0485b8c", "SHA3-512 120 bytes" },
     2033        { &g_abRandom72KB[0],       121, "3459aad57f27f2689728b828a8e4eccc991af2e87b2db7b0743d432ecb24c13ddcb2d6bedd09a1c0ae1b178222c0695802e0c14461a123e49fb8ce79d1e2a601", "SHA3-512 121 bytes" },
     2034        { &g_abRandom72KB[0],       122, "2acd3bc4a351fa2c640bfcb73c4ee4c4f078e4621f5c424bfbbb3427b2396a5432ed2adca24bd21c0b9aa70d1d4ce847afe1f40e37c9bb75668994705dcd29ef", "SHA3-512 122 bytes" },
     2035        { &g_abRandom72KB[0],       123, "633166065ebba100f264090981783e223bed71325ca87a609de02b8e23226fee55a6a389a1978df01eaa5cd497ffb3c6d72f6e60033f217fd0cfd6c6ceba468c", "SHA3-512 123 bytes" },
     2036        { &g_abRandom72KB[0],       124, "976c3f3a52a2a13b1437aaad29230f6a64b66caf3fb450c8dea915bb5d3cc9fafc5ba1297cfef6dca1211fa77a737026adc1426cfe84f6bce8cfc071859208a3", "SHA3-512 124 bytes" },
     2037        { &g_abRandom72KB[0],       125, "cc68da46995cc0becdf21d1a6777efef4734ca81f5f079b5de2a394b18c0068e36af49e12ea6e916e954520b72edb15beff51b6b2cad64270099d020758ab05a", "SHA3-512 125 bytes" },
     2038        { &g_abRandom72KB[0],       126, "1c504c2b97f8b1351b32b70836d52d6991188b48b1e714cda5b44ddb51f16d12d644a9703078dff59164acb2b1d5e8d9fe74057e1e54a38e23933c37bb873f63", "SHA3-512 126 bytes" },
     2039        { &g_abRandom72KB[0],       127, "73534fffcd2647f7657cbbfd7b1487e260d79aa6d54cfde74c9cfb042618d20405fb43a2adb2acabf707ee676fd9b2f94d6173fab57b3b4e99e12f34a3396564", "SHA3-512 127 bytes" },
     2040        { &g_abRandom72KB[0],       128, "7fba8d3e8e2bba64fce80aef2010fec041129e2ad559ccc5064544e1bf95a6c51d9dad5c27d4deabc2e103672fdfbe2df25ebffc3b4b4c0c94c7e9320237d97f", "SHA3-512 128 bytes" },
     2041        { &g_abRandom72KB[0],       129, "2f65d51640daf193d089e61afd4fe5094765b75ca6c6d212fd5b18001154b421cb8dab0932aef69b85407fa1efdb0d0dcc638e7e9c2268ac8a5e453984544261", "SHA3-512 129 bytes" },
     2042        { &g_abRandom72KB[0],      1024, "951e0f318804de414f479be226b733e65ca3a686a5c53afbfb7894fa6278bea1d92f9fa5273f542fd892cdae5dae115c5ac62898da49a7f12433cd0462b6df54", "SHA3-512 1024 bytes" },
     2043        { &g_abRandom72KB[0],     73001, "f1275b4fcf0650888f60fee8b1557e5406eafe166d6a7771a4f3b865a5e051edfdc534de29e0773c9cd418c40cf6c9bff18c06a68f0f02d3a2e7caf3c3353f4d", "SHA3-512 73001 bytes" },
     2044        { &g_abRandom72KB[0],     73728, "031700e2323b8d5b7d87eb2e00714ecd0aa9408de3b4ea3328040292f23ff0aa4e29b0b9c3125516e80e522ef228551e2481bd8c0560c12be148306f5379595e", "SHA3-512 73728 bytes" },
     2045        { &g_abRandom72KB[0x20c9],  9991, "c570fa09ebc4157ae9836d09a3c6b41bd1ef028f76c2a72e1a10b6b09deb67bc484c436b51c1338a245ef244be13cd6efc034a66f70c685c49f400830806ebc8", "SHA3-512 8393 bytes @9991" },
     2046    };
     2047    testGeneric("2.16.840.1.101.3.4.2.10", s_abTests, RT_ELEMENTS(s_abTests), "SHA3-512", RTDIGESTTYPE_SHA3_512, VINF_SUCCESS);
     2048}
     2049
    14592050int main()
    14602051{
     
    14792070    testSha512t256();
    14802071#endif
     2072    testSha3_224();
     2073    testSha3_256();
     2074    testSha3_384();
     2075    testSha3_512();
    14812076
    14822077    return RTTestSummaryAndDestroy(hTest);
  • trunk/src/VBox/Runtime/testcase/tstRTDigest.cpp

    r82968 r85614  
    198198                 {
    199199                     pszDigestType = "SHA-512/256";
    200                      enmDigestType = RTDIGESTTYPE_SHA512T256;
    201                  }
     200                     enmDigestType = RTDIGESTTYPE_SHA3_256;
     201                 }
     202                 else if (!RTStrICmp(ValueUnion.psz, "sha3-224"))
     203                 {
     204                     pszDigestType = "SHA3-224";
     205                     enmDigestType = RTDIGESTTYPE_SHA3_224;
     206                 }
     207                 else if (!RTStrICmp(ValueUnion.psz, "sha3-256"))
     208                 {
     209                     pszDigestType = "SHA3-256";
     210                     enmDigestType = RTDIGESTTYPE_SHA3_256;
     211                 }
     212                 else if (!RTStrICmp(ValueUnion.psz, "sha3-384"))
     213                 {
     214                     pszDigestType = "SHA3-384";
     215                     enmDigestType = RTDIGESTTYPE_SHA3_384;
     216                 }
     217                 else if (!RTStrICmp(ValueUnion.psz, "sha3-512"))
     218                 {
     219                     pszDigestType = "SHA3-512";
     220                     enmDigestType = RTDIGESTTYPE_SHA3_512;
     221                 }
     222#if 0
     223                 else if (!RTStrICmp(ValueUnion.psz, "shake128"))
     224                 {
     225                     pszDigestType = "SHAKE128";
     226                     enmDigestType = RTDIGESTTYPE_SHAKE128;
     227                 }
     228                 else if (!RTStrICmp(ValueUnion.psz, "shake256"))
     229                 {
     230                     pszDigestType = "SHAKE256";
     231                     enmDigestType = RTDIGESTTYPE_SHAKE256;
     232                 }
     233#endif
    202234                 else
    203235                 {
     
    236268
    237269             case 'h':
    238                  RTPrintf("usage: tstRTDigest -t <digest-type> [-o <offset>] [-l <length>] [-x] file [file2 [..]]\n");
     270                 RTPrintf("usage: tstRTDigest -t <digest-type> [-o <offset>] [-l <length>] [-m method] [-x] file [file2 [..]]\n"
     271                          "\n"
     272                          "Options:\n"
     273                          "  -t,--type <hash-algo>\n"
     274                          "  -o,--offset <file-offset>\n"
     275                          "  -l,--length <byte-count>\n"
     276                          "  -m,--method <full|block|file|cvas>\n"
     277                          "     block: Init+Update+Finalize, data from file(s). Default.\n"
     278                          "     file:  RTSha*DigestFromFile. Only SHA1 and SHA256.\n"
     279                          "     cvas:  NIST test vectors processed by RTCrDigest*.\n"
     280                          "     full:  Not implemented\n"
     281                          "  -x,--testcase\n"
     282                          "    For generating C code.\n"
     283                          );
    239284                 return 1;
    240285
     
    414459                             }
    415460
     461                             case RTDIGESTTYPE_SHA3_224:
     462                             {
     463                                 RTSHA3T224CONTEXT Ctx;
     464                                 RTSha3t224Init(&Ctx);
     465                                 for (;;)
     466                                 {
     467                                     rc = MyReadFile(hFile, abBuf, sizeof(abBuf), &cbRead, &cbMaxLeft);
     468                                     if (RT_FAILURE(rc) || !cbRead)
     469                                         break;
     470                                     RTSha3t224Update(&Ctx, abBuf, cbRead);
     471                                 }
     472                                 uint8_t abDigest[RTSHA3_224_HASH_SIZE];
     473                                 RTSha3t224Final(&Ctx, abDigest);
     474                                 RTSha3t224ToString(abDigest, pszDigest, sizeof(abBuf));
     475                                 break;
     476                             }
     477
     478                             case RTDIGESTTYPE_SHA3_256:
     479                             {
     480                                 RTSHA3T256CONTEXT Ctx;
     481                                 RTSha3t256Init(&Ctx);
     482                                 for (;;)
     483                                 {
     484                                     rc = MyReadFile(hFile, abBuf, sizeof(abBuf), &cbRead, &cbMaxLeft);
     485                                     if (RT_FAILURE(rc) || !cbRead)
     486                                         break;
     487                                     RTSha3t256Update(&Ctx, abBuf, cbRead);
     488                                 }
     489                                 uint8_t abDigest[RTSHA3_256_HASH_SIZE];
     490                                 RTSha3t256Final(&Ctx, abDigest);
     491                                 RTSha3t256ToString(abDigest, pszDigest, sizeof(abBuf));
     492                                 break;
     493                             }
     494
     495                             case RTDIGESTTYPE_SHA3_384:
     496                             {
     497                                 RTSHA3T384CONTEXT Ctx;
     498                                 RTSha3t384Init(&Ctx);
     499                                 for (;;)
     500                                 {
     501                                     rc = MyReadFile(hFile, abBuf, sizeof(abBuf), &cbRead, &cbMaxLeft);
     502                                     if (RT_FAILURE(rc) || !cbRead)
     503                                         break;
     504                                     RTSha3t384Update(&Ctx, abBuf, cbRead);
     505                                 }
     506                                 uint8_t abDigest[RTSHA3_384_HASH_SIZE];
     507                                 RTSha3t384Final(&Ctx, abDigest);
     508                                 RTSha3t384ToString(abDigest, pszDigest, sizeof(abBuf));
     509                                 break;
     510                             }
     511
     512                             case RTDIGESTTYPE_SHA3_512:
     513                             {
     514                                 RTSHA3T512CONTEXT Ctx;
     515                                 RTSha3t512Init(&Ctx);
     516                                 for (;;)
     517                                 {
     518                                     rc = MyReadFile(hFile, abBuf, sizeof(abBuf), &cbRead, &cbMaxLeft);
     519                                     if (RT_FAILURE(rc) || !cbRead)
     520                                         break;
     521                                     RTSha3t512Update(&Ctx, abBuf, cbRead);
     522                                 }
     523                                 uint8_t abDigest[RTSHA3_512_HASH_SIZE];
     524                                 RTSha3t512Final(&Ctx, abDigest);
     525                                 RTSha3t512ToString(abDigest, pszDigest, sizeof(abBuf));
     526                                 break;
     527                             }
     528
     529                             /** @todo SHAKE128 and SHAKE256   */
     530
    416531                             default:
    417                                  return Error("Internal error #1\n");
     532                                 return Error("Internal error #1: %d %s\n", enmDigestType, pszDigest);
    418533                         }
    419534                         RTFileClose(hFile);
     
    454569                         rc = RTStrmOpen(ValueUnion.psz, "r", &pFile);
    455570                         if (RT_FAILURE(rc))
    456                              return Error("Failed to open CVAS file '%s': %Rrc", ValueUnion.psz, rc);
     571                             return Error("Failed to open CVAS file '%s': %Rrc\n", ValueUnion.psz, rc);
    457572
    458573                         /*
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette