From eefcbadb9ee3940cc637f7f8ea569dab7cbd323f Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Tue, 9 Jun 2026 17:55:51 +0800 Subject: [PATCH] Add PBKDF2 tests from Wycheproof --- CMakeLists.txt | 8 +- tests/pbkdf2test.c | 262 ++++++++------ tests/pbkdf2test_sha1.h | 716 ++++++++++++++++++++++++++++++++++++++ tests/pbkdf2test_sha224.h | 650 ++++++++++++++++++++++++++++++++++ tests/pbkdf2test_sha256.h | 672 +++++++++++++++++++++++++++++++++++ tests/pbkdf2test_sha384.h | 650 ++++++++++++++++++++++++++++++++++ tests/pbkdf2test_sha512.h | 650 ++++++++++++++++++++++++++++++++++ 7 files changed, 3501 insertions(+), 107 deletions(-) create mode 100644 tests/pbkdf2test_sha1.h create mode 100644 tests/pbkdf2test_sha224.h create mode 100644 tests/pbkdf2test_sha256.h create mode 100644 tests/pbkdf2test_sha384.h create mode 100644 tests/pbkdf2test_sha512.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a1b7908..d55d2d4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ else() endif() option(ENABLE_TEST_SPEED "Enable test speed" OFF) +option(ENABLE_LONG_TEST "Enable long-running tests" OFF) @@ -173,6 +174,7 @@ set(tests block_cipher digest hkdf + pbkdf2 gf128 pkcs8 ec @@ -210,6 +212,11 @@ if (ENABLE_TEST_SPEED) add_definitions(-DENABLE_TEST_SPEED) endif() +if (ENABLE_LONG_TEST) + message(STATUS "ENABLE_LONG_TEST is ON") + add_definitions(-DENABLE_LONG_TEST) +endif() + option(ENABLE_SM2_ALGOR_ID_ENCODE_NULL "Enable AlgorithmIdenifier with algorithm sm2sign_with_sm3 encode a NULL object as parameters" OFF) if (ENABLE_SM2_ALGOR_ID_ENCODE_NULL) @@ -513,7 +520,6 @@ if (ENABLE_SHA2) list(APPEND tests sha224 sha256 sha384 sha512 hmac) endif() - if (ENABLE_AES) message(STATUS "ENABLE_AES is ON") add_definitions(-DENABLE_AES) diff --git a/tests/pbkdf2test.c b/tests/pbkdf2test.c index 90778a91..7eb93d1f 100644 --- a/tests/pbkdf2test.c +++ b/tests/pbkdf2test.c @@ -1,138 +1,188 @@ /* - * Copyright 2014-2022 The GmSSL Project. All Rights Reserved. + * Copyright 2014-2026 The GmSSL Project. All Rights Reserved. * - * Licensed under the Apache License, Version 2.0 (the License); you may - * not use this file except in compliance with the License. + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 */ - #include #include -#include +#include #include +#include #include #include +#define TEST_PBKDF2_MAX_PASSWORD_SIZE 257 +#define TEST_PBKDF2_MAX_SALT_SIZE 36 +#define TEST_PBKDF2_MAX_DK_SIZE 65 -struct { - char *pass; - char *salt; - int iter; - int dklen; - char *dk; -} pbkdf2_hmac_sha1_tests[] = { +#ifndef ENABLE_LONG_TEST +#define TEST_PBKDF2_MAX_ITERATION_COUNT 1000000 +#endif - // rfc 6070 test vectors for pbkdf2-hmac-sha1 - { - "password", - "salt", - 1, - 20, - "0c60c80f961f0e71f3a9b524af6012062fe037a6", - }, - { - "password", - "salt", - 2, - 20, - "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957", - }, - { - "password", - "salt", - 4096, - 20, - "4b007901b765489abead49d926f721d065a429c1", - }, - /* - { - "password", - "salt", - 16777216, // very slow - 20, - "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984", - }, - */ - { - "passwordPASSWORDpassword", - "saltSALTsaltSALTsaltSALTsaltSALTsalt", - 4096, - 25, - "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038", - }, +enum { + TEST_RESULT_VALID, + TEST_RESULT_INVALID, + TEST_RESULT_ACCEPTABLE, }; -/* -void test(void) -{ - HMAC_CTX ctx; - uint8_t iter[4] = {0, 0, 0, 1}; - uint8_t mac[20]; - size_t len; - int i; +typedef struct { + int tc_id; + const char *comment; + const char *flags; + const char *password; + const char *salt; + size_t iteration_count; + size_t dk_len; + const char *dk; + int result; +} TEST_PBKDF2_VECTOR; - hmac_init(&ctx, DIGEST_sha1(), (uint8_t *)"password", 8); - hmac_update(&ctx, (uint8_t *)"salt", 4); - hmac_update(&ctx, iter, 4); - hmac_finish(&ctx, mac, &len); - - for (i = 1; i < 4096; i++) { - uint8_t buf[20]; - memset(&ctx, 0, sizeof(HMAC_CTX)); - hmac_init(&ctx, DIGEST_sha1(), (uint8_t *)"password", 8); - hmac_update(&ctx, mac, len); - hmac_finish(&ctx, buf, &len); - int j; - for (j = 0; j < len; j++) { - mac[j] ^= buf[j]; - } - } - - - for (i = 0; i < len; i++) { - printf("%02x", mac[i]); - } - printf("\n"); -} -*/ - -static int test_pbkdf2_genkey(void) -{ -// FIXME: currently we only has SHA-1 tests, replace with SHA-256 #ifdef ENABLE_SHA1 - int i; - uint8_t key[64]; - uint8_t buf[64]; - size_t len; +#include "pbkdf2test_sha1.h" +#endif +#ifdef ENABLE_SHA2 +#include "pbkdf2test_sha224.h" +#include "pbkdf2test_sha256.h" +#include "pbkdf2test_sha384.h" +#include "pbkdf2test_sha512.h" +#endif - for (i = 0; i < sizeof(pbkdf2_hmac_sha1_tests)/sizeof(pbkdf2_hmac_sha1_tests[0]); i++) { - hex_to_bytes(pbkdf2_hmac_sha1_tests[i].dk, strlen(pbkdf2_hmac_sha1_tests[i].dk), buf, &len); +static int test_pbkdf2_hmac_wycheproof(const char *name, const DIGEST *digest, + const TEST_PBKDF2_VECTOR *tests, size_t tests_count) +{ + size_t i; + size_t skipped = 0; - if (pbkdf2_hmac_genkey(DIGEST_sha1(), - pbkdf2_hmac_sha1_tests[i].pass, strlen(pbkdf2_hmac_sha1_tests[i].pass), - (uint8_t *)pbkdf2_hmac_sha1_tests[i].salt, strlen(pbkdf2_hmac_sha1_tests[i].salt), - pbkdf2_hmac_sha1_tests[i].iter, pbkdf2_hmac_sha1_tests[i].dklen, key) != 1) { + for (i = 0; i < tests_count; i++) { + const TEST_PBKDF2_VECTOR *tv = &tests[i]; + uint8_t password[TEST_PBKDF2_MAX_PASSWORD_SIZE]; + uint8_t salt[TEST_PBKDF2_MAX_SALT_SIZE]; + uint8_t dk[TEST_PBKDF2_MAX_DK_SIZE]; + uint8_t expected[TEST_PBKDF2_MAX_DK_SIZE]; + size_t password_len; + size_t salt_len; + size_t expected_len; + int ret; + +#ifndef ENABLE_LONG_TEST + if (tv->iteration_count > TEST_PBKDF2_MAX_ITERATION_COUNT) { + fprintf(stderr, "%s tcId %d skipped: iteration_count = %zu\n", + name, tv->tc_id, tv->iteration_count); + skipped++; + continue; + } +#endif + + if (strlen(tv->password)/2 > sizeof(password) + || strlen(tv->salt)/2 > sizeof(salt) + || strlen(tv->dk)/2 > sizeof(expected) + || tv->dk_len > sizeof(dk)) { error_print(); return -1; } - if (memcmp(key, buf, pbkdf2_hmac_sha1_tests[i].dklen) != 0) { - fprintf(stderr, "test_pbkdf2_genkey test %d failed\n", i); + if (hex_to_bytes(tv->password, strlen(tv->password), password, &password_len) != 1 + || hex_to_bytes(tv->salt, strlen(tv->salt), salt, &salt_len) != 1 + || hex_to_bytes(tv->dk, strlen(tv->dk), expected, &expected_len) != 1) { + error_print(); return -1; + } + if (tv->result == TEST_RESULT_VALID && expected_len != tv->dk_len) { + error_print(); + return -1; + } + + ret = pbkdf2_hmac_genkey(digest, + password_len ? (const char *)password : NULL, password_len, + salt_len ? salt : NULL, salt_len, + tv->iteration_count, tv->dk_len, dk); + + if (tv->result == TEST_RESULT_VALID) { + if (ret != 1 || memcmp(dk, expected, expected_len) != 0) { + fprintf(stderr, "%s tcId %d failed: %s %s\n", + name, tv->tc_id, tv->comment, tv->flags); + error_print(); + return -1; + } + } else if (tv->result == TEST_RESULT_INVALID) { + if (ret == 1) { + error_print(); + return -1; + } } else { - fprintf(stderr, "test_pbkdf2_genkey test %d ok\n", i); + if (ret != 1 && ret != -1) { + error_print(); + return -1; + } } } -#endif - printf("%s() ok\n", __FUNCTION__); - return 0; + + if (skipped) { + fprintf(stderr, "%s skipped %zu long-iteration test vector(s)\n", name, skipped); + } + printf("%s() ok\n", name); + return 1; } -int main(int argc, char **argv) +#ifdef ENABLE_SHA1 +static int test_pbkdf2_hmac_sha1_wycheproof(void) { - int err = 0; - err += test_pbkdf2_genkey(); - return err; + return test_pbkdf2_hmac_wycheproof(__FUNCTION__, DIGEST_sha1(), + pbkdf2_hmac_sha1_tests, + sizeof(pbkdf2_hmac_sha1_tests)/sizeof(pbkdf2_hmac_sha1_tests[0])); +} +#endif + +#ifdef ENABLE_SHA2 +static int test_pbkdf2_hmac_sha224_wycheproof(void) +{ + return test_pbkdf2_hmac_wycheproof(__FUNCTION__, DIGEST_sha224(), + pbkdf2_hmac_sha224_tests, + sizeof(pbkdf2_hmac_sha224_tests)/sizeof(pbkdf2_hmac_sha224_tests[0])); +} + +static int test_pbkdf2_hmac_sha256_wycheproof(void) +{ + return test_pbkdf2_hmac_wycheproof(__FUNCTION__, DIGEST_sha256(), + pbkdf2_hmac_sha256_tests, + sizeof(pbkdf2_hmac_sha256_tests)/sizeof(pbkdf2_hmac_sha256_tests[0])); +} + +static int test_pbkdf2_hmac_sha384_wycheproof(void) +{ + return test_pbkdf2_hmac_wycheproof(__FUNCTION__, DIGEST_sha384(), + pbkdf2_hmac_sha384_tests, + sizeof(pbkdf2_hmac_sha384_tests)/sizeof(pbkdf2_hmac_sha384_tests[0])); +} + +static int test_pbkdf2_hmac_sha512_wycheproof(void) +{ + return test_pbkdf2_hmac_wycheproof(__FUNCTION__, DIGEST_sha512(), + pbkdf2_hmac_sha512_tests, + sizeof(pbkdf2_hmac_sha512_tests)/sizeof(pbkdf2_hmac_sha512_tests[0])); +} +#endif + +int main(void) +{ + +#ifdef ENABLE_SHA1 + if (test_pbkdf2_hmac_sha1_wycheproof() != 1) goto err; +#endif +#ifdef ENABLE_SHA2 + if (test_pbkdf2_hmac_sha224_wycheproof() != 1) goto err; + if (test_pbkdf2_hmac_sha256_wycheproof() != 1) goto err; + if (test_pbkdf2_hmac_sha384_wycheproof() != 1) goto err; + if (test_pbkdf2_hmac_sha512_wycheproof() != 1) goto err; +#endif + + printf("%s all tests passed\n", __FILE__); + return 0; +err: + error_print(); + return 1; } diff --git a/tests/pbkdf2test_sha1.h b/tests/pbkdf2test_sha1.h new file mode 100644 index 00000000..3b0f4306 --- /dev/null +++ b/tests/pbkdf2test_sha1.h @@ -0,0 +1,716 @@ +/* + * Copyright 2014-2026 The GmSSL Project. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + + +static const TEST_PBKDF2_VECTOR pbkdf2_hmac_sha1_tests[] = { + { + 1, + "RFC 6070", + "Rfc6070,Printable", + "70617373776f7264", + "73616c74", + 1u, + 20u, + "0c60c80f961f0e71f3a9b524af6012062fe037a6", + TEST_RESULT_VALID, + }, + { + 2, + "RFC 6070", + "Rfc6070,Printable", + "70617373776f7264", + "73616c74", + 2u, + 20u, + "ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957", + TEST_RESULT_VALID, + }, + { + 3, + "RFC 6070", + "Rfc6070,Printable", + "70617373776f7264", + "73616c74", + 4096u, + 20u, + "4b007901b765489abead49d926f721d065a429c1", + TEST_RESULT_VALID, + }, + { + 4, + "RFC 6070", + "Rfc6070,LargeIterationCount,Printable", + "70617373776f7264", + "73616c74", + 16777216u, + 20u, + "eefe3d61cd4da4e4e9945b3d6ba2158c2634e984", + TEST_RESULT_VALID, + }, + { + 5, + "RFC 6070", + "Rfc6070,Printable", + "70617373776f726450415353574f524470617373776f7264", + "73616c7453414c5473616c7453414c5473616c7453414c5473616c7453414c5473616c74", + 4096u, + 25u, + "3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038", + TEST_RESULT_VALID, + }, + { + 6, + "RFC 6070", + "Rfc6070,Ascii", + "7061737300776f7264", + "7361006c74", + 4096u, + 16u, + "56fa6aa75548099dcc37d7f03425e0c3", + TEST_RESULT_VALID, + }, + { + 7, + "", + "Pseudorandom,Printable", + "7130577430643470", + "798acc7c76739d75", + 4096u, + 16u, + "9ea245e919e491118087fc369142e2ee", + TEST_RESULT_VALID, + }, + { + 8, + "", + "Pseudorandom,Printable", + "5a30673349567272", + "84bbd18de5ec10ff", + 4096u, + 42u, + "b874ff052f517d94eb6cb7edd2ede57a7d96c01eea5dbe4fafc47d6fce32ce28defb14f7980c5ed3ba10", + TEST_RESULT_VALID, + }, + { + 9, + "", + "Pseudorandom,Printable", + "7439315572766f47", + "5d76db9ca0f0bae2", + 4096u, + 65u, + "56799b703ed17b58b9e3ee12c80f93b35b83baa769789c539f7a4cb3e825db5df8c7afed85bb276a01aae0dc78beb492de832b581c7d5b899b184516cf028e90f7", + TEST_RESULT_VALID, + }, + { + 10, + "", + "Pseudorandom,Printable", + "6b6f67583748447a", + "0a8fbd0232a3a7f6e60d6564c92ea35f", + 4096u, + 16u, + "8e7c43f3a3baa0ac7e8e24db0b99ea45", + TEST_RESULT_VALID, + }, + { + 11, + "", + "Pseudorandom,Printable", + "4939745242645168", + "0a3bb93c0de86a174ab005b8089706ab", + 4096u, + 42u, + "ab713dcf744ded086b1b588f570ba0c1876e8737c488a852216add421c2dd70ff3b58e5390c80bbe9103", + TEST_RESULT_VALID, + }, + { + 12, + "", + "Pseudorandom,Printable", + "6f4f4d37324f6330", + "3827c3b6b1e6de7aab096eb75e23610d", + 4096u, + 65u, + "8cd3a480add2dfd8fbfee4f49c55b6b2980955635474c5a795d1d6cdca9e0934797cd5ea797a1cf8cfa7d975a63b3f66855ec6b4a97dde26e49bd149c6259f6f52", + TEST_RESULT_VALID, + }, + { + 13, + "", + "Pseudorandom,Printable", + "6761734354484546654d36526f61386349", + "cac9ae7ef670990e", + 4096u, + 16u, + "5e71edeb8746e5215b0949e0f64a03aa", + TEST_RESULT_VALID, + }, + { + 14, + "", + "Pseudorandom,Printable", + "75375330684678774e33586f76707a6551", + "201b1e277f4ff955", + 4096u, + 42u, + "349d048452b7fc74ae8e7b373925621321ff807968e3ff4d5a31b815ace5b95d07cd868f20f958161c68", + TEST_RESULT_VALID, + }, + { + 15, + "", + "Pseudorandom,Printable", + "51524b6a6d6d6b48524462507178696868", + "e71d6a702d2d54bc", + 4096u, + 65u, + "5c480790477441c254bc89611d52e5cb83fb0e6eb9fe1000344c638dfd134d67d4c633f6fdbb3316dc57115f34b0e9d4186b96023d6d0c6b90da34720731bdad6b", + TEST_RESULT_VALID, + }, + { + 16, + "", + "Pseudorandom,Printable", + "3732317a52704b79306b4c6d3862317279", + "8b9314972ef99ac98b69b6c2ac4247c7", + 4096u, + 16u, + "9edef2939c154b91d359876d41772d79", + TEST_RESULT_VALID, + }, + { + 17, + "", + "Pseudorandom,Printable", + "75507078436d7536577a68535030553947", + "874d7cc9369ff9988642ffe05a7f2153", + 4096u, + 42u, + "69cc4a0b7374717be2312a49cc4768a8e40a360f8637eb475dc125f253a54747edfcb64132ce8097a9ed", + TEST_RESULT_VALID, + }, + { + 18, + "", + "Pseudorandom,Printable", + "6f39505350597a445349783365374d7063", + "1569909588ec25a3afa147cb7fff9fb1", + 4096u, + 65u, + "744a5c9831b81db08874abdc9cd0afd7bc7f11250da19ad6aa61ed02626b1d52dcbf9bbb34dd44c65a8a7973f34244e0e16f27e31ee45c37d84ad1f9465445ddc9", + TEST_RESULT_VALID, + }, + { + 19, + "", + "Pseudorandom,Ascii", + "4b2d6c600e66535c7f3d6d6c", + "7a4c02db8bd8fcc2", + 4096u, + 16u, + "8739361a2fa899f6d5cceba27d4142da", + TEST_RESULT_VALID, + }, + { + 20, + "", + "Pseudorandom,Ascii", + "287e74200e6b69285f5f7e00", + "dddf018487fa4b95", + 4096u, + 42u, + "68a1ad4082c5f45e339ac85e44fbe4368fd604d73030bab4d459e0f7e79a709293a349305bc91ac86de4", + TEST_RESULT_VALID, + }, + { + 21, + "", + "Pseudorandom,Ascii", + "0f3b5e220e1c000c2a703a4d", + "7cf71b19c0daf499", + 4096u, + 65u, + "b58ad2cb772a9eb1bae46afcfc7738a043bcc3ff602071850d3019b8935270dc20a2ee90c5cb8f6c323b49f7477797352b1ba0b7973f6a2652cd2bb319f092f371", + TEST_RESULT_VALID, + }, + { + 22, + "", + "Pseudorandom,Ascii", + "1f4b7b354903545f2b07720b", + "62f91ea01f3a18aa2f122bd15c4a615b", + 4096u, + 16u, + "deea05da06df69c5401517d132678f90", + TEST_RESULT_VALID, + }, + { + 23, + "", + "Pseudorandom,Ascii", + "5d7e1f70174b2f616c0d6722", + "4fb602173327228431dd8d088154c7ec", + 4096u, + 42u, + "05489b534681b9eb74d4bac4caeaa9e7fa5977dca35314b0118f57662b539b016b38c6393c8c75aa419d", + TEST_RESULT_VALID, + }, + { + 24, + "", + "Pseudorandom,Ascii", + "2657324e694c6b242b174f1a", + "3cad67ef1eaf3aaafb5ee372d6b1ecb4", + 4096u, + 65u, + "a175e5aa360bd47b5e0e7d4d7bb29d0e4d5eef89f80e30e5570cb2b21aabdffb37996aee3dfefef1d79d1ec9fa0198276db9ed763770f1127d4d3e0c047037ab0a", + TEST_RESULT_VALID, + }, + { + 25, + "", + "Pseudorandom,Ascii", + "15296b0933473119180f3c0645202d5221633803", + "d7412e4137fc4410", + 4096u, + 16u, + "6033619ba0f6a1c4d2877ab466cc8bca", + TEST_RESULT_VALID, + }, + { + 26, + "", + "Pseudorandom,Ascii", + "2a1124361d53464245580130076d6b54001e3d01", + "7ecaaed1eab03c3f", + 4096u, + 42u, + "2e481954bbb8ac4e330a1d28ea8f736d63a1f760bb58d97a70855ffe8ff9480972c46b645095470a8cda", + TEST_RESULT_VALID, + }, + { + 27, + "", + "Pseudorandom,Ascii", + "666252024e18233308430820127e753e6b041f56", + "756fafa7fac1f019", + 4096u, + 65u, + "95273cd50ba4a4e419b2e3a59d4587291188710912bcab5bf7640deb5f34c9c046f410f4e6b83192a6d36e96b5b8f11a898fb69d1ea6df38614138165c5438ee86", + TEST_RESULT_VALID, + }, + { + 28, + "", + "Pseudorandom,Ascii", + "7a106c2773542c791d2f0a02632b69644f666278", + "a36350db68186d747254bd9835219487", + 4096u, + 16u, + "d206f75207b50786c7571d9a4b21a2a0", + TEST_RESULT_VALID, + }, + { + 29, + "", + "Pseudorandom,Ascii", + "0b3c6f070149615b5b461c7f5c3a366a6d375402", + "42be6c8fcd7858458fb97cece0069524", + 4096u, + 42u, + "6a0ffe5218cde4ec89dad3bc6ff32133c31b86baf45740fdd1313b8b2c525871fce7be5b312999bde78d", + TEST_RESULT_VALID, + }, + { + 30, + "", + "Pseudorandom,Ascii", + "5177161d237c1b64426353434113015665344a6c", + "596dbf5830aa8b00682429883e0b1ed0", + 4096u, + 65u, + "52ec2859141885b77108eade00564a7564c41aa1747af8ef2fee384ada8e82c51743a5005d3ca4f855339837e8ff2e8fe78dcb17904a192591f508c801fc4c8abc", + TEST_RESULT_VALID, + }, + { + 31, + "", + "Pseudorandom,Utf8", + "d0a3d1bed38acc83", + "8dfae85c9f2072ae", + 4096u, + 16u, + "672b655566b8ce79b5e5244b2bb59472", + TEST_RESULT_VALID, + }, + { + 32, + "", + "Pseudorandom,Utf8", + "d0bcccab64cf9a", + "15187b0393d8a441", + 4096u, + 42u, + "b753a37266ffa863239bf199abf0a8eef11c7a40cfc058ea4d46f58353d08a7bffda005327f98db8fd1d", + TEST_RESULT_VALID, + }, + { + 33, + "", + "Pseudorandom,Utf8", + "c4bddd8f4ad69d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "28bffd8c6c6a6231336c3948c5a00510f433be50c1a36ebc2f180ace80feb4914fa35204386c2b6eb41e634951702f6de924bcffaaf4d976c01794c64c6af3d08e", + TEST_RESULT_VALID, + }, + { + 34, + "", + "Pseudorandom,Utf8", + "c299d292cd92dcb8", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "5be67e596d953ede56531b9a66bbe566", + TEST_RESULT_VALID, + }, + { + 35, + "", + "Pseudorandom,Utf8", + "d086d0bed193d9b6", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "f73504788a1c491bc856cb3ab9b873f07cf1dba837c100997029a206f19169583c8a2c4efe1e2bbca6aa", + TEST_RESULT_VALID, + }, + { + 36, + "", + "Pseudorandom,Utf8", + "da8ddcacde86d3b0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "8ad0fc0024268cc557baad39644cbbe03fbc251262a51fb20f5dd2f1b4e14e73f4f53f6912e3a75f69f6ec6a42273411069df812899e4877323351b6056d8f21a2", + TEST_RESULT_VALID, + }, + { + 37, + "", + "Pseudorandom,Utf8", + "cfbec3b9d7acc7a9d585d1a5c28fcca119", + "e9c55717a1259a29", + 4096u, + 16u, + "4a5fdfd0cafdbb8793806299275372dd", + TEST_RESULT_VALID, + }, + { + 38, + "", + "Pseudorandom,Utf8", + "d29cd099d197d1b0da9aca8ec2a3daa5c38a", + "5acc2d76a9f4444c", + 4096u, + 42u, + "0479f3777ab64d13f2b514526b149686347688d824be30e077b2bcd4c05cbca845e3091b00d3b049e721", + TEST_RESULT_VALID, + }, + { + 39, + "", + "Pseudorandom,Utf8", + "de89d193d18c75c2b8c6bcd190d198c3a2", + "c69c3b58917e0975", + 4096u, + 65u, + "7374cbb82049ccfb9271ee9df3dcdcf5f64870f356816e5077f8a5fb0cad52e14df3609814b771bf7d151de23d91584b973bc7fd34ee955a893f904fcfdc9e0215", + TEST_RESULT_VALID, + }, + { + 40, + "", + "Pseudorandom,Utf8", + "da9dd096cb93db88dbbed495ceaacf853c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "f90c5c5cab441e656c21a259fb83547e", + TEST_RESULT_VALID, + }, + { + 41, + "", + "Pseudorandom,Utf8", + "de81d0a6cea9c7b3cbabce9bda90d29f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "bf873cb5210319562901a01c9fc8521a41b4d0397f774853f2499ec6b6b37490c4a8487523868af2ee3c", + TEST_RESULT_VALID, + }, + { + 42, + "", + "Pseudorandom,Utf8", + "d281da97c8a3d8b7ceb9db80dc8dd4a0c3be", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "dcd906b27d8cffe87013fbb1557877e21c2bb58fcdec5f94d9a18beb523902c60fc4d63bb78f58cff300309f4d3411e8f524dadeadd956d94c551e3370b55c60b1", + TEST_RESULT_VALID, + }, + { + 43, + "", + "Pseudorandom,NonUtf8", + "8423ec7ea4ca4b03", + "8dfae85c9f2072ae", + 4096u, + 16u, + "5409681bde39075bda761ad33cfd06f8", + TEST_RESULT_VALID, + }, + { + 44, + "", + "Pseudorandom,NonUtf8", + "2c3c932bf0648bda", + "15187b0393d8a441", + 4096u, + 42u, + "357f1e696f62b232b242d6a64b680fb73ccda4cdde09cc7ade62d5a9f828f4ac2f728a687c79a079c4ff", + TEST_RESULT_VALID, + }, + { + 45, + "", + "Pseudorandom,NonUtf8", + "393d474fd84a259d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "e04e777c27b3ab84cd7647751f710fa37f50019f2b1536ae52b3f7893dd9bcd6345fa2e1459501c01dfe65da07dd83ff6e88e211418c88fec36410e6efaaf59240", + TEST_RESULT_VALID, + }, + { + 46, + "", + "Pseudorandom,NonUtf8", + "48997492c3528738", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "1436967f0de829ae653a31c45168525c", + TEST_RESULT_VALID, + }, + { + 47, + "", + "Pseudorandom,NonUtf8", + "74064c3ebc53d676", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "6b7433a14d6225b5222fb7d5f5dfe674154c075ad83d13dbb274ccf6880f75c7545d35bc6e7bfcfa814b", + TEST_RESULT_VALID, + }, + { + 48, + "", + "Pseudorandom,NonUtf8", + "668d4f2c8f86f4f0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "23c9045a0a037f60d0ef0e4058c8a3633714c67e4d3f4637499de4d9c949248bfce2bc7cd6bac4cfe74e9c28a221401d3ea7d99e0b33ca23bcd66ff239d1e8c40d", + TEST_RESULT_VALID, + }, + { + 49, + "", + "Pseudorandom,NonUtf8", + "e3feb0f96dec61e9dd451465f88f132119", + "e9c55717a1259a29", + 4096u, + 16u, + "16ef25c3c98e34147b33a8d33813b13f", + TEST_RESULT_VALID, + }, + { + 50, + "", + "Pseudorandom,NonUtf8", + "5c9ca419dc576470269a828e40a3aea5ca", + "5acc2d76a9f4444c", + 4096u, + 42u, + "fb711258128c94ffbe6c2ecffa8ae50823ec51c71ad512a2c3df0e56ad82403a87cb1b24e4049f56c065", + TEST_RESULT_VALID, + }, + { + 51, + "", + "Pseudorandom,NonUtf8", + "bf898453344c6875f0b8b9bc2c50fc58e2", + "c69c3b58917e0975", + 4096u, + 65u, + "25917d740b0882ba22158b8008ce8c074462c3751413b85e44e86366147c06aa11fa07dd3ee95424d4c8db162cbd164d795e9ddfb2b369b3475c1152c2d3f01b19", + TEST_RESULT_VALID, + }, + { + 52, + "", + "Pseudorandom,NonUtf8", + "9e9d7c166ad3bec856fe5d15d3aacbc53c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "72a9fed7bf44ed9f3d09a812e14ada47", + TEST_RESULT_VALID, + }, + { + 53, + "", + "Pseudorandom,NonUtf8", + "17812c26bba941f3c2ebdb9bb6904c9f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "65a48055639d90cb775b68926e1ad0bfa164d80c010711da0d1ff6838da9d4a7d1aaf28f3b1994f8c50f", + TEST_RESULT_VALID, + }, + { + 54, + "", + "Pseudorandom,NonUtf8", + "6c816697ba2366375bb986c0af0d7d20fe", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "17d8c8f2974fbcb8c75109d1660e72fc808aaa96fbd8542a0f51bab2135333e42a5e97c5a96005550aafdba80f78da789d2759e79135a75315baa99f27e8f5f898", + TEST_RESULT_VALID, + }, + { + 55, + "empty password", + "Pseudorandom,Printable", + "", + "1a71e2118c9fbcc9", + 4096u, + 32u, + "93f5d4cf0da5cd8c1f2c71a48a8efebfbda76763c29ca535c5a09e627af5c410", + TEST_RESULT_VALID, + }, + { + 56, + "long password", + "Pseudorandom,Printable", + "523249584467597a5a4271363970667a4a714e744b7761545a4544494676766b6a6253417167566e456a6b456b454557504e69383653626a6e376b725764394d67", + "d26b99043c8ba3a4", + 4096u, + 32u, + "de22ce1289402528225f5e52e00dad82b394f1e593d2fa0fa83185137bef5ed2", + TEST_RESULT_VALID, + }, + { + 57, + "long password", + "Pseudorandom,Printable", + "63727a466d396430795463456a6468545758693877674e516f544e6d486e61686f6956317071613133655471477933497531354b4f52516339494c53646756527a45524e6b4463723565676a62584a78426572536a74726b6b674341616a63356243354434706e66743836663754626663666370595a30767354454d4930524178", + "9266da5b8c102b27", + 4096u, + 32u, + "c80288d20baa94340a79735e9257867b92709568e71355209911d7c4ad484621", + TEST_RESULT_VALID, + }, + { + 58, + "long password", + "Pseudorandom,Printable", + "32647a56696e6f45774464656c656257797058314d6f4f685975585a463172514b7a32535a6c307578576377796f3561416e6f42524e7a5044763072513662693742345a34324f50695258534c6859684441643262746f647633744d54424430744b46316e4b655942656565547a70413145434150713942687a4a4c555a67737636754e4b664450333558414d684a486c736a6f5a796b677130624d506265556941796d6f324371586b64524752633876544176684e5a5838536f564d33704e74594a4a7258766975337547583233736a353847723061614a4b45763765796c373248636e6167713474766e533737626d6376676c79536d347370707a65673869", + "6a06903b78dae6de", + 4096u, + 32u, + "90767f81981d82c053146a0f69f04d3035a675ffc0cbca5f5debdccfbe59aa69", + TEST_RESULT_VALID, + }, + { + 59, + "special case password", + "NonUtf8", + "ff", + "32140a66b88e1683", + 4096u, + 16u, + "33d50f1918fd8cc91969b41cf0ac6cb7", + TEST_RESULT_VALID, + }, + { + 60, + "special case password", + "NonUtf8", + "ffffffffffffffff", + "8a359634423ed028", + 4096u, + 16u, + "ced7945a9c40448206dc738a462cabe5", + TEST_RESULT_VALID, + }, + { + 61, + "special case password", + "NonUtf8", + "c0c0c0c0c0c0c0c0", + "d6f596f170ed2414", + 4096u, + 16u, + "c6d3d7d40940ce6ea88ec034df470722", + TEST_RESULT_VALID, + }, + { + 62, + "special case password", + "NonUtf8", + "eeeeeeeeeeeeeeee", + "6b2269425e288d03", + 4096u, + 16u, + "d1dd8d5b7f5e74d628bc656b2c4a7e08", + TEST_RESULT_VALID, + }, + { + 63, + "special case password", + "NonUtf8", + "f0f0f0f0f0f0f0f0", + "ebf0b04633711248", + 4096u, + 16u, + "1cf137fbce42e38f531a4f36ff3717e4", + TEST_RESULT_VALID, + }, + { + 64, + "special case password", + "Ascii", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "9de9b71eeb9d9a34", + 4096u, + 16u, + "a7b2fbb97f52f3b5f9006e0f1acf0903", + TEST_RESULT_VALID, + }, +}; diff --git a/tests/pbkdf2test_sha224.h b/tests/pbkdf2test_sha224.h new file mode 100644 index 00000000..de6e845b --- /dev/null +++ b/tests/pbkdf2test_sha224.h @@ -0,0 +1,650 @@ +/* + * Copyright 2014-2026 The GmSSL Project. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + + +static const TEST_PBKDF2_VECTOR pbkdf2_hmac_sha224_tests[] = { + { + 1, + "", + "Pseudorandom,Printable", + "7130577430643470", + "798acc7c76739d75", + 4096u, + 16u, + "8ee143d436330d9978192aadd0b94620", + TEST_RESULT_VALID, + }, + { + 2, + "", + "Pseudorandom,Printable", + "5a30673349567272", + "84bbd18de5ec10ff", + 4096u, + 42u, + "9a1f601c9cbdab8d856ca134226400b7bb76e05f832e6dbed7fbbbb8588f350df805442b5978f5640f52", + TEST_RESULT_VALID, + }, + { + 3, + "", + "Pseudorandom,Printable", + "7439315572766f47", + "5d76db9ca0f0bae2", + 4096u, + 65u, + "a2f0f558845aa8fd8c5f7c203a59ddd0d58f1887150c2591c2909233f742748728c1cd68444c8f21d109557ed43ce6e9a1d98334069a6cedda77836fef55ad9ebd", + TEST_RESULT_VALID, + }, + { + 4, + "", + "Pseudorandom,Printable", + "6b6f67583748447a", + "0a8fbd0232a3a7f6e60d6564c92ea35f", + 4096u, + 16u, + "bfd1d1ebc924499214c89c76006da228", + TEST_RESULT_VALID, + }, + { + 5, + "", + "Pseudorandom,Printable", + "4939745242645168", + "0a3bb93c0de86a174ab005b8089706ab", + 4096u, + 42u, + "1fc1f840c5b1810f6f01faefe26c895ae6b9f7207dc7cf1add3aed572eaf12bbbaddfe80db5422d50218", + TEST_RESULT_VALID, + }, + { + 6, + "", + "Pseudorandom,Printable", + "6f4f4d37324f6330", + "3827c3b6b1e6de7aab096eb75e23610d", + 4096u, + 65u, + "7444ff45b60c82af7f14f218361734e42b854fb7c1997d1266240392b6bf297f5a99906aa3c5c0156d03ffae52615f85a21ff45bdcb3ae7e5159db15d257524468", + TEST_RESULT_VALID, + }, + { + 7, + "", + "Pseudorandom,Printable", + "6761734354484546654d36526f61386349", + "cac9ae7ef670990e", + 4096u, + 16u, + "c9448067dc15c12a1550c0b0a0e2a358", + TEST_RESULT_VALID, + }, + { + 8, + "", + "Pseudorandom,Printable", + "75375330684678774e33586f76707a6551", + "201b1e277f4ff955", + 4096u, + 42u, + "2f4159d45782f53fb33dd1369d3aea4e2374ca4527232b6a9556e710850d5029379bf3f304d7deb46a16", + TEST_RESULT_VALID, + }, + { + 9, + "", + "Pseudorandom,Printable", + "51524b6a6d6d6b48524462507178696868", + "e71d6a702d2d54bc", + 4096u, + 65u, + "4d7e0c01e9b1ea0f6a50759994199d9f0044ed9cfc10808ba8412ef2014ef3d2aed990e7a8822e51adca3874fa65e99c7bf73a6f42f75c463d9f865facca832ce3", + TEST_RESULT_VALID, + }, + { + 10, + "", + "Pseudorandom,Printable", + "3732317a52704b79306b4c6d3862317279", + "8b9314972ef99ac98b69b6c2ac4247c7", + 4096u, + 16u, + "1852ac8b5be4deaec864b3067568662a", + TEST_RESULT_VALID, + }, + { + 11, + "", + "Pseudorandom,Printable", + "75507078436d7536577a68535030553947", + "874d7cc9369ff9988642ffe05a7f2153", + 4096u, + 42u, + "8b2f2b1e5fcf522011021c828cf26fb17bdbbe158e8af6998c0decddad9be0b9afb5ed20c66f6bc291aa", + TEST_RESULT_VALID, + }, + { + 12, + "", + "Pseudorandom,Printable", + "6f39505350597a445349783365374d7063", + "1569909588ec25a3afa147cb7fff9fb1", + 4096u, + 65u, + "aefe089d5e9ee63c3523e11bbe71eb450a4018aa4e254ed2b2ed87d05a1b3004d384647b7409c6c757c642377b2dd00d9d08056bf593c39397df746bc6f4d16f9e", + TEST_RESULT_VALID, + }, + { + 13, + "", + "Pseudorandom,Ascii", + "4b2d6c600e66535c7f3d6d6c", + "7a4c02db8bd8fcc2", + 4096u, + 16u, + "c49bf50d62342de453882f039bb24f9c", + TEST_RESULT_VALID, + }, + { + 14, + "", + "Pseudorandom,Ascii", + "287e74200e6b69285f5f7e00", + "dddf018487fa4b95", + 4096u, + 42u, + "b40505833bd98dfbf63887c2a3a01b2b6eaf74f2d84eb2c61dca3e7d71518838a8be7d6a4e523ef5b560", + TEST_RESULT_VALID, + }, + { + 15, + "", + "Pseudorandom,Ascii", + "0f3b5e220e1c000c2a703a4d", + "7cf71b19c0daf499", + 4096u, + 65u, + "98c020d02eeaec4b22a02f868ddf3605b71b5cc6f7100290e52d34a9130b0fa216c642bac79880b6cd1a994c4174ec5eb49b006e9af04d2f287e08947c39a1146c", + TEST_RESULT_VALID, + }, + { + 16, + "", + "Pseudorandom,Ascii", + "1f4b7b354903545f2b07720b", + "62f91ea01f3a18aa2f122bd15c4a615b", + 4096u, + 16u, + "e3d468c8fdd6dc804807a5d95c582fe9", + TEST_RESULT_VALID, + }, + { + 17, + "", + "Pseudorandom,Ascii", + "5d7e1f70174b2f616c0d6722", + "4fb602173327228431dd8d088154c7ec", + 4096u, + 42u, + "8bd0fea27f1cfbfe25ac2984555f8df381368988d9f2dbffc22131dd965753afd1da4a53410557c23506", + TEST_RESULT_VALID, + }, + { + 18, + "", + "Pseudorandom,Ascii", + "2657324e694c6b242b174f1a", + "3cad67ef1eaf3aaafb5ee372d6b1ecb4", + 4096u, + 65u, + "aed6d39875469a31c7ad938fd8851332a63a3dacff2b61884cea25f9e81c5610ca9d1c4f1a1afeb05d55bd9109a12ee0a71219aa40525b8cbe6af98dfd9e2f01d7", + TEST_RESULT_VALID, + }, + { + 19, + "", + "Pseudorandom,Ascii", + "15296b0933473119180f3c0645202d5221633803", + "d7412e4137fc4410", + 4096u, + 16u, + "8d1b5237ed7520cb0027882bd0467f93", + TEST_RESULT_VALID, + }, + { + 20, + "", + "Pseudorandom,Ascii", + "2a1124361d53464245580130076d6b54001e3d01", + "7ecaaed1eab03c3f", + 4096u, + 42u, + "b95ebbc29ead629df25d6533554fbf46647222984c903ff37119b8dacd7aaba8882920de15de74497ed2", + TEST_RESULT_VALID, + }, + { + 21, + "", + "Pseudorandom,Ascii", + "666252024e18233308430820127e753e6b041f56", + "756fafa7fac1f019", + 4096u, + 65u, + "fe93a237dd6d3b8f0b2b7eacfbe7ded7380459b8178442789a1ebedd07ee2a0e19be10cda8408874c74836f50fe91f40d53313a66af23ed3430a6ecddf1385c100", + TEST_RESULT_VALID, + }, + { + 22, + "", + "Pseudorandom,Ascii", + "7a106c2773542c791d2f0a02632b69644f666278", + "a36350db68186d747254bd9835219487", + 4096u, + 16u, + "2ed3182fe79f06c9a596fd490b1c017d", + TEST_RESULT_VALID, + }, + { + 23, + "", + "Pseudorandom,Ascii", + "0b3c6f070149615b5b461c7f5c3a366a6d375402", + "42be6c8fcd7858458fb97cece0069524", + 4096u, + 42u, + "94414d27ac8d70b9bd2f1bd2b118d2e3e1357d2f1b0bd6362860cf4bb147ccacb7fc3368ec510956bf0c", + TEST_RESULT_VALID, + }, + { + 24, + "", + "Pseudorandom,Ascii", + "5177161d237c1b64426353434113015665344a6c", + "596dbf5830aa8b00682429883e0b1ed0", + 4096u, + 65u, + "e7e75e35802873aaab1f30780c20f94e78b170d67b2e4a176021965e625e4627cb3426160fa1d2061c6811f3f72c501fdafe661b694bcb121b51c921574ea2db58", + TEST_RESULT_VALID, + }, + { + 25, + "", + "Pseudorandom,Utf8", + "d0a3d1bed38acc83", + "8dfae85c9f2072ae", + 4096u, + 16u, + "cb040e12e0eea63ad10d001e89919ac6", + TEST_RESULT_VALID, + }, + { + 26, + "", + "Pseudorandom,Utf8", + "d0bcccab64cf9a", + "15187b0393d8a441", + 4096u, + 42u, + "6fce6b09ea9b732ac9c8cde746cde750afd085727c5b6e682de5a7d37e675b00b04793f07b06f42c8b71", + TEST_RESULT_VALID, + }, + { + 27, + "", + "Pseudorandom,Utf8", + "c4bddd8f4ad69d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "8b58d6b6e4713dfab03329c62062a9853773b28c1841f8d30fdb8c6ba784a4670c1597f3e7271dcfdbd92a1ebf568670d4089080ecd5ae2ec9764d9d2ae7a8c9ed", + TEST_RESULT_VALID, + }, + { + 28, + "", + "Pseudorandom,Utf8", + "c299d292cd92dcb8", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "3c7b934589ba433d0da6e397f132616f", + TEST_RESULT_VALID, + }, + { + 29, + "", + "Pseudorandom,Utf8", + "d086d0bed193d9b6", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "7814fd5d064e12b86cd9e6b61cbb2dca414b1b12e665acc8f6ae7922a5c60113d3fc181457b6733c61da", + TEST_RESULT_VALID, + }, + { + 30, + "", + "Pseudorandom,Utf8", + "da8ddcacde86d3b0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "2d631f110b6bc4ea1ee462d6039af2f3ac651c4739f9a246eff02bcbccab7a72a854c1a1f6429c4ee1c0d62e0cf56ee5906f989e8f6ded492a33977f233d5d0a6e", + TEST_RESULT_VALID, + }, + { + 31, + "", + "Pseudorandom,Utf8", + "cfbec3b9d7acc7a9d585d1a5c28fcca119", + "e9c55717a1259a29", + 4096u, + 16u, + "9999bb75024ef114c3e0787500c72aaa", + TEST_RESULT_VALID, + }, + { + 32, + "", + "Pseudorandom,Utf8", + "d29cd099d197d1b0da9aca8ec2a3daa5c38a", + "5acc2d76a9f4444c", + 4096u, + 42u, + "c74a4ace9c8dec9490adccb6bad6f38a7b36ea30553bf032823c42bb9970a986f409e0c6314f4a82406b", + TEST_RESULT_VALID, + }, + { + 33, + "", + "Pseudorandom,Utf8", + "de89d193d18c75c2b8c6bcd190d198c3a2", + "c69c3b58917e0975", + 4096u, + 65u, + "b4baf5e438c7465049535ea5f183ccc01bf412f515e52b5259a6dbde5627193e94d632411ed16d271e119ea80ebf6c19834c1d956cab22aec7337f11662564d026", + TEST_RESULT_VALID, + }, + { + 34, + "", + "Pseudorandom,Utf8", + "da9dd096cb93db88dbbed495ceaacf853c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "59dd1197e7721f9f3be4cbdd309e4dfd", + TEST_RESULT_VALID, + }, + { + 35, + "", + "Pseudorandom,Utf8", + "de81d0a6cea9c7b3cbabce9bda90d29f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "2699a8ac4728c9535b2c094be58ed578c425f7c479e40946728be29c6ab14d52cc03b602b91199a213fe", + TEST_RESULT_VALID, + }, + { + 36, + "", + "Pseudorandom,Utf8", + "d281da97c8a3d8b7ceb9db80dc8dd4a0c3be", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "33083fc03d8634cd65c9a5839d7cfdcd6b09cf8c003a90ceeb5e3e58ff719a2e1d8f6cec64506c01d159079cb3335197534830a6725efc30b8667aee805afa1d07", + TEST_RESULT_VALID, + }, + { + 37, + "", + "Pseudorandom,NonUtf8", + "8423ec7ea4ca4b03", + "8dfae85c9f2072ae", + 4096u, + 16u, + "3b84b80b42f43bca914e80164355e852", + TEST_RESULT_VALID, + }, + { + 38, + "", + "Pseudorandom,NonUtf8", + "2c3c932bf0648bda", + "15187b0393d8a441", + 4096u, + 42u, + "7ce297a6d0588e7c9f6d2d75f44b0a8833f074139048aa0f4e4ab384b6776b60ef1a146eeafd2ab57c3e", + TEST_RESULT_VALID, + }, + { + 39, + "", + "Pseudorandom,NonUtf8", + "393d474fd84a259d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "a2320e47599baea5be1c4d5974fbff28d613e7aee0524aac6894e220ae5e168a3d9b9f8998ae4e13342192f682c08a7f3b9461f5c4792c288534765d6aaefae2c7", + TEST_RESULT_VALID, + }, + { + 40, + "", + "Pseudorandom,NonUtf8", + "48997492c3528738", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "a37a0077cd05aa668e786dd304981f9d", + TEST_RESULT_VALID, + }, + { + 41, + "", + "Pseudorandom,NonUtf8", + "74064c3ebc53d676", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "b35e1def1113955c4f667c6e2eedf363fbdfa88486f8035223b0e1e3eef0399b543a779cf57dc84a0341", + TEST_RESULT_VALID, + }, + { + 42, + "", + "Pseudorandom,NonUtf8", + "668d4f2c8f86f4f0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "6c8d13d7925f29cbf6987213e4842a7cde9f03ae8802bad7d493864e5f26144a80347e5a54c3ab2884cacd9aa6d41151afdbf31c0335b5b108c12c8b469386f069", + TEST_RESULT_VALID, + }, + { + 43, + "", + "Pseudorandom,NonUtf8", + "e3feb0f96dec61e9dd451465f88f132119", + "e9c55717a1259a29", + 4096u, + 16u, + "a4078a7899f2adbab5f3451fcb89340a", + TEST_RESULT_VALID, + }, + { + 44, + "", + "Pseudorandom,NonUtf8", + "5c9ca419dc576470269a828e40a3aea5ca", + "5acc2d76a9f4444c", + 4096u, + 42u, + "350c195ddd613de101173c0601ce650d41ee8e09232567536b66abed5f752b72e07a69dea3c01bf71f47", + TEST_RESULT_VALID, + }, + { + 45, + "", + "Pseudorandom,NonUtf8", + "bf898453344c6875f0b8b9bc2c50fc58e2", + "c69c3b58917e0975", + 4096u, + 65u, + "3b9b133ec921e8ea9dc432e688a15bab4217a02b34535f6aeecc3ab53b255e7bf8ec55a21ccc075fdc9b46c6ebefb1d638a8aa7a59f23d397ced4c8bf9946fa31a", + TEST_RESULT_VALID, + }, + { + 46, + "", + "Pseudorandom,NonUtf8", + "9e9d7c166ad3bec856fe5d15d3aacbc53c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "28ffe8e4266995d04219ae8d8ed8ccfc", + TEST_RESULT_VALID, + }, + { + 47, + "", + "Pseudorandom,NonUtf8", + "17812c26bba941f3c2ebdb9bb6904c9f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "ae47a0c8b42de24c2198ac5835c40197b7ca16039e35d696757ff9e5c726f3438ea6643bf9b305ec6d9c", + TEST_RESULT_VALID, + }, + { + 48, + "", + "Pseudorandom,NonUtf8", + "6c816697ba2366375bb986c0af0d7d20fe", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "55177ff79ba5c91d166676c501298e04697c3aa1d74a6d5d0083885836235b3d1de8b92cfe45a7565aae340389f6fe2954ff8bd2c6385feb07ca66fbdb3e6c60e6", + TEST_RESULT_VALID, + }, + { + 49, + "empty password", + "Pseudorandom,Printable", + "", + "1a71e2118c9fbcc9", + 4096u, + 32u, + "07ac722bd16e1c4172d8603276a9e0fa7cf2e571afa7ff758ab00a078716e92a", + TEST_RESULT_VALID, + }, + { + 50, + "long password", + "Pseudorandom,Printable", + "523249584467597a5a4271363970667a4a714e744b7761545a4544494676766b6a6253417167566e456a6b456b454557504e69383653626a6e376b725764394d67", + "d26b99043c8ba3a4", + 4096u, + 32u, + "b6222d1ed0a2de7cf974f5781107f2945efce5bae3593df6e4fefd56dbd0708a", + TEST_RESULT_VALID, + }, + { + 51, + "long password", + "Pseudorandom,Printable", + "63727a466d396430795463456a6468545758693877674e516f544e6d486e61686f6956317071613133655471477933497531354b4f52516339494c53646756527a45524e6b4463723565676a62584a78426572536a74726b6b674341616a63356243354434706e66743836663754626663666370595a30767354454d4930524178", + "9266da5b8c102b27", + 4096u, + 32u, + "784299cb3c35493271eb7d454afccc6badb739df38ddc7063a5d7b89711e4557", + TEST_RESULT_VALID, + }, + { + 52, + "long password", + "Pseudorandom,Printable", + "32647a56696e6f45774464656c656257797058314d6f4f685975585a463172514b7a32535a6c307578576377796f3561416e6f42524e7a5044763072513662693742345a34324f50695258534c6859684441643262746f647633744d54424430744b46316e4b655942656565547a70413145434150713942687a4a4c555a67737636754e4b664450333558414d684a486c736a6f5a796b677130624d506265556941796d6f324371586b64524752633876544176684e5a5838536f564d33704e74594a4a7258766975337547583233736a353847723061614a4b45763765796c373248636e6167713474766e533737626d6376676c79536d347370707a65673869", + "6a06903b78dae6de", + 4096u, + 32u, + "b7bfe6935e410bf32d784c62286a27c1a2cf2f62aaf24d8c3cd37e530975208f", + TEST_RESULT_VALID, + }, + { + 53, + "special case password", + "NonUtf8", + "ff", + "32140a66b88e1683", + 4096u, + 16u, + "faeec67a6a2412e6358bbcf94fd38ded", + TEST_RESULT_VALID, + }, + { + 54, + "special case password", + "NonUtf8", + "ffffffffffffffff", + "8a359634423ed028", + 4096u, + 16u, + "fb035bae860781afee4d914470ea4850", + TEST_RESULT_VALID, + }, + { + 55, + "special case password", + "NonUtf8", + "c0c0c0c0c0c0c0c0", + "d6f596f170ed2414", + 4096u, + 16u, + "fd42b834d6972af4605a86838471ad82", + TEST_RESULT_VALID, + }, + { + 56, + "special case password", + "NonUtf8", + "eeeeeeeeeeeeeeee", + "6b2269425e288d03", + 4096u, + 16u, + "3f57172c4cc4da1ccbd022f84c7b82a8", + TEST_RESULT_VALID, + }, + { + 57, + "special case password", + "NonUtf8", + "f0f0f0f0f0f0f0f0", + "ebf0b04633711248", + 4096u, + 16u, + "645e34ea3e1a8dc4aaf2ffb1f970c3ee", + TEST_RESULT_VALID, + }, + { + 58, + "special case password", + "Ascii", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "9de9b71eeb9d9a34", + 4096u, + 16u, + "54fdb38a5a46c597866bdb22b0bdd7b0", + TEST_RESULT_VALID, + }, +}; diff --git a/tests/pbkdf2test_sha256.h b/tests/pbkdf2test_sha256.h new file mode 100644 index 00000000..d071ea9e --- /dev/null +++ b/tests/pbkdf2test_sha256.h @@ -0,0 +1,672 @@ +/* + * Copyright 2014-2026 The GmSSL Project. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + + +static const TEST_PBKDF2_VECTOR pbkdf2_hmac_sha256_tests[] = { + { + 1, + "RFC 7914", + "Rfc7914,Printable", + "706173737764", + "73616c74", + 1u, + 64u, + "55ac046e56e3089fec1691c22544b605f94185216dde0465e68b9d57c20dacbc49ca9cccf179b645991664b39d77ef317c71b845b1e30bd509112041d3a19783", + TEST_RESULT_VALID, + }, + { + 2, + "RFC 7914", + "Rfc7914,Printable", + "50617373776f7264", + "4e61436c", + 80000u, + 64u, + "4ddcd8f60b98be21830cee5ef22701f9641a4418d04c0414aeff08876b34ab56a1d425a1225833549adb841b51c9b3176a272bdebba1d078478f62b397f33c8d", + TEST_RESULT_VALID, + }, + { + 3, + "", + "Pseudorandom,Printable", + "7130577430643470", + "798acc7c76739d75", + 4096u, + 16u, + "0501c73cb9f40b6769513e70e525051e", + TEST_RESULT_VALID, + }, + { + 4, + "", + "Pseudorandom,Printable", + "5a30673349567272", + "84bbd18de5ec10ff", + 4096u, + 42u, + "05fd57d1cc373fa9f37e1857ac1c0af8fbf635e139a42f9dd25a4e4b4698ea13e943f42220384d32a272", + TEST_RESULT_VALID, + }, + { + 5, + "", + "Pseudorandom,Printable", + "7439315572766f47", + "5d76db9ca0f0bae2", + 4096u, + 65u, + "2a3974a8071f005997c00d33812d8cf52e6af76a7ac558bf5dedeb296464bccf696ad753a79eb7b1b21738584a58d03d2b6c2b7bda08788f844655f6a90b0e3444", + TEST_RESULT_VALID, + }, + { + 6, + "", + "Pseudorandom,Printable", + "6b6f67583748447a", + "0a8fbd0232a3a7f6e60d6564c92ea35f", + 4096u, + 16u, + "c81676dbeb95582c66c3fc2636f1cb7f", + TEST_RESULT_VALID, + }, + { + 7, + "", + "Pseudorandom,Printable", + "4939745242645168", + "0a3bb93c0de86a174ab005b8089706ab", + 4096u, + 42u, + "b7a44e0e93f5f7ec0e177292db0b4a1354b62709e0dfe02167e19586fa99a70d777b39f953fb4fa4c342", + TEST_RESULT_VALID, + }, + { + 8, + "", + "Pseudorandom,Printable", + "6f4f4d37324f6330", + "3827c3b6b1e6de7aab096eb75e23610d", + 4096u, + 65u, + "907bc6a107df5940fb4c986b3f1ed888bcb0c41462df94b58de682c5627c1125492fd3091b06d83ce09794edad3776adb107994f671efe7b3ccd1d3a8fdcb444cc", + TEST_RESULT_VALID, + }, + { + 9, + "", + "Pseudorandom,Printable", + "6761734354484546654d36526f61386349", + "cac9ae7ef670990e", + 4096u, + 16u, + "2a9fc926e220c7915ccd8cde2916ae87", + TEST_RESULT_VALID, + }, + { + 10, + "", + "Pseudorandom,Printable", + "75375330684678774e33586f76707a6551", + "201b1e277f4ff955", + 4096u, + 42u, + "0dc0835f4b34eb966f4cf0d662c020eb09b733c7baa78abe2be41a01a1ccad60aad4969ac3fbcb643511", + TEST_RESULT_VALID, + }, + { + 11, + "", + "Pseudorandom,Printable", + "51524b6a6d6d6b48524462507178696868", + "e71d6a702d2d54bc", + 4096u, + 65u, + "2cdbfdc4f06e4d0e743a49ca459eff921b2eaf70e5d69b3c913239c56376c78c47ab66927c322612ad97cb1c824ae425aaefc6647db405dfab3a89cfd2055a0f4c", + TEST_RESULT_VALID, + }, + { + 12, + "", + "Pseudorandom,Printable", + "3732317a52704b79306b4c6d3862317279", + "8b9314972ef99ac98b69b6c2ac4247c7", + 4096u, + 16u, + "0da1ed7920894303780ee9a34fb6fa2f", + TEST_RESULT_VALID, + }, + { + 13, + "", + "Pseudorandom,Printable", + "75507078436d7536577a68535030553947", + "874d7cc9369ff9988642ffe05a7f2153", + 4096u, + 42u, + "35367e9ce58daa37e51883e9828204d438ede1065acf9933dfee1aae0ac7b24b46ae0c2c16885b809e6b", + TEST_RESULT_VALID, + }, + { + 14, + "", + "Pseudorandom,Printable", + "6f39505350597a445349783365374d7063", + "1569909588ec25a3afa147cb7fff9fb1", + 4096u, + 65u, + "7afa4394324fdfe23b879a8fb932c908217e4368ee5ee8dccac2fe2d2f62c12e9f48620c50b7bdb05448c64987b10df54ff5012e9a5064e9f92c51cc7b635d270d", + TEST_RESULT_VALID, + }, + { + 15, + "", + "Pseudorandom,Ascii", + "4b2d6c600e66535c7f3d6d6c", + "7a4c02db8bd8fcc2", + 4096u, + 16u, + "b05992b03b7f25b4a24a27e98cdfff3a", + TEST_RESULT_VALID, + }, + { + 16, + "", + "Pseudorandom,Ascii", + "287e74200e6b69285f5f7e00", + "dddf018487fa4b95", + 4096u, + 42u, + "89d809be903d632abd1b29130229b3a837bb4943aafb86a520498fa1814cd3f82f0b6c7db8d09d19c439", + TEST_RESULT_VALID, + }, + { + 17, + "", + "Pseudorandom,Ascii", + "0f3b5e220e1c000c2a703a4d", + "7cf71b19c0daf499", + 4096u, + 65u, + "5f3110ce1e653e086b289eb972ddd496b44884b7eab0361d0e9a39426b1d977582bd32b84ae1a204a51dbd458757489e01928dbcced2397109a1470d8383804099", + TEST_RESULT_VALID, + }, + { + 18, + "", + "Pseudorandom,Ascii", + "1f4b7b354903545f2b07720b", + "62f91ea01f3a18aa2f122bd15c4a615b", + 4096u, + 16u, + "d4bbf153661b4516d740535b37780aaf", + TEST_RESULT_VALID, + }, + { + 19, + "", + "Pseudorandom,Ascii", + "5d7e1f70174b2f616c0d6722", + "4fb602173327228431dd8d088154c7ec", + 4096u, + 42u, + "8216132b4952f8be46586e22ce961b597671f9172027e36f2c4cbd189dcaf719981a9c03186d5faadd80", + TEST_RESULT_VALID, + }, + { + 20, + "", + "Pseudorandom,Ascii", + "2657324e694c6b242b174f1a", + "3cad67ef1eaf3aaafb5ee372d6b1ecb4", + 4096u, + 65u, + "7103c69766b64bae721776ac272db586c7ba3c4775e33e1f37a24fad51e599d56d344e4566d48928f3c1c52b91642b10c86a29d3d2490eee2889c2899802e38c82", + TEST_RESULT_VALID, + }, + { + 21, + "", + "Pseudorandom,Ascii", + "15296b0933473119180f3c0645202d5221633803", + "d7412e4137fc4410", + 4096u, + 16u, + "1c0b23dfd1a3ea727c5c596ca840b393", + TEST_RESULT_VALID, + }, + { + 22, + "", + "Pseudorandom,Ascii", + "2a1124361d53464245580130076d6b54001e3d01", + "7ecaaed1eab03c3f", + 4096u, + 42u, + "c0f82935e509c96ad0edf9aa2db243cb81cec0c047d5141915a58ce114c119290228f318a9c5dcd518f6", + TEST_RESULT_VALID, + }, + { + 23, + "", + "Pseudorandom,Ascii", + "666252024e18233308430820127e753e6b041f56", + "756fafa7fac1f019", + 4096u, + 65u, + "d571b3006053ce3060ddfdbcf3c782d834e49701d4c745f3a282618cacdff4c73cadb7e719de641860ab0ffc860518d0bf02cec16ca83c26f4df993050ee67f2f7", + TEST_RESULT_VALID, + }, + { + 24, + "", + "Pseudorandom,Ascii", + "7a106c2773542c791d2f0a02632b69644f666278", + "a36350db68186d747254bd9835219487", + 4096u, + 16u, + "5f0af11697779ae0530fab32806f2184", + TEST_RESULT_VALID, + }, + { + 25, + "", + "Pseudorandom,Ascii", + "0b3c6f070149615b5b461c7f5c3a366a6d375402", + "42be6c8fcd7858458fb97cece0069524", + 4096u, + 42u, + "88d3744fae380954ae5875eca20b998e0d0c991716a8ef90cc1e547d489415ce6f8310742defcf4ca6cd", + TEST_RESULT_VALID, + }, + { + 26, + "", + "Pseudorandom,Ascii", + "5177161d237c1b64426353434113015665344a6c", + "596dbf5830aa8b00682429883e0b1ed0", + 4096u, + 65u, + "d8e5a55f92ba0d6da87765c653c82f080472260640e59ebe7d003baca444bdbe553156e5c365be28fc0acb7927e5c9789cdf6b481aa1c39c444a0cfc8b6e475182", + TEST_RESULT_VALID, + }, + { + 27, + "", + "Pseudorandom,Utf8", + "d0a3d1bed38acc83", + "8dfae85c9f2072ae", + 4096u, + 16u, + "c06bc1f9a63de10fe5f6936991477029", + TEST_RESULT_VALID, + }, + { + 28, + "", + "Pseudorandom,Utf8", + "d0bcccab64cf9a", + "15187b0393d8a441", + 4096u, + 42u, + "6a6287564b66b1f08bfabdfe2907b870b8c6ad8071efd78a7302c9472d7b80fb50c662bf609827006831", + TEST_RESULT_VALID, + }, + { + 29, + "", + "Pseudorandom,Utf8", + "c4bddd8f4ad69d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "7e52e8694056266a7da6527dac089f921298dfc497020eecee58d73fd123deb97cf3c2f532505468afc17e6e283ba6b68afcd5e6881be17e1647d3ab491a5589b1", + TEST_RESULT_VALID, + }, + { + 30, + "", + "Pseudorandom,Utf8", + "c299d292cd92dcb8", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "fcfa00ce7c0249542e6f3a40ef0a86d0", + TEST_RESULT_VALID, + }, + { + 31, + "", + "Pseudorandom,Utf8", + "d086d0bed193d9b6", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "46abf02c99b9f6d86fbf2e11bf0642b658a82a9e034ddea40df78a84bbc4b1e1e9f5bfbc55b12fba4545", + TEST_RESULT_VALID, + }, + { + 32, + "", + "Pseudorandom,Utf8", + "da8ddcacde86d3b0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "4438d49f0cd0ff7026fa6283b25bac570e1c845eaccdd80060e896f5420ee54533eb649a6fd9d99d29ceb7dcb18d059d422840aef7d4452d888f59bdd760b5db73", + TEST_RESULT_VALID, + }, + { + 33, + "", + "Pseudorandom,Utf8", + "cfbec3b9d7acc7a9d585d1a5c28fcca119", + "e9c55717a1259a29", + 4096u, + 16u, + "a9a7c8ade1041532e085ff65c35f28e8", + TEST_RESULT_VALID, + }, + { + 34, + "", + "Pseudorandom,Utf8", + "d29cd099d197d1b0da9aca8ec2a3daa5c38a", + "5acc2d76a9f4444c", + 4096u, + 42u, + "e34b5cf037bec44307bb8a60bbdc7d5f19badd15825150ec453adb490b947c3c1bc4132ec2217be47f60", + TEST_RESULT_VALID, + }, + { + 35, + "", + "Pseudorandom,Utf8", + "de89d193d18c75c2b8c6bcd190d198c3a2", + "c69c3b58917e0975", + 4096u, + 65u, + "d9ac15032443c7ed2678a07849c65897a2625f367fee614895c6f4f655094721024342ad24f0fa654bbd1abc7d01993ab21120da4e6f5b36a67885462d14442732", + TEST_RESULT_VALID, + }, + { + 36, + "", + "Pseudorandom,Utf8", + "da9dd096cb93db88dbbed495ceaacf853c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "230bf1d40a4ccfe9a1b5241a8266cef9", + TEST_RESULT_VALID, + }, + { + 37, + "", + "Pseudorandom,Utf8", + "de81d0a6cea9c7b3cbabce9bda90d29f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "978fd90caf8646ef894d8c9ffe19d20f0f0dfe80cf5bfe8464385bc0552e226a82b1fa764e8198ffda9f", + TEST_RESULT_VALID, + }, + { + 38, + "", + "Pseudorandom,Utf8", + "d281da97c8a3d8b7ceb9db80dc8dd4a0c3be", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "92b10b7d996d6e3f5d8e7e2c1075cc89c837b85cb72aff0092449b256254591178a6bf7fdfe3742f5fe5e402788058f4f90efc9cc9e9e7547b27bd4d34da333314", + TEST_RESULT_VALID, + }, + { + 39, + "", + "Pseudorandom,NonUtf8", + "8423ec7ea4ca4b03", + "8dfae85c9f2072ae", + 4096u, + 16u, + "5425a8ac3db02f9675331c0560a7b641", + TEST_RESULT_VALID, + }, + { + 40, + "", + "Pseudorandom,NonUtf8", + "2c3c932bf0648bda", + "15187b0393d8a441", + 4096u, + 42u, + "9eb4049ccee01488f15af3b988ef6d4817fce166686c17a7ea1cdc8bc548883ed1d53df6439fecda324b", + TEST_RESULT_VALID, + }, + { + 41, + "", + "Pseudorandom,NonUtf8", + "393d474fd84a259d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "a6d3a1636fe688f9a0aef5050e749c9f641669e6b953958263752382cb324de125315c4f340464c935e15e60dfa61fc8e8cd15386b2ed9894fad8b327338dc91f7", + TEST_RESULT_VALID, + }, + { + 42, + "", + "Pseudorandom,NonUtf8", + "48997492c3528738", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "2b7d2346fbb52fbff8881db235132319", + TEST_RESULT_VALID, + }, + { + 43, + "", + "Pseudorandom,NonUtf8", + "74064c3ebc53d676", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "a97c2fb6bd6a91470d78af24ee8f0f9e783517ba0396db031a46640c8436368ba9b5d0e048952bb2a6f0", + TEST_RESULT_VALID, + }, + { + 44, + "", + "Pseudorandom,NonUtf8", + "668d4f2c8f86f4f0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "8a4399e9487079701b079b6ad3587ff62593ff75c36629268e0cc2f88089203ac27a81ef9b4fa9ab6db5e220fca8f3d46c2b8c5c4d1149d461d1cd2c0884496608", + TEST_RESULT_VALID, + }, + { + 45, + "", + "Pseudorandom,NonUtf8", + "e3feb0f96dec61e9dd451465f88f132119", + "e9c55717a1259a29", + 4096u, + 16u, + "a2641a7a323435e0443cfd8dd60a536e", + TEST_RESULT_VALID, + }, + { + 46, + "", + "Pseudorandom,NonUtf8", + "5c9ca419dc576470269a828e40a3aea5ca", + "5acc2d76a9f4444c", + 4096u, + 42u, + "df3c139e07076d5e37d9dd0b59164903830d8fd1c4cb0b3189a5f97cd73b66f8066c31630bb44e705d9f", + TEST_RESULT_VALID, + }, + { + 47, + "", + "Pseudorandom,NonUtf8", + "bf898453344c6875f0b8b9bc2c50fc58e2", + "c69c3b58917e0975", + 4096u, + 65u, + "bb14e909b953a6576fdd607ccb8ee2d69fc1f9458ae597010c08a17094d64beb156f3db86203d441b7a2a192d75fb8f8ce78baf6f059f3b982a1e1ea32a6f1a958", + TEST_RESULT_VALID, + }, + { + 48, + "", + "Pseudorandom,NonUtf8", + "9e9d7c166ad3bec856fe5d15d3aacbc53c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "38a92f260cc84a8eb5943df1f19f64a1", + TEST_RESULT_VALID, + }, + { + 49, + "", + "Pseudorandom,NonUtf8", + "17812c26bba941f3c2ebdb9bb6904c9f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "a410ebcad1e884660353e7324d04f9f0e68ea3bb925fefe32b86c8f590029d63f9abc5c34c9a7b07845f", + TEST_RESULT_VALID, + }, + { + 50, + "", + "Pseudorandom,NonUtf8", + "6c816697ba2366375bb986c0af0d7d20fe", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "2577e802465d3e309dc76be377bbabdc8e59838d9f4f0a23ccd67f118094a851edd9a6ab4d332d8927bb0b77e71da28d6f5db78b2196758340ebf25e74cf681a1f", + TEST_RESULT_VALID, + }, + { + 51, + "empty password", + "Pseudorandom,Printable", + "", + "1a71e2118c9fbcc9", + 4096u, + 32u, + "3e513d89ea5ad303f17cbf7cbdea54a940f0f5811844dfa875a55a8241d2f8df", + TEST_RESULT_VALID, + }, + { + 52, + "long password", + "Pseudorandom,Printable", + "523249584467597a5a4271363970667a4a714e744b7761545a4544494676766b6a6253417167566e456a6b456b454557504e69383653626a6e376b725764394d67", + "d26b99043c8ba3a4", + 4096u, + 32u, + "c8595fa30dc95fb839bebfcc230f06844b2f75a393570b22d6c14d647837b87a", + TEST_RESULT_VALID, + }, + { + 53, + "long password", + "Pseudorandom,Printable", + "63727a466d396430795463456a6468545758693877674e516f544e6d486e61686f6956317071613133655471477933497531354b4f52516339494c53646756527a45524e6b4463723565676a62584a78426572536a74726b6b674341616a63356243354434706e66743836663754626663666370595a30767354454d4930524178", + "9266da5b8c102b27", + 4096u, + 32u, + "24a86f12235e0232bc80a84635a43934b2d37ae1120b4aa1728a3ead93868980", + TEST_RESULT_VALID, + }, + { + 54, + "long password", + "Pseudorandom,Printable", + "32647a56696e6f45774464656c656257797058314d6f4f685975585a463172514b7a32535a6c307578576377796f3561416e6f42524e7a5044763072513662693742345a34324f50695258534c6859684441643262746f647633744d54424430744b46316e4b655942656565547a70413145434150713942687a4a4c555a67737636754e4b664450333558414d684a486c736a6f5a796b677130624d506265556941796d6f324371586b64524752633876544176684e5a5838536f564d33704e74594a4a7258766975337547583233736a353847723061614a4b45763765796c373248636e6167713474766e533737626d6376676c79536d347370707a65673869", + "6a06903b78dae6de", + 4096u, + 32u, + "a50be9c16f6bf68808436aa3bc6eec36d3c5653c9c7510c1a4a641755b8325fb", + TEST_RESULT_VALID, + }, + { + 55, + "special case password", + "NonUtf8", + "ff", + "32140a66b88e1683", + 4096u, + 16u, + "49bc8d940c8f67ae5ee0764f59dea94e", + TEST_RESULT_VALID, + }, + { + 56, + "special case password", + "NonUtf8", + "ffffffffffffffff", + "8a359634423ed028", + 4096u, + 16u, + "00ef53593c10c8986f36838017194c2c", + TEST_RESULT_VALID, + }, + { + 57, + "special case password", + "NonUtf8", + "c0c0c0c0c0c0c0c0", + "d6f596f170ed2414", + 4096u, + 16u, + "b81cd442c5aa1b23aee69225a501cc70", + TEST_RESULT_VALID, + }, + { + 58, + "special case password", + "NonUtf8", + "eeeeeeeeeeeeeeee", + "6b2269425e288d03", + 4096u, + 16u, + "a80f332f10dfc0e4380b2fac8449fe77", + TEST_RESULT_VALID, + }, + { + 59, + "special case password", + "NonUtf8", + "f0f0f0f0f0f0f0f0", + "ebf0b04633711248", + 4096u, + 16u, + "a516a9d9e5d310227dc19ef15357b4b1", + TEST_RESULT_VALID, + }, + { + 60, + "special case password", + "Ascii", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "9de9b71eeb9d9a34", + 4096u, + 16u, + "5869f35bb108f1c45605ca8109e6661d", + TEST_RESULT_VALID, + }, +}; diff --git a/tests/pbkdf2test_sha384.h b/tests/pbkdf2test_sha384.h new file mode 100644 index 00000000..2b62a69e --- /dev/null +++ b/tests/pbkdf2test_sha384.h @@ -0,0 +1,650 @@ +/* + * Copyright 2014-2026 The GmSSL Project. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + + +static const TEST_PBKDF2_VECTOR pbkdf2_hmac_sha384_tests[] = { + { + 1, + "", + "Pseudorandom,Printable", + "7130577430643470", + "798acc7c76739d75", + 4096u, + 16u, + "c5a4f853b1a3960134e572c8e29a5be9", + TEST_RESULT_VALID, + }, + { + 2, + "", + "Pseudorandom,Printable", + "5a30673349567272", + "84bbd18de5ec10ff", + 4096u, + 42u, + "dfe1dea643acbae0d7d3154717f9a620937d9bf32218b27db99c0c34a0a6dfa189b31292020b727cc147", + TEST_RESULT_VALID, + }, + { + 3, + "", + "Pseudorandom,Printable", + "7439315572766f47", + "5d76db9ca0f0bae2", + 4096u, + 65u, + "17c6ba7e45f8a26a13b4d5f72ca3a2f97147e5f60c3108829b5b51633ab8afd9888b0465b22995f072ee2c8383e091afb808bf48b0e786da661ff95142a6229f1f", + TEST_RESULT_VALID, + }, + { + 4, + "", + "Pseudorandom,Printable", + "6b6f67583748447a", + "0a8fbd0232a3a7f6e60d6564c92ea35f", + 4096u, + 16u, + "7b3772edd5ddd2fefed54e124f813d15", + TEST_RESULT_VALID, + }, + { + 5, + "", + "Pseudorandom,Printable", + "4939745242645168", + "0a3bb93c0de86a174ab005b8089706ab", + 4096u, + 42u, + "314c435ffba5e7f8dc3af254ac164c51398c839f3c789a91fb7927aa28dc2424bc589e29fd715fe74bba", + TEST_RESULT_VALID, + }, + { + 6, + "", + "Pseudorandom,Printable", + "6f4f4d37324f6330", + "3827c3b6b1e6de7aab096eb75e23610d", + 4096u, + 65u, + "409b051d5d6f77149633e65dfd0ebbadebda7f82ffcc09d2efb81c6d94a425537c5bb1bea65a9fb40a92a4466bfb448d7b3505894dccdb6a365d44d4eba54ef11c", + TEST_RESULT_VALID, + }, + { + 7, + "", + "Pseudorandom,Printable", + "6761734354484546654d36526f61386349", + "cac9ae7ef670990e", + 4096u, + 16u, + "9df584f636d3853cf75116538f240315", + TEST_RESULT_VALID, + }, + { + 8, + "", + "Pseudorandom,Printable", + "75375330684678774e33586f76707a6551", + "201b1e277f4ff955", + 4096u, + 42u, + "74d040278a45fe589c66833a34cc71bc7249b4dc86e3dc70117afb94cf7cb60bca51c1d3359a06998c95", + TEST_RESULT_VALID, + }, + { + 9, + "", + "Pseudorandom,Printable", + "51524b6a6d6d6b48524462507178696868", + "e71d6a702d2d54bc", + 4096u, + 65u, + "421a7d2aa3a0b31f51b2971af45327ffbcb023a6fd71a51739e57b335c9fe386f8b3083991bc012474161341ebb71f7b9f495d012904264aacebc00a6392b7e81c", + TEST_RESULT_VALID, + }, + { + 10, + "", + "Pseudorandom,Printable", + "3732317a52704b79306b4c6d3862317279", + "8b9314972ef99ac98b69b6c2ac4247c7", + 4096u, + 16u, + "5873f6050f94ffbd5db5913711a1e779", + TEST_RESULT_VALID, + }, + { + 11, + "", + "Pseudorandom,Printable", + "75507078436d7536577a68535030553947", + "874d7cc9369ff9988642ffe05a7f2153", + 4096u, + 42u, + "38c6c68ab0ea2aab6e8ec42b6d08203e7f3c2a51c7771626b9df6ac6ac0e7c7b9e690ea53916e7a4ef0a", + TEST_RESULT_VALID, + }, + { + 12, + "", + "Pseudorandom,Printable", + "6f39505350597a445349783365374d7063", + "1569909588ec25a3afa147cb7fff9fb1", + 4096u, + 65u, + "8b3c1f69e3e992203f59b4aee9c0ed79d98bf7a1f261036d58e2289dcde27504129d357f8c21919f1f152e7d4a5c011e04f1adf2a3d0fdcb64cad396810332d291", + TEST_RESULT_VALID, + }, + { + 13, + "", + "Pseudorandom,Ascii", + "4b2d6c600e66535c7f3d6d6c", + "7a4c02db8bd8fcc2", + 4096u, + 16u, + "60f6a456e9a4f1d8dcfb7a73c58ab3be", + TEST_RESULT_VALID, + }, + { + 14, + "", + "Pseudorandom,Ascii", + "287e74200e6b69285f5f7e00", + "dddf018487fa4b95", + 4096u, + 42u, + "745ff4750e9371a28424220ea555138fed621e4b32c58503720dd1e2243803848f9fe9b74ed09afe759f", + TEST_RESULT_VALID, + }, + { + 15, + "", + "Pseudorandom,Ascii", + "0f3b5e220e1c000c2a703a4d", + "7cf71b19c0daf499", + 4096u, + 65u, + "9531ee2380908f10dd0806782a90dd01a513880e6d848ce8370e5a6dff7a061d6e20a2b1ecccadfed5feaae62fa64e0cc6fe98bd87f6311fbc624453344e694a94", + TEST_RESULT_VALID, + }, + { + 16, + "", + "Pseudorandom,Ascii", + "1f4b7b354903545f2b07720b", + "62f91ea01f3a18aa2f122bd15c4a615b", + 4096u, + 16u, + "ea4658ca124f8a8332e1241da381e22e", + TEST_RESULT_VALID, + }, + { + 17, + "", + "Pseudorandom,Ascii", + "5d7e1f70174b2f616c0d6722", + "4fb602173327228431dd8d088154c7ec", + 4096u, + 42u, + "7b89d1bd20dec87b8ecf9bae12fa0e5d9c0f1c010078249baeefded4f23e354a5fe9efa50d2d569ee12d", + TEST_RESULT_VALID, + }, + { + 18, + "", + "Pseudorandom,Ascii", + "2657324e694c6b242b174f1a", + "3cad67ef1eaf3aaafb5ee372d6b1ecb4", + 4096u, + 65u, + "08968b88460e0df143e1f52d0b1640e77266204bb552d3e9a260dfc782aef06707f7eb386a3037dc343792b6c41452549d812eca04be8bf01d436e1557bec6438d", + TEST_RESULT_VALID, + }, + { + 19, + "", + "Pseudorandom,Ascii", + "15296b0933473119180f3c0645202d5221633803", + "d7412e4137fc4410", + 4096u, + 16u, + "23055ea847137568a2ea8f84ae13d220", + TEST_RESULT_VALID, + }, + { + 20, + "", + "Pseudorandom,Ascii", + "2a1124361d53464245580130076d6b54001e3d01", + "7ecaaed1eab03c3f", + 4096u, + 42u, + "819a1fd3f182702d3629b0453352e7224048ed964e57b252a9a039c1d73292f2f668429a8aa530732edc", + TEST_RESULT_VALID, + }, + { + 21, + "", + "Pseudorandom,Ascii", + "666252024e18233308430820127e753e6b041f56", + "756fafa7fac1f019", + 4096u, + 65u, + "ba344a8df0cbedced95d6f5f8ea8f4d3e1aca52f751a2c1b529067df28d0e3d08ea42ffb6b8f8537dab32ce89ec0dd4a84c7683b5960d987ab7f5f744c7d8d7f84", + TEST_RESULT_VALID, + }, + { + 22, + "", + "Pseudorandom,Ascii", + "7a106c2773542c791d2f0a02632b69644f666278", + "a36350db68186d747254bd9835219487", + 4096u, + 16u, + "d5ce40d19ffa0ea0a0f9ede719053fcd", + TEST_RESULT_VALID, + }, + { + 23, + "", + "Pseudorandom,Ascii", + "0b3c6f070149615b5b461c7f5c3a366a6d375402", + "42be6c8fcd7858458fb97cece0069524", + 4096u, + 42u, + "840512f3702d1387ab28785750cca03d0452dcd3abbf39f56fa38c04dfe6e1e17570463a8cc074850070", + TEST_RESULT_VALID, + }, + { + 24, + "", + "Pseudorandom,Ascii", + "5177161d237c1b64426353434113015665344a6c", + "596dbf5830aa8b00682429883e0b1ed0", + 4096u, + 65u, + "f9e10e6fc595e3ae155910f4c019245b559bbec1a944de00bbbe1fe202265db4ccf28b9f10b519c1856e3386a15ba9005e05cf5e050718d4a92c89dc309f167a31", + TEST_RESULT_VALID, + }, + { + 25, + "", + "Pseudorandom,Utf8", + "d0a3d1bed38acc83", + "8dfae85c9f2072ae", + 4096u, + 16u, + "ae75e7ae9848e3550cf3ddfca4ed5e74", + TEST_RESULT_VALID, + }, + { + 26, + "", + "Pseudorandom,Utf8", + "d0bcccab64cf9a", + "15187b0393d8a441", + 4096u, + 42u, + "9b909246d2fb6e76a5375bcd608820f855e43b7782fb7aecfedc766fbd7296a99862c4ee9ffe52d2305d", + TEST_RESULT_VALID, + }, + { + 27, + "", + "Pseudorandom,Utf8", + "c4bddd8f4ad69d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "555ab346c29248f24748dd7cb9ca4d7793894cf0ffdf337c01c6badf5ea8821eac516b7a93a74628be32468ecad35bc28bf422bcee9046ed9d5512765d644edf05", + TEST_RESULT_VALID, + }, + { + 28, + "", + "Pseudorandom,Utf8", + "c299d292cd92dcb8", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "84d0773faa5dad4dbbd7d7f461272807", + TEST_RESULT_VALID, + }, + { + 29, + "", + "Pseudorandom,Utf8", + "d086d0bed193d9b6", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "58b8fd680c076f23f4e65bbb58a4af6a7160c4a8d81c99fb05f0543dd01923dcaef67a8ac6f14e6e1019", + TEST_RESULT_VALID, + }, + { + 30, + "", + "Pseudorandom,Utf8", + "da8ddcacde86d3b0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "fca2e866aa3e4f42abe27feb90a55286bbd868c93bdd67029db96c77bf943eb094c9e31c55f108bd848824e0ef0bc69e763cbd7c3c6ddc008703a40bcbc8e22667", + TEST_RESULT_VALID, + }, + { + 31, + "", + "Pseudorandom,Utf8", + "cfbec3b9d7acc7a9d585d1a5c28fcca119", + "e9c55717a1259a29", + 4096u, + 16u, + "7612061da9d4dd1ee3638ab60eae5605", + TEST_RESULT_VALID, + }, + { + 32, + "", + "Pseudorandom,Utf8", + "d29cd099d197d1b0da9aca8ec2a3daa5c38a", + "5acc2d76a9f4444c", + 4096u, + 42u, + "845d37414eb3bba79503226c55112a62f787d88aae3f027c0028a06f63d7307dcf9c1c7cd8f255755562", + TEST_RESULT_VALID, + }, + { + 33, + "", + "Pseudorandom,Utf8", + "de89d193d18c75c2b8c6bcd190d198c3a2", + "c69c3b58917e0975", + 4096u, + 65u, + "94fa0a0e7150e8553aef53c3d695f8ef65b3e54c056ed1d0a0c46a064cb5891f4bdff7ee37f21136fb482dcb13421fdce7408b2cd18b9831dc11143aacfca500f0", + TEST_RESULT_VALID, + }, + { + 34, + "", + "Pseudorandom,Utf8", + "da9dd096cb93db88dbbed495ceaacf853c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "33f720ca3aa8e6784f93d9d04983f88a", + TEST_RESULT_VALID, + }, + { + 35, + "", + "Pseudorandom,Utf8", + "de81d0a6cea9c7b3cbabce9bda90d29f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "5b043b06c042f0ed61f00d15b4d058425ecb822505d141757ad2b428f1ef71dbdb2bca191b7d7b5704b9", + TEST_RESULT_VALID, + }, + { + 36, + "", + "Pseudorandom,Utf8", + "d281da97c8a3d8b7ceb9db80dc8dd4a0c3be", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "67aee62bffe2d7742a2058bb146ba629f532e2c0576555f0fb385ae8ea7b34e2f8d8b24dd31ea3a14ec6f39138337771d86518d3d1742eb3a5c197d4732012a338", + TEST_RESULT_VALID, + }, + { + 37, + "", + "Pseudorandom,NonUtf8", + "8423ec7ea4ca4b03", + "8dfae85c9f2072ae", + 4096u, + 16u, + "de49fbeb68b9e092e952fb2f752b642b", + TEST_RESULT_VALID, + }, + { + 38, + "", + "Pseudorandom,NonUtf8", + "2c3c932bf0648bda", + "15187b0393d8a441", + 4096u, + 42u, + "49b18e7cf5f8803bc129c0f433de931f7e2c3ac1f3305789495ec3548787cee83c1c973f73f4bac9e80b", + TEST_RESULT_VALID, + }, + { + 39, + "", + "Pseudorandom,NonUtf8", + "393d474fd84a259d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "f3a909587aacd3fd03e7fb4a48ece960d90a7a65b36f5b8f982f14f0997a4630e01cf092573a9af728f46e86b35099fe68ccab07a111b832718bd224af8a130194", + TEST_RESULT_VALID, + }, + { + 40, + "", + "Pseudorandom,NonUtf8", + "48997492c3528738", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "c26c4d099817ab48baeb2ed94a6e0e66", + TEST_RESULT_VALID, + }, + { + 41, + "", + "Pseudorandom,NonUtf8", + "74064c3ebc53d676", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "2790b6ca89a36f6702f3fe2a031fbf5349613dd756b8e23e545180286b7f94746eb8df4ee00536a902e1", + TEST_RESULT_VALID, + }, + { + 42, + "", + "Pseudorandom,NonUtf8", + "668d4f2c8f86f4f0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "44fbc1a0422401ed1b4f7a3cccf4c56ed6dd61bbca31ffc542e2930ea62b5c6deeff8cc9c709b2e96a5bcc3ef5b47fec89a0fad774ef5a406fcd319a374dcbf7db", + TEST_RESULT_VALID, + }, + { + 43, + "", + "Pseudorandom,NonUtf8", + "e3feb0f96dec61e9dd451465f88f132119", + "e9c55717a1259a29", + 4096u, + 16u, + "81c0ff3ddfee0fbb1c285ea772b21a93", + TEST_RESULT_VALID, + }, + { + 44, + "", + "Pseudorandom,NonUtf8", + "5c9ca419dc576470269a828e40a3aea5ca", + "5acc2d76a9f4444c", + 4096u, + 42u, + "a54129741f4d41c198e76bc688de03d221bee45538cdb9f265859af918a4b336f6fc9b9f9a0b44894107", + TEST_RESULT_VALID, + }, + { + 45, + "", + "Pseudorandom,NonUtf8", + "bf898453344c6875f0b8b9bc2c50fc58e2", + "c69c3b58917e0975", + 4096u, + 65u, + "d88a85b941a802f48a4fa80ebe4ca10e659d684a6310975dff862819930b60f0d776b728a716ef3b7abaea89c9b0fdcbb76c1b9fac44ad28d468800bbb20c7a76c", + TEST_RESULT_VALID, + }, + { + 46, + "", + "Pseudorandom,NonUtf8", + "9e9d7c166ad3bec856fe5d15d3aacbc53c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "1a7db5ce7b3fa690dda6aed94b42a07d", + TEST_RESULT_VALID, + }, + { + 47, + "", + "Pseudorandom,NonUtf8", + "17812c26bba941f3c2ebdb9bb6904c9f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "41f0fdc44e8e51be0bf913af19524a6d041d6160194226fc90c17da715b4f7b6859060d72d8973bfa66d", + TEST_RESULT_VALID, + }, + { + 48, + "", + "Pseudorandom,NonUtf8", + "6c816697ba2366375bb986c0af0d7d20fe", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "81fb39ec6f23c4fd32fc923cea3fbfa42f5b10620f3f0c0716e71301d0886a1392f50ee0e7805964f44bc08abce926002a36fc7806828e7da93cf8ddb910a21e60", + TEST_RESULT_VALID, + }, + { + 49, + "empty password", + "Pseudorandom,Printable", + "", + "1a71e2118c9fbcc9", + 4096u, + 32u, + "221029235aaa16453fc00ce61bb81d2c0fe24e8a038dbf845578f7d3aa1006d9", + TEST_RESULT_VALID, + }, + { + 50, + "long password", + "Pseudorandom,Printable", + "523249584467597a5a4271363970667a4a714e744b7761545a4544494676766b6a6253417167566e456a6b456b454557504e69383653626a6e376b725764394d67", + "d26b99043c8ba3a4", + 4096u, + 32u, + "6aff25d08e9acf0bc81366c88c2939b2206a5f3e96a6ae1bb7754286edd72fb5", + TEST_RESULT_VALID, + }, + { + 51, + "long password", + "Pseudorandom,Printable", + "63727a466d396430795463456a6468545758693877674e516f544e6d486e61686f6956317071613133655471477933497531354b4f52516339494c53646756527a45524e6b4463723565676a62584a78426572536a74726b6b674341616a63356243354434706e66743836663754626663666370595a30767354454d4930524178", + "9266da5b8c102b27", + 4096u, + 32u, + "b967e5eb79c1ec4a3ad0cb09c18915793bd87b51911a5e9ca43cbe49eb328b83", + TEST_RESULT_VALID, + }, + { + 52, + "long password", + "Pseudorandom,Printable", + "32647a56696e6f45774464656c656257797058314d6f4f685975585a463172514b7a32535a6c307578576377796f3561416e6f42524e7a5044763072513662693742345a34324f50695258534c6859684441643262746f647633744d54424430744b46316e4b655942656565547a70413145434150713942687a4a4c555a67737636754e4b664450333558414d684a486c736a6f5a796b677130624d506265556941796d6f324371586b64524752633876544176684e5a5838536f564d33704e74594a4a7258766975337547583233736a353847723061614a4b45763765796c373248636e6167713474766e533737626d6376676c79536d347370707a65673869", + "6a06903b78dae6de", + 4096u, + 32u, + "b94a84f5e52d232868f5fe8f4c568ad582e7bd623eab7b7a4f4081f45ab2c7ea", + TEST_RESULT_VALID, + }, + { + 53, + "special case password", + "NonUtf8", + "ff", + "32140a66b88e1683", + 4096u, + 16u, + "bb50b900e301b23a4801bba57e163b47", + TEST_RESULT_VALID, + }, + { + 54, + "special case password", + "NonUtf8", + "ffffffffffffffff", + "8a359634423ed028", + 4096u, + 16u, + "08f89be37ee7d29f9c24c67a354effcb", + TEST_RESULT_VALID, + }, + { + 55, + "special case password", + "NonUtf8", + "c0c0c0c0c0c0c0c0", + "d6f596f170ed2414", + 4096u, + 16u, + "956f188642dfc807cb47658c203093e5", + TEST_RESULT_VALID, + }, + { + 56, + "special case password", + "NonUtf8", + "eeeeeeeeeeeeeeee", + "6b2269425e288d03", + 4096u, + 16u, + "c8b50d274f16cd66fce052a0e52f6840", + TEST_RESULT_VALID, + }, + { + 57, + "special case password", + "NonUtf8", + "f0f0f0f0f0f0f0f0", + "ebf0b04633711248", + 4096u, + 16u, + "5f4d98d86b3de83fe6a554c139256037", + TEST_RESULT_VALID, + }, + { + 58, + "special case password", + "Ascii", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "9de9b71eeb9d9a34", + 4096u, + 16u, + "8458ae1b33e367c9724db9259bc06208", + TEST_RESULT_VALID, + }, +}; diff --git a/tests/pbkdf2test_sha512.h b/tests/pbkdf2test_sha512.h new file mode 100644 index 00000000..c6772700 --- /dev/null +++ b/tests/pbkdf2test_sha512.h @@ -0,0 +1,650 @@ +/* + * Copyright 2014-2026 The GmSSL Project. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ + + +static const TEST_PBKDF2_VECTOR pbkdf2_hmac_sha512_tests[] = { + { + 1, + "", + "Pseudorandom,Printable", + "7130577430643470", + "798acc7c76739d75", + 4096u, + 16u, + "4935390897319c3efc15d19304109c79", + TEST_RESULT_VALID, + }, + { + 2, + "", + "Pseudorandom,Printable", + "5a30673349567272", + "84bbd18de5ec10ff", + 4096u, + 42u, + "d1b8e64e3b67a548c8bda3118eab1bc3f81b4cc9ead842eda18f6685533c2c7f4f49b8c7a78fea13b776", + TEST_RESULT_VALID, + }, + { + 3, + "", + "Pseudorandom,Printable", + "7439315572766f47", + "5d76db9ca0f0bae2", + 4096u, + 65u, + "a5d7f0fe4adc54e2ac5edc54e005827a90cbd46c00b72be68f8fbd1da98c079b98622a69b1ea44c0d94cdae03c339b742d047ac63cac0d9af59786baee4a158080", + TEST_RESULT_VALID, + }, + { + 4, + "", + "Pseudorandom,Printable", + "6b6f67583748447a", + "0a8fbd0232a3a7f6e60d6564c92ea35f", + 4096u, + 16u, + "23cb042249cf5d03f0cbfe8726df1bee", + TEST_RESULT_VALID, + }, + { + 5, + "", + "Pseudorandom,Printable", + "4939745242645168", + "0a3bb93c0de86a174ab005b8089706ab", + 4096u, + 42u, + "8c9a9843f6c108ad5b95d872bd93f1afd8001871e24ae03100ab33a47b3bf923de1e0bb4a95985563a87", + TEST_RESULT_VALID, + }, + { + 6, + "", + "Pseudorandom,Printable", + "6f4f4d37324f6330", + "3827c3b6b1e6de7aab096eb75e23610d", + 4096u, + 65u, + "0159b91e667079e448ae9707f9d538fcc4f297165f6fc85b2966f951669600ee7553f2b80e72f7c2688f2f4cf0f9f7eaf070333987aa7f7d45843076e1708e1229", + TEST_RESULT_VALID, + }, + { + 7, + "", + "Pseudorandom,Printable", + "6761734354484546654d36526f61386349", + "cac9ae7ef670990e", + 4096u, + 16u, + "4f423de7d3ce6dde25a9c88058f175d4", + TEST_RESULT_VALID, + }, + { + 8, + "", + "Pseudorandom,Printable", + "75375330684678774e33586f76707a6551", + "201b1e277f4ff955", + 4096u, + 42u, + "f5161add0381cd85fd3816902a56f1e5f84349362d9780eca06c201d1aa976106f5c55146c06d33d131d", + TEST_RESULT_VALID, + }, + { + 9, + "", + "Pseudorandom,Printable", + "51524b6a6d6d6b48524462507178696868", + "e71d6a702d2d54bc", + 4096u, + 65u, + "8d4c0251d0344406a8e31261046fb4f2bdd7ef402afa5c4eb5020afc2d516ce2ceaf84a2fb904737234fdfe1b2226c5f64ec5a106ef18e9571a53b0db6a9136f43", + TEST_RESULT_VALID, + }, + { + 10, + "", + "Pseudorandom,Printable", + "3732317a52704b79306b4c6d3862317279", + "8b9314972ef99ac98b69b6c2ac4247c7", + 4096u, + 16u, + "68b052397d9d0009393f939d8a41030a", + TEST_RESULT_VALID, + }, + { + 11, + "", + "Pseudorandom,Printable", + "75507078436d7536577a68535030553947", + "874d7cc9369ff9988642ffe05a7f2153", + 4096u, + 42u, + "f6db4aec63695dfa52aa449120b118ef399ed5efa73c3f59c7aa08cd3cd0aa4401634a7bbf61d753752c", + TEST_RESULT_VALID, + }, + { + 12, + "", + "Pseudorandom,Printable", + "6f39505350597a445349783365374d7063", + "1569909588ec25a3afa147cb7fff9fb1", + 4096u, + 65u, + "b8b2e382821089b02c972c1ca1495bc8d021fabe77733335555c6b27c4a6e73098e8385055891e8a55c05be3d20279bb168b8011f60705928dd05d1451775b62f1", + TEST_RESULT_VALID, + }, + { + 13, + "", + "Pseudorandom,Ascii", + "4b2d6c600e66535c7f3d6d6c", + "7a4c02db8bd8fcc2", + 4096u, + 16u, + "d3aca4f6df6e06b97c44fd295ed07965", + TEST_RESULT_VALID, + }, + { + 14, + "", + "Pseudorandom,Ascii", + "287e74200e6b69285f5f7e00", + "dddf018487fa4b95", + 4096u, + 42u, + "1fe411d3bde75e596197040e192dd0aa56ba282125db6e91090caace7bef3b07bbd4d3170b3ca8548587", + TEST_RESULT_VALID, + }, + { + 15, + "", + "Pseudorandom,Ascii", + "0f3b5e220e1c000c2a703a4d", + "7cf71b19c0daf499", + 4096u, + 65u, + "bcc6ca2f82450f4bff09009af28215e68b01ccfcaabdf176a7eceb61974cdd9a9ce3bd10b1d7f781c4d82612fb42bf3db424912389a0727515fef785d2cc28275c", + TEST_RESULT_VALID, + }, + { + 16, + "", + "Pseudorandom,Ascii", + "1f4b7b354903545f2b07720b", + "62f91ea01f3a18aa2f122bd15c4a615b", + 4096u, + 16u, + "26bfec4392af75d5e912d47c7d911fc5", + TEST_RESULT_VALID, + }, + { + 17, + "", + "Pseudorandom,Ascii", + "5d7e1f70174b2f616c0d6722", + "4fb602173327228431dd8d088154c7ec", + 4096u, + 42u, + "21f15760b44d879949320ecfa6fb1023c15f6284127c985ce36d83de2fa6e25fe5f98e0e0bcb89acda3f", + TEST_RESULT_VALID, + }, + { + 18, + "", + "Pseudorandom,Ascii", + "2657324e694c6b242b174f1a", + "3cad67ef1eaf3aaafb5ee372d6b1ecb4", + 4096u, + 65u, + "26c4a80bfa48325beefc3a32c543b1ed9dcb67458dba5c41b9ec1ea87ba82f52a98beaf2578f1e1d6f781676bc4664e9b629250bf0ad8440f8ceb05c51101ae8c7", + TEST_RESULT_VALID, + }, + { + 19, + "", + "Pseudorandom,Ascii", + "15296b0933473119180f3c0645202d5221633803", + "d7412e4137fc4410", + 4096u, + 16u, + "49fa49e9d9d4b8a230b888550fa95d4e", + TEST_RESULT_VALID, + }, + { + 20, + "", + "Pseudorandom,Ascii", + "2a1124361d53464245580130076d6b54001e3d01", + "7ecaaed1eab03c3f", + 4096u, + 42u, + "d80c7b2a6c4bfeede1926ad9fac65400078b865bc02d145fc0e045fe37cbbde4cafad121e4935f0b3052", + TEST_RESULT_VALID, + }, + { + 21, + "", + "Pseudorandom,Ascii", + "666252024e18233308430820127e753e6b041f56", + "756fafa7fac1f019", + 4096u, + 65u, + "ca4168cd34fd8bf311c180bcf00d7c50482c89f9bd639f8e3217ebcefc99f7cc4bf7fce90a9faed87912293163d5bdb55a61566bccc7366195d72b76f3b26ad332", + TEST_RESULT_VALID, + }, + { + 22, + "", + "Pseudorandom,Ascii", + "7a106c2773542c791d2f0a02632b69644f666278", + "a36350db68186d747254bd9835219487", + 4096u, + 16u, + "878ede7d7b80d4dfb2d7bffba76b288d", + TEST_RESULT_VALID, + }, + { + 23, + "", + "Pseudorandom,Ascii", + "0b3c6f070149615b5b461c7f5c3a366a6d375402", + "42be6c8fcd7858458fb97cece0069524", + 4096u, + 42u, + "4d631b173437810b9dc991a9b81d2e8a4981cfed6fd6ae508db3f6f6bb4d267388741ead7d3272fd5075", + TEST_RESULT_VALID, + }, + { + 24, + "", + "Pseudorandom,Ascii", + "5177161d237c1b64426353434113015665344a6c", + "596dbf5830aa8b00682429883e0b1ed0", + 4096u, + 65u, + "a4647786a04fa4129f5c4c43ff7ca48362b9e25bc962345355f01036c5df2962fab2906218267bd04b11a1834abb965e861e2fa3d721e4dded92ed7eefed058609", + TEST_RESULT_VALID, + }, + { + 25, + "", + "Pseudorandom,Utf8", + "d0a3d1bed38acc83", + "8dfae85c9f2072ae", + 4096u, + 16u, + "6b62ce6976fe2c9bd0a8a7acba7b83b5", + TEST_RESULT_VALID, + }, + { + 26, + "", + "Pseudorandom,Utf8", + "d0bcccab64cf9a", + "15187b0393d8a441", + 4096u, + 42u, + "3b80d72751093ad48c08b70fd13308834078b52c3c14e47523e189a475b6f6678dafb991bcb5c0b73f2c", + TEST_RESULT_VALID, + }, + { + 27, + "", + "Pseudorandom,Utf8", + "c4bddd8f4ad69d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "4bb5ebbe99297ac9a3e3b14ad1a5b52307fbdb991e9bae74561a93e7165086f4a198ad515be73ccda118168150ece8627199ff267c3132e3a556ba3d8d812d8392", + TEST_RESULT_VALID, + }, + { + 28, + "", + "Pseudorandom,Utf8", + "c299d292cd92dcb8", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "876ae3968ee80397415e7137d9bddf76", + TEST_RESULT_VALID, + }, + { + 29, + "", + "Pseudorandom,Utf8", + "d086d0bed193d9b6", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "a0d55ac130b1ef52e4dc05203cb78304cc49f56dd165eafc51f009d44cddf6e4befa59d3231c2393e9ab", + TEST_RESULT_VALID, + }, + { + 30, + "", + "Pseudorandom,Utf8", + "da8ddcacde86d3b0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "1837beaf1c4a9efe10e8f8f6dafea3e494708a2512d7b64a396ed69b419b8c7e65f6ba2809c8555b62be2640d0ae297a68136f7a3fe8e226b87467e67c6254a6a2", + TEST_RESULT_VALID, + }, + { + 31, + "", + "Pseudorandom,Utf8", + "cfbec3b9d7acc7a9d585d1a5c28fcca119", + "e9c55717a1259a29", + 4096u, + 16u, + "1b3587d675b3170ab20fdb14f8c88e42", + TEST_RESULT_VALID, + }, + { + 32, + "", + "Pseudorandom,Utf8", + "d29cd099d197d1b0da9aca8ec2a3daa5c38a", + "5acc2d76a9f4444c", + 4096u, + 42u, + "93b0fc1b0313bab41929332682d9d2a5b947fbb5bbdb37c06d897dfc4a309eff5f1b1806a6a3b6f5fedf", + TEST_RESULT_VALID, + }, + { + 33, + "", + "Pseudorandom,Utf8", + "de89d193d18c75c2b8c6bcd190d198c3a2", + "c69c3b58917e0975", + 4096u, + 65u, + "e44c3d06dc5128edd230cd9bfcbd204fde2369fb39d6370cbb0021ce1610003d7d1789e83f3fa9ed5842f1a5afde4609b3b09ef6595b7f8647c26c6ae87f4b776f", + TEST_RESULT_VALID, + }, + { + 34, + "", + "Pseudorandom,Utf8", + "da9dd096cb93db88dbbed495ceaacf853c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "6a294cfc91bd87da2700085a289a3f10", + TEST_RESULT_VALID, + }, + { + 35, + "", + "Pseudorandom,Utf8", + "de81d0a6cea9c7b3cbabce9bda90d29f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "18d49eaf798f4fab75aaadb42f8bcff45b83da5fad7932705cc829897692cedb161268aa04659ef2a1d8", + TEST_RESULT_VALID, + }, + { + 36, + "", + "Pseudorandom,Utf8", + "d281da97c8a3d8b7ceb9db80dc8dd4a0c3be", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "ab933595222171a6bf0ef7288f4761d4e6dd29e68e566fde1b3bb6a5ae380b591334e680ed1fc70f181c54f3a6ea17388cf25c7f18555b1f67a6837b3590578161", + TEST_RESULT_VALID, + }, + { + 37, + "", + "Pseudorandom,NonUtf8", + "8423ec7ea4ca4b03", + "8dfae85c9f2072ae", + 4096u, + 16u, + "196cb574f499f6e20cd00a4eb0f70d4a", + TEST_RESULT_VALID, + }, + { + 38, + "", + "Pseudorandom,NonUtf8", + "2c3c932bf0648bda", + "15187b0393d8a441", + 4096u, + 42u, + "28ea911364150649f9c5831e5d3ab76b4c4009416ba68143388d00e294437ade367fd24fbc79a5173544", + TEST_RESULT_VALID, + }, + { + 39, + "", + "Pseudorandom,NonUtf8", + "393d474fd84a259d", + "775bde4bd6e40ddd", + 4096u, + 65u, + "38688a90efa49043340f480ba134e4d34f2f444c049864b918fbae5e324c7d11e5c790c4d6c4741bbedccc55f02a40a19edb117339e21fff27fd3b3b56b348403f", + TEST_RESULT_VALID, + }, + { + 40, + "", + "Pseudorandom,NonUtf8", + "48997492c3528738", + "99c55e182238c8e0c385447685e9ba85", + 4096u, + 16u, + "f3d1fa6c1cb2bc8f8fae275b69746f03", + TEST_RESULT_VALID, + }, + { + 41, + "", + "Pseudorandom,NonUtf8", + "74064c3ebc53d676", + "42a7aca6a7664f87b405b49d62a074db", + 4096u, + 42u, + "abb8c155cde2637d33261bd5c1db245ceb1e59e8cf223927697375bbc42273bf4f291d582885f9a5b634", + TEST_RESULT_VALID, + }, + { + 42, + "", + "Pseudorandom,NonUtf8", + "668d4f2c8f86f4f0", + "f3eb3938f338fe8639813beacd8100a5", + 4096u, + 65u, + "51960fa5ea92577833bd8ef87911c7e0ace4a94fd4f76afb6ec145455257593953389c7cbe497eae1d787f95b8472b0c251406492c64c25db19ace47d24d8f5a75", + TEST_RESULT_VALID, + }, + { + 43, + "", + "Pseudorandom,NonUtf8", + "e3feb0f96dec61e9dd451465f88f132119", + "e9c55717a1259a29", + 4096u, + 16u, + "2008be3283e9f6049829a4157c1c3088", + TEST_RESULT_VALID, + }, + { + 44, + "", + "Pseudorandom,NonUtf8", + "5c9ca419dc576470269a828e40a3aea5ca", + "5acc2d76a9f4444c", + 4096u, + 42u, + "81a8a54d860990b96d5aa9debadc95c6164ac85294a2350b20b893e73ab7421845bc69ede73805bfcff7", + TEST_RESULT_VALID, + }, + { + 45, + "", + "Pseudorandom,NonUtf8", + "bf898453344c6875f0b8b9bc2c50fc58e2", + "c69c3b58917e0975", + 4096u, + 65u, + "0452a418242f9539f8849d65466c96c984e021ddfde942a6a7e0b6dd1584dc8a536b1722684021444bf60fd958f391a5ba92fa6a44450d089faec32179f01f04c6", + TEST_RESULT_VALID, + }, + { + 46, + "", + "Pseudorandom,NonUtf8", + "9e9d7c166ad3bec856fe5d15d3aacbc53c", + "200bba668b2010b1968b82091848937c", + 4096u, + 16u, + "6320a1e2cc157e09607d4fc9a4ae3269", + TEST_RESULT_VALID, + }, + { + 47, + "", + "Pseudorandom,NonUtf8", + "17812c26bba941f3c2ebdb9bb6904c9f73", + "36586fdefbe916369412c9f3e6337ddf", + 4096u, + 42u, + "d42a8d13e4901d902c6ebf070fa3b253af9a0783cf5260daca193090337ad8ab783a2e46eb8022996c18", + TEST_RESULT_VALID, + }, + { + 48, + "", + "Pseudorandom,NonUtf8", + "6c816697ba2366375bb986c0af0d7d20fe", + "ab7c17e3b78fe71e373b0ccb0fc3ccda", + 4096u, + 65u, + "634fc75709b5d0e585269c6f31280bdc79c1aaaf72fd5a13e9848c5fc1be7caeff06fbda3fd83ec67aee6286e4411da66f1c9da5414734d5388f9f95c25a13c99a", + TEST_RESULT_VALID, + }, + { + 49, + "empty password", + "Pseudorandom,Printable", + "", + "1a71e2118c9fbcc9", + 4096u, + 32u, + "580ad63c3ade95c330d57e32af17fd342457fb0289b5d74c2d01ee109293bbdb", + TEST_RESULT_VALID, + }, + { + 50, + "long password", + "Pseudorandom,Printable", + "523249584467597a5a4271363970667a4a714e744b7761545a4544494676766b6a6253417167566e456a6b456b454557504e69383653626a6e376b725764394d67", + "d26b99043c8ba3a4", + 4096u, + 32u, + "983adc3df73cffc0649a9c9682498c6bacbe91980e809d0cf002200d913b2b73", + TEST_RESULT_VALID, + }, + { + 51, + "long password", + "Pseudorandom,Printable", + "63727a466d396430795463456a6468545758693877674e516f544e6d486e61686f6956317071613133655471477933497531354b4f52516339494c53646756527a45524e6b4463723565676a62584a78426572536a74726b6b674341616a63356243354434706e66743836663754626663666370595a30767354454d4930524178", + "9266da5b8c102b27", + 4096u, + 32u, + "9a3a9c839c05c455f1e83959f486b23b15f6e91bdf71b3da11bb0dd71ec98d49", + TEST_RESULT_VALID, + }, + { + 52, + "long password", + "Pseudorandom,Printable", + "32647a56696e6f45774464656c656257797058314d6f4f685975585a463172514b7a32535a6c307578576377796f3561416e6f42524e7a5044763072513662693742345a34324f50695258534c6859684441643262746f647633744d54424430744b46316e4b655942656565547a70413145434150713942687a4a4c555a67737636754e4b664450333558414d684a486c736a6f5a796b677130624d506265556941796d6f324371586b64524752633876544176684e5a5838536f564d33704e74594a4a7258766975337547583233736a353847723061614a4b45763765796c373248636e6167713474766e533737626d6376676c79536d347370707a65673869", + "6a06903b78dae6de", + 4096u, + 32u, + "c27d89fdfb870fe02f4e3843025d33e91fa2eff7f8a18eefe7113818d1765126", + TEST_RESULT_VALID, + }, + { + 53, + "special case password", + "NonUtf8", + "ff", + "32140a66b88e1683", + 4096u, + 16u, + "73eb7888fbad86cdb299455454d26429", + TEST_RESULT_VALID, + }, + { + 54, + "special case password", + "NonUtf8", + "ffffffffffffffff", + "8a359634423ed028", + 4096u, + 16u, + "f0bdbf5507d74ab49ee220500107d69f", + TEST_RESULT_VALID, + }, + { + 55, + "special case password", + "NonUtf8", + "c0c0c0c0c0c0c0c0", + "d6f596f170ed2414", + 4096u, + 16u, + "51eaac2999bab0ba22134d21f95ea277", + TEST_RESULT_VALID, + }, + { + 56, + "special case password", + "NonUtf8", + "eeeeeeeeeeeeeeee", + "6b2269425e288d03", + 4096u, + 16u, + "f4e6be1916b7d1e21e8c4ea77c75b54e", + TEST_RESULT_VALID, + }, + { + 57, + "special case password", + "NonUtf8", + "f0f0f0f0f0f0f0f0", + "ebf0b04633711248", + 4096u, + 16u, + "51baf8f1ecab753e30fd1ff995c29355", + TEST_RESULT_VALID, + }, + { + 58, + "special case password", + "Ascii", + "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "9de9b71eeb9d9a34", + 4096u, + 16u, + "2900d1f4870e09094070d986784dbcc8", + TEST_RESULT_VALID, + }, +};