diff --git a/test/ecdsa_test_vectors.c b/test/ecdsa_test_vectors.c index 1e902b2..892f383 100644 --- a/test/ecdsa_test_vectors.c +++ b/test/ecdsa_test_vectors.c @@ -6,14 +6,7 @@ #include #include -typedef struct { - const char* private_key; - const char* public_key; - const char* k; - const char* hash; - const char* r; - const char* s; -} Test; +#include "test_vectors/test_vector.h" Test secp256k1_tests[] = { { @@ -26,6 +19,28 @@ Test secp256k1_tests[] = { }, }; + +Test secp256r1_tests[] = { + { + // test case from https://github.com/kmackay/micro-ecc/issues/196 + "0000000000000000000000000000000000000000000000000000000000000000", // privkey set to 0 to trigger verify-only test mode + "495d1499b6626ea994af768ff960acfac3af290f8c9816a158a7ee71be895e792a168aaeb797ea665786966356715bcb44cc51d792f4bcd6320c370a73871f69", // pubkey + "0000000000000000000000000000000000000000000000000000000000000000", // k + "ef798cff4c935dca6cc19338f48ffd6185a7eb461216985fc3d72552f5b91836", // message + "495d1499b6626ea994af768ff960acfac3af290f8c9816a158a7ee71be895e79", // R + "06783594bfe892d4c1daa797f9b49d4c29b9f5131f9a203c717c0224329b18f9", // S + }, + { + // test case from https://github.com/kmackay/micro-ecc/issues/196 + "0000000000000000000000000000000000000000000000000000000000000000", // privkey + "7cf27b188d034f7e8a52380304b51ac3c08969e277f21b35a60b48fc4766997807775510db8ed040293d9ac69f7430dbba7dade63ce982299e04b79d227873d1", // PUBKEY + "0000000000000000000000000000000000000000000000000000000000000000", // k + "797601b76d29603d167fa1062cc27b00bb0e39493bf3b7bbafa610c2b24f4a20", // HASH + "56cd9cf152bccc3a64e41e2b2bf91ed0661e0821b14b50abe93c05ea889afed3", // r + "f93452957106bab410617e306d876bb58fa7d7b5a515ac6b6181d8d638651fc7", // s + }, +}; + extern int uECC_sign_with_k(const uint8_t *private_key, const uint8_t *message_hash, unsigned hash_size, @@ -36,21 +51,48 @@ extern int uECC_sign_with_k(const uint8_t *private_key, void vli_print(uint8_t *vli, unsigned int size) { for(unsigned i=0; i= b) ? a : b; +} + + void strtobytes(const char* str, uint8_t* bytes, int count) { - for (int c = 0; c < count; ++c) { - if (sscanf(str, "%2hhx", &bytes[c]) != 1) { - printf("Failed to read string to bytes"); + int slen = strlen(str); + const char *strpos = str; + int offset = max(count - slen / 2, 0); + int c; + + //printf("%s\n", str); + + for (c = 0; c < count; c++) { + bytes[c] = 0; + } + + // odd # of chars, special case the first nibble + if (slen % 2 && offset > 0 && strpos + 1 < str + slen) { + sscanf(strpos, "%1hhx", &bytes[offset - 1]); + strpos++; + } + + for (c = offset; c < count && strpos < str + slen; ++c) { + if (sscanf(strpos, "%2hhx", &bytes[c]) != 1) { + printf("Failed to read string to bytes %d, %d in string:\n", c, (int)(strpos - str)); + printf(" %s", str); exit(1); } - str += 2; + strpos += 2; } } +int global_passes = 0; +int global_failures = 0; + int run(Test* tests, int num_tests, uECC_Curve curve) { uint8_t private[32] = {0}; uint8_t public[64] = {0}; @@ -58,19 +100,25 @@ int run(Test* tests, int num_tests, uECC_Curve curve) { uint8_t hash[32] = {0}; uint8_t r[32] = {0}; uint8_t s[32] = {0}; + uint8_t zeroes[64] = {0}; uint8_t signature[64] = {0}; int result; + int should_verify; int i; int private_key_size; int public_key_size; int all_success = 1; + int fail = 0; + int passes = 0; + int failures = 0; private_key_size = uECC_curve_private_key_size(curve); public_key_size = uECC_curve_public_key_size(curve); for (i = 0; i < num_tests; ++i) { + fail = 0; strtobytes(tests[i].private_key, private, private_key_size); strtobytes(tests[i].public_key, public, public_key_size); strtobytes(tests[i].k, k, private_key_size); @@ -78,51 +126,102 @@ int run(Test* tests, int num_tests, uECC_Curve curve) { strtobytes(tests[i].r, r, private_key_size); strtobytes(tests[i].s, s, private_key_size); - result = uECC_sign_with_k(private, hash, private_key_size, k, signature, curve); - if (!result) { - all_success = 0; - printf(" Sign failed for test %d\n", i); - } - if (result) { - if (memcmp(signature, r, private_key_size) != 0) { + /* only generate a signature if we have a private key */ + if (memcmp(private, zeroes, private_key_size) != 0) { + result = uECC_sign_with_k(private, hash, private_key_size, k, signature, curve); + if (!result) { + fail = 1; all_success = 0; - printf(" Got incorrect r for test %d\n", i); - printf(" Expected: "); - vli_print(r, private_key_size); - printf(" Calculated: "); - vli_print(signature, private_key_size); + printf(" Sign failed for test %d\n", i); } - if (memcmp(signature + private_key_size, s, private_key_size) != 0) { - all_success = 0; - printf(" Got incorrect s for test %d\n", i); - printf(" Expected: "); - vli_print(s, private_key_size); - printf(" Calculated: "); - vli_print(signature + private_key_size, private_key_size); + if (result) { + should_verify = 1; + if (memcmp(signature, r, private_key_size) != 0) { + fail = 1; + all_success = 0; + printf(" Got incorrect r for test %d\n", i); + printf(" Expected: "); + vli_print(r, private_key_size); + printf(" Calculated: "); + vli_print(signature, private_key_size); + } + if (memcmp(signature + private_key_size, s, private_key_size) != 0) { + fail = 1; + all_success = 0; + printf(" Got incorrect s for test %d\n", i); + printf(" Expected: "); + vli_print(s, private_key_size); + printf(" Calculated: "); + vli_print(signature + private_key_size, private_key_size); + } } + } else { + /* else this is a validate-only test */ + /* combine r||s to get verifyable signature */ + memcpy(signature, r, private_key_size); + memcpy(signature + private_key_size, s, private_key_size); + should_verify = 1; + } + if (should_verify) { result = uECC_verify(public, hash, private_key_size, signature, curve); if (!result) { + fail = 1; + all_success = 0; printf(" Verify failed for test %d\n", i); } } + + if (fail) { + failures++; + } else { + passes++; + //printf(" Pass for test %d\n", i); + } + } + printf(" Pass: %d Fail: %d\n", passes, failures); + global_passes += passes; + global_failures += failures; return all_success; } -#define RUN_TESTS(curve) \ - printf(#curve ":\n"); \ - if (run(curve##_tests, sizeof(curve##_tests) / sizeof(curve##_tests[0]), uECC_##curve()) ) { \ +#define RUN_TESTS(curve, test_vectors) \ + printf(#curve "(" #test_vectors "):\n"); \ + if (run(test_vectors, sizeof(test_vectors) / sizeof(test_vectors[0]), uECC_##curve()) ) { \ printf(" All passed\n"); \ } else { \ printf(" Failed\n"); \ + failed_tests++; \ } int main() { + int failed_tests = 0; + + printf("ECDSA Test Vectors\n"); #if uECC_SUPPORTS_secp256k1 - RUN_TESTS(secp256k1) + RUN_TESTS(secp256k1, secp256k1_tests) #endif - - return 0; +#if uECC_SUPPORTS_secp256r1 +#include "test_vectors/nist_fips_186_secp256r1_tvs.h" +#include "test_vectors/rfc6979.h" + RUN_TESTS(secp256r1, secp256r1_tests) + RUN_TESTS(secp256r1, nist_fips_186_secp256r1_tvs) + RUN_TESTS(secp256r1, rfc6979_p256_tvs) +#endif +#if uECC_SUPPORTS_secp224r1 +#include "test_vectors/nist_fips_186_secp224r1_tvs.h" +#include "test_vectors/rfc6979.h" + RUN_TESTS(secp224r1, nist_fips_186_secp224r1_tvs) + RUN_TESTS(secp224r1, rfc6979_p224_tvs) +#endif +#if uECC_SUPPORTS_secp192r1 +#include "test_vectors/nist_fips_186_secp192r1_tvs.h" +#include "test_vectors/rfc6979.h" + RUN_TESTS(secp192r1, nist_fips_186_secp192r1_tvs) + RUN_TESTS(secp192r1, rfc6979_p192_tvs) +#endif + printf("TOTAL Pass: %d Fail: %d\n", global_passes, global_failures); + return global_failures; } diff --git a/test/test_vectors/nist_fips_186_secp192r1_tvs.h b/test/test_vectors/nist_fips_186_secp192r1_tvs.h new file mode 100644 index 0000000..5ec482e --- /dev/null +++ b/test/test_vectors/nist_fips_186_secp192r1_tvs.h @@ -0,0 +1,138 @@ +#include "test_vector.h" +Test nist_fips_186_secp192r1_tvs[] = { + { + /* test vector 0 for P-192 */ + "0017899949d02b55f9556846411cc9de512c6f16ecdeb1c4", /* private_key */ + "14f69738599689f5706ab71343becc886ef1569a2d1137fe0cf5a433909e33217fb4df6b9593f71d43fb1c2a5653b763", /* public_key */ + "0098e9c07e8e6adb97b77d85b0c10a265e11737a89a3e37b", /* k */ + "5c8190e87adb631bb5537f3f5f478888bd002ff5", /* SHA1 hash */ + "af1f749e3df6220ff04efd178618a977e0838b1b9dc126e3", /* R */ + "8990a04c6cc0ff26264ecf8f7831381a9dbc6e53cc8cc860", /* S */ + }, + { + /* test vector 1 for P-192 */ + "0064c3a51fb6188170f3cdf12b474a77de4ae0052b84ece8", /* private_key */ + "386afa71afc065019f3d2021ead531ed1d365887122d2d4bbbfb6e9cdb32c2252015acfb4cfb049b08b4cb279c64928a", /* public_key */ + "00797552b9abf541c886f93556103b817a46c9aa0e2bc86f", /* k */ + "005e97fa0177ffff868cdac356508e22cbe730d2", /* SHA1 hash */ + "337be42eebdcedd97678eeaae9d1b231b740a191a293c22a", /* R */ + "9d6766b391e95f649e05442453a85466da29eaa97ddcfc62", /* S */ + }, + { + /* test vector 2 for P-192 */ + "00abd205ef412646907d2e4886b8ffd7d94678bd3818ed54", /* private_key */ + "3b1c19d73b6a4d7a12003530a54ae0f5ba18d75c98a0db95afb8bd8c94c6e3d5dc050e3641c0fad771557ce97f5f3dba", /* public_key */ + "00b81567f9e19c4ace373a26337488c1a476b7ee8d8e52bf", /* k */ + "619c5a0cea316912adbf92a8212bad2187453bc6", /* SHA1 hash */ + "e36d5dbb9560d959814cbd30aa6a405da9652fbd250da9ab", /* R */ + "f2db3d62733f6d08b08ef0682f579ac527950117f39e474b", /* S */ + }, + { + /* test vector 3 for P-192 */ + "0045624e643545c113e4a1993cfac6f23c6e0486c98e14c9", /* private_key */ + "21933e6e8cdcfff62f36c45e83dece1280a888663a34608f565890e37fdf563595d24524ef1da9aae246892e75a74234", /* public_key */ + "008df8209daae53a365bdcc8608f597315d43f587859d96a", /* k */ + "179a36aa602e23665295d895581fe44b138da3dc", /* SHA1 hash */ + "1791e503645e53a8304f2a44715942c6aab315b0086f4147", /* R */ + "366309b7f79b2fd98d6c2f3a8424178b01235041f9869552", /* S */ + }, + { + /* test vector 4 for P-192 */ + "00ca3e5b5d69cf028c9ff138b1ee5c28607a6bf9352c6430", /* private_key */ + "4828ad4aff5d87dcca98a341344a462edf277850755c72778a1bfc6b7b0424e15454ac198d4d697927f4eaaf9d14d88e", /* public_key */ + "00964e4a3eac4d2641c2a5c4badd301da54962410a459654", /* k */ + "a35b163e77befe4fc68f61c328e309f41b196004", /* SHA1 hash */ + "c438ca66c5d3b19e2bcd26a5c54742435f25ee0e9364b41c", /* R */ + "ff194479695afdcc88645f2a309cb99717beac26794c0658", /* S */ + }, + { + /* test vector 5 for P-192 */ + "0055ace67df2b17f6e9e1b8928ac856ce8d75f6bbaaaed83", /* private_key */ + "2f5d05cbd620145b41d0a1c656d676ead2fc651b3cf71cc288d2386cfb812d02a1fa19578a7cd04b356920a2b2e69839", /* public_key */ + "006ed729e5c2ec9bac7ddfbfe04ea9444c2c77f71455f623", /* k */ + "e6890e6692407724d039d4a8d4f957d5554b30fb", /* SHA1 hash */ + "cde95d12d650102c535fdc1994fc468308b05e2af7af9c14", /* R */ + "c2606a54e7592214a265270918322ae33d487268b9108cae", /* S */ + }, + { + /* test vector 6 for P-192 */ + "00d185d51f877d3fcc657d18f30cd14570022d0726c0b188", /* private_key */ + "47e8ec5e1edb1d23c04ebfeefd8cb8bf39cd48c348de3ea7b1167b3a4e2fbe167bbd7b7b06bf1314d58d9e3976ffa47f", /* public_key */ + "00124c96b0dd589501ba7d5ddfe9c412cf574be10198899b", /* k */ + "8b7bc5a5967111272dc68ca86e3b72b9a493b8d3", /* SHA1 hash */ + "539e285389399c785dfc4f3bfccbc825602f443ae0dca3d1", /* R */ + "ed56e54fbaa0b7c0bc462920314031c7a3e7b2eb701cb9db", /* S */ + }, + { + /* test vector 7 for P-192 */ + "007d6fa0b3dacaf022436777ac53c4437c957947c911faab", /* private_key */ + "a4db1303bf13696e26678286e27c166dd87be98cc8be284409b4de84bbfa77e049ace272a12d0dd141d363e74ec12511", /* public_key */ + "00620f584b08d3199f6841fefa4b920659b267271c9b4034", /* k */ + "3387cd04272f60f84bf82f27b154324da4abf6ed", /* SHA1 hash */ + "6818d44aea421701e3f41600c867fb3d3749eadbf33820fa", /* R */ + "658b228b2edd8569f6940fee1c303626e48181094581987b", /* S */ + }, + { + /* test vector 8 for P-192 */ + "00b5bfd09a8d177513c4bd7d1bd9ac5ccb7c00c63b9841b4", /* private_key */ + "270d7bb9bfab54529240426a08508f1ed90dc7914cdf11f3c91ed7f2eca39f563757c5b518d9c28d4d41e7bdc0c7f53e", /* public_key */ + "00dbc3fbf7b320e9bb6bae128ae19f2c67b297ceb9bc697f", /* k */ + "19c4f2d298c703b56791b3454a2eacb93088b6e0", /* SHA1 hash */ + "db20f09b69ac79e224258800ebe6cc51a2e12536b69396c8", /* R */ + "d31df9544277f4a79676fdc7a51faef73ee2a0d1057ff3a2", /* S */ + }, + { + /* test vector 9 for P-192 */ + "00958e4bbbdd8709a78441485d6f57dee96cc4d98c38ad4f", /* private_key */ + "6a5723e72f6270160f256ddd403c108503388d4320f7926cf52b0e0e4c8871443cfc0c231e856f6adc2a7c3318a43578", /* public_key */ + "0045f392d1910760550b34e64d578905c20fb1cc51b29eef", /* k */ + "b552b660da681cb93d739f21c57ef1bf84926f5d", /* SHA1 hash */ + "6505663a952b741c4583e755496740833d5901fc09433963", /* R */ + "de0411972e27bfb80362b44650e687866cd202a4199d605c", /* S */ + }, + { + /* test vector 10 for P-192 */ + "004960533b788b3fad017e610f5ddab750b4bf5a5e9d0964", /* private_key */ + "1c0e4fc6d8f4e7605f2bf57541395f5167d41d8bdd5c4f80775da73226020bad6ec4df5022a8c61aee064372ba535ae7", /* public_key */ + "00e93a10b115218fcb2f0413784385e1fc4555b1818f3b3c", /* k */ + "b2e39a27756979bd647879a4f22008b2624f8f8d", /* SHA1 hash */ + "bc540a8f5ea81c6144698f5452556f17da76a52636461d70", /* R */ + "2de23f6cc9a45899a9f605dab9f28fddf9e376ea06c92db5", /* S */ + }, + { + /* test vector 11 for P-192 */ + "00cf08df71e8343af55fc20ca9d6ae822f9bbdf5ab7d2113", /* private_key */ + "194e8fdd4b6b84f1955d1919387f96facf6feadd8105d8dd2eb47a2ed3aac4250be37f9e31d7ff87be4043ac1eac401f", /* public_key */ + "009758de92827113c0d1ece5ad9ab65d9acf18f74b58ecf6", /* k */ + "81b29a3019476a387455b61fffd83ac83ffcd8d0", /* SHA1 hash */ + "0bbd331b5cbcaef2b26e27bdc559d31c62d5c9b6b8979603", /* R */ + "c1670a3b435805fa7ab20e6dd8ffa1012e9fb41b1d7d0176", /* S */ + }, + { + /* test vector 12 for P-192 */ + "0027492bdd573a53baafd1575578fdce242e43f2e3537a0b", /* private_key */ + "18b94fc7825bad91b1ca5a69cdf576377ad76965670d39670a73253d6df54d5105f0ca2f948d0686706dbd064744f7c3", /* public_key */ + "00d8966cd03fdb2509193ddeee3b429cab2605e283c98577", /* k */ + "e062ee7eb959f9c7f33828b71c04a846b3dfac22", /* SHA1 hash */ + "1a813b607c0b4d71e7acdac040eb78b3795e53bc498bae85", /* R */ + "67fc1124c30966473dc6a1f14ae32ec2dd860b3667c61dec", /* S */ + }, + { + /* test vector 13 for P-192 */ + "00066eb1a5e6a42b53fcc82fcf6a601d023127c7b1c779db", /* private_key */ + "3888a94ef288ebe32b4b9b53bf2d3a85b45976583251f0ec30156d8e0d212a66c071fb2e7b422ef1784a95dacffd9edb", /* public_key */ + "008c135723cb6a10cbd3e2cde313aee847477e66c4220f47", /* k */ + "8d30f57068ecc59b8a3a3897a51cc1cf19b674fe", /* SHA1 hash */ + "37033150afed029fd8390716eac6500223e72154ccff9fee", /* R */ + "b4e978e8d499cc1be576dea74c0dd74cafe9e794a7563172", /* S */ + }, + { + /* test vector 14 for P-192 */ + "006dfc40880e0c42d2cebcdee255040d18bb99190981f9a9", /* private_key */ + "b11956a29af6984043973e2de46d53d870e04687cae59728c915f88aa0fa9822762cc4e60df759d189a10c486b901d5e", /* public_key */ + "009e03961f041fa811ff88c4948bc0a6d867a7fef5f39453", /* k */ + "8778cce9e8ad6541b9710e3f7067bc2c9cbc6541", /* SHA1 hash */ + "c459f7bcea050210e3369ac174ba89c823ca1b0d4c0964f6", /* R */ + "04715cba9ba31c4ed9bf0be07d194e2a709294472cc60bdf", /* S */ + }, +}; diff --git a/test/test_vectors/nist_fips_186_secp224r1_tvs.h b/test/test_vectors/nist_fips_186_secp224r1_tvs.h new file mode 100644 index 0000000..780d3a8 --- /dev/null +++ b/test/test_vectors/nist_fips_186_secp224r1_tvs.h @@ -0,0 +1,678 @@ +#include "test_vector.h" +Test nist_fips_186_secp224r1_tvs[] = { + { + /* test vector 0 for P-224 */ + "006975febc7b442dab8fd283ec2e4bdd0e0009525b1ce071f9ab5956", /* private_key */ + "56fb6538f1723d2bef3c764134320b44ba615f663db804e54050b95a9514a442eb66dbf2b450746f66d54101877a50d4bc2910c61d005add", /* public_key */ + "00591cb4272ddd1546d3d67bd2707d47ca51fd2c81d04635ad71e8aa", /* k */ + "5c8190e87adb631bb5537f3f5f478888bd002ff5", /* SHA1 hash */ + "9660bfffc173431d29f83fa2af0ba581791be3f43625316f395d27ff", /* R */ + "9e8c3b82bca2a4467c9694c666dff7f0e79d279bd64eb83bce2e3018", /* S */ + }, + { + /* test vector 1 for P-224 */ + "00fd1210ef4685ba8e31a3e0d66e03f91264a2a5b8897a1dc181b353", /* private_key */ + "391de80590dfbc60bb41cc9f3d93706d1d0083f1ef31d3a031fdc6044dd1928e557636f0a5df082aa0b185d08f57d1d5bf7857fceeb8c4c1", /* public_key */ + "005ab787e0961baaaba6c9deef88f69fed3e348a93f6564ded6fb51a", /* k */ + "005e97fa0177ffff868cdac356508e22cbe730d2", /* SHA1 hash */ + "fc9a2058b2a7b64c3c48f40a3643b18dbf418f579929bf52a5dea773", /* R */ + "05653b946b270aaf01351b21de753508610b1a76cf42366f1a6c1d62", /* S */ + }, + { + /* test vector 2 for P-224 */ + "00d661ae9d6a6eab7ca8378331e435664535720804cab09db1cbca6c", /* private_key */ + "993473a7d4b333e34c17ebfaa86ed929c8645ccfd79759c084cdb174a26ad50e57347965b42d5a159ff53a28957a5f3b57a844dcd0ee6d54", /* public_key */ + "00171f192db736283e30bb89fd6f2aeeb4c70d3eaae2ac58451fbb3b", /* k */ + "619c5a0cea316912adbf92a8212bad2187453bc6", /* SHA1 hash */ + "259fda3143c584131ab8e49feaf93dad3b86575f2789962406bf8092", /* R */ + "cea1cc15e28c094c3bc557b3f5a5172b62910cd7cfbb6193ae6d8dd2", /* S */ + }, + { + /* test vector 3 for P-224 */ + "005a528a0167683393fa5918b94989b9342f8173cc9757ddea49fed7", /* private_key */ + "b8c33944ff61c5600904ca2ae0aefae6d21bf3c74aa21fafd824ca69ed93a6edb3f3c3c4997ebfbc97664965449e5ed7eaae875fc328f0ee", /* public_key */ + "000c2aa7a8a5fe907b2cb5fc77917dd14fd266315503a3c11476d285", /* k */ + "179a36aa602e23665295d895581fe44b138da3dc", /* SHA1 hash */ + "6b4bc7a907090db66e3a02258f043c40330403b22dea131bad0dbb86", /* R */ + "ecea70cd6921e9342d49b88191c020d2bfaffaa67df59388db4a3ea5", /* S */ + }, + { + /* test vector 4 for P-224 */ + "00752958a79d6d4596c101aae606139bc902b0808b9441a9ba48d6ba", /* private_key */ + "3b55be3a8cc5c47085ab5d29e3b6c28e51e74b79d1a874b5d7bbbb20aeba7d2ff67e2f6861e4de552116bdc1cfa4f187149d19abd1acd758", /* public_key */ + "009c2abc0d279dac6afb9dc33af8dc273e30c7e6e502347d076806bc", /* k */ + "8193544d0a954dbcb44f044fd0f3723431d453f8", /* SHA1 hash */ + "3da522ea72e2532aa43949299101d3125cecc1bf45747ee1fd49ded8", /* R */ + "f822638396a4c1d1d6a5eccf89bd26f4248bde681631a290de7db412", /* S */ + }, + { + /* test vector 5 for P-224 */ + "003733e92e47fb22c7a6c45ba5115fcc4db164da56bc9052930accc4", /* private_key */ + "f3465da1238fa959b4b525b127b53abf0c9e295dc830874635c4ccd0b42af0bb8feb22d4889eb3e4fe256d61beb50f02d70e875071fc87a7", /* public_key */ + "0028761d9ab7ae71a3b0713e58d7fdf6c1f709f52c6313c21127cf83", /* k */ + "863d3c73cd7700049b391ed03f822c19ac5fa00c", /* SHA1 hash */ + "d02011391fd353b772b3a3a72fc1e40f9be7d4a86a5428f1634d6a30", /* R */ + "fc550f23ca67bb0874210fda9344d4853ba114f543697a94594c96c2", /* S */ + }, + { + /* test vector 6 for P-224 */ + "00598fcabe590452c6666d0ba3d1707e944349b5930662bca614178a", /* private_key */ + "e5f58264c651f8981991cf8de0dbf90235c31c93a0a63ce1e484915bf16234cb0166a73160b05c314cc7a0c9476e6fcf3bc1146ed12881de", /* public_key */ + "00fa783144e68bf30bf444a7b64b754f9b015c530970f8011d717b14", /* k */ + "bb269410968a8e07b5cf1d766148892e77636065", /* SHA1 hash */ + "8f2856eba0024cc8afbf1705d0cab81071b3b2b62cac22a5861db0ad", /* R */ + "669365489e790763112af6288ea73c048102ef5f60f380b8fceab913", /* S */ + }, + { + /* test vector 7 for P-224 */ + "00896fd1043a168350404debd5ec4614db8f80300c5b0eed2fdfc898", /* private_key */ + "04015992286133eef54e6e91ecc58c021c25806191bcf668f7f65127a32a50f28e1a4f2f076498f50bf27c291103f993cb88ceb45ac550cb", /* public_key */ + "003c00f713e3a2fef78bcd9e534e61fe199faa7238974d118407c820", /* k */ + "b3f416fc6872314a79b96c28d996d5eef915254b", /* SHA1 hash */ + "4a3b1d8f1d224b3491c7d3af160ace4da3b5da16e77d9f8bcd19592d", /* R */ + "4353c4d87053d78c821d29ba926bb00442169875b9d95618f9350152", /* S */ + }, + { + /* test vector 8 for P-224 */ + "009c310180609c721a5531cf4e438bf3c85ef2b2ffeac9a21c667d0e", /* private_key */ + "cc602a858276f944bccca2acbbd8c9518b3cd9f062e4802e342780d75650efeddbce1c00f506a3f88a8f57669405e344901cfb51ce54c15f", /* public_key */ + "00ef15cd8173fa27a393be6b1e1253aaee433b24e8a4d448a960679e", /* k */ + "2ab47e116a33d22553e5e80a203c11f554ed1fe4", /* SHA1 hash */ + "7374f7df8e9e6b2bcb4e82258a0fa8b136b93aba18a53a79e8c8e897", /* R */ + "a4a5da18cbb987e48a80a73bd69be378ce476fbbda6468c4a49b7219", /* S */ + }, + { + /* test vector 9 for P-224 */ + "00a140a5096019e8f55bd2df1338b293f7f610068e75632ddfcb883d", /* private_key */ + "544bf08e35ffa3c960553c9723ee7097b7dfaae059adccf2da75299b999dae3a21782cc21ba3a50181dc7e67b8d7960f9d58d094a3b141ef", /* public_key */ + "00aef6a43f3f219a611e8e1994cb408ec71f05fb6f9af347a6b29284", /* k */ + "8bcd21464003397b75ac82c22a2429ba7c013970", /* SHA1 hash */ + "5bf01553db59eb4530e72157d39f03dab9167ffd0df3abb74d822fdf", /* R */ + "0c104e52018dfbdd5386ddb9599b41abf2107708a3dc86b35f68dc1c", /* S */ + }, + { + /* test vector 10 for P-224 */ + "00a61b969a0bf65277fb7f8796278554f1350ce82afa1d5ff4cf3a5f", /* private_key */ + "b48b9585bdfa5ad902d3d91317cf1aae9a175d39364a18e5dd9e133db03426dc8660543e13bee6660b43c453fb1c7a13a847e98a5d9bb038", /* public_key */ + "00eddd21ff4e5da2e04a0c66214ad732ecd7521472e921646cde719f", /* k */ + "b4b77d03e6b7b346f74b086907e8ad587692bfdd", /* SHA1 hash */ + "707cf96de23f84dc987351599b63bc16cb6aa876fcebdefbdcc40eee", /* R */ + "dd71fbb5bce18e0041c867d577271b67832c139901c7194c50aa94ed", /* S */ + }, + { + /* test vector 11 for P-224 */ + "00826fb0ab78dd5a83468727a93b4654e61423b586e3e192010283a3", /* private_key */ + "dc20b984eb646343679e8299763416cb9af27fae39f297da3cdb934f0e63b6fd5e0a2f79acc5004c2120ecaa57f55b3993c7c27efaea581a", /* public_key */ + "002d50bff84a4a955fe094199cdae4e897ee985b8e15bb2174cf041a", /* k */ + "216c502af0b834318187f74510268e4f1699834e", /* SHA1 hash */ + "1bf7ada14936a7411e29725d867e1f5c88ead2e4eea36e4a8e2e7b89", /* R */ + "9ee15ffedb03549eb2f5aab0ebfe335bb35ea325d0af71dedd82e90c", /* S */ + }, + { + /* test vector 12 for P-224 */ + "00774f9959f442d48b562de24ae25285756ec15ce07225f15c007c6d", /* private_key */ + "7516eeb4db631f0fd6fde701aa1893ad115591e37cdfcc52b714e77862e0164883b23cc4f4d5e06e766070e86fe377f12dbec46eafe5f4e2", /* public_key */ + "0060d4854bfc3ddf0ace90c4c4c6476cba853c4ebf3e54bab9bc2352", /* k */ + "cedd808a368606cab6262eeb20e15a9a854730a2", /* SHA1 hash */ + "d27ff094808787c76495af70419426149ec11059cdd39f2581b8d135", /* R */ + "f450a12774d1a9c843e76ec1a24fe15064b21ad2bcda9dfb0cf6fd2c", /* S */ + }, + { + /* test vector 13 for P-224 */ + "00180ce883f02da52f1cfef7f86a74cc3809923595074b1c3e4dbd67", /* private_key */ + "3e4409baa7817f25c694a4e65e7045e124ea0cef548269fdc9d733989d91568f038a43ad6a0a91b42476369ccc67cdd88b16f71c09d9e00a", /* public_key */ + "00ad38800026a494128dab55dcd2ab1f2ffa6ff2f35b619ccc34a7ae", /* k */ + "1372b91bef6e4c612c05c34a7e26b374ec4da645", /* SHA1 hash */ + "676d6f6a3fa61bf0f3cf5f7447563df101361f9b09181334179ef6ce", /* R */ + "0686517815bdb6ece3bda257a821a6b7249931e5ccd575332f77d358", /* S */ + }, + { + /* test vector 14 for P-224 */ + "00b3584919167e9590bae8ad6f770080ffc482057443d2655cbf98be", /* private_key */ + "252cfda1f1f2ba7a78eb7ab2adab3d12ee830cd0e827d60635a83614ca7465c5fd9ad07fdf5460abcd94da23e2ee520cfbdef8eb66cc0bfc", /* public_key */ + "00d070665ffa8ae33a3662250aaf9b9a84aa611f2854205555febc4f", /* k */ + "d2bd031b40bf14207cdca1e51b339759c9c10c9a", /* SHA1 hash */ + "a8176f8756a2fcc73ad799498cc3fa7cd34746650c7ffc15b2d0a4e0", /* R */ + "bcdb2190028362be803d776dcb6dc2aafcd0bf9997e7425f3e05ddf6", /* S */ + }, + { + /* test vector 15 for P-224 */ + "16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615", /* private_key */ + "605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eabf5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669", /* public_key */ + "d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0", /* k */ + "07eb2a50bf70eee87467600614a490e7600437d077ec651a27e65e67", /* SHA224 hash */ + "2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6", /* R */ + "8d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb", /* S */ + }, + { + /* test vector 16 for P-224 */ + "cf020a1ff36c28511191482ed1e5259c60d383606c581948c3fbe2c5", /* private_key */ + "fa21f85b99d3dc18c6d53351fbcb1e2d029c00fa7d1663a3dd94695ee9e79578f8988b168edff1a8b34a5ed9598cc20acd1f0aed36715d88", /* public_key */ + "c780d047454824af98677cf310117e5f9e99627d02414f136aed8e83", /* k */ + "bde0fbb390fb05d0b75df5bd0d0a4ea29516125f19830e3b0c93b641", /* SHA224 hash */ + "45145f06b566ec9fd0fee1b6c6551a4535c7a3bbfc0fede45f4f5038", /* R */ + "7302dff12545b069cf27df49b26e4781270585463656f2834917c3ca", /* S */ + }, + { + /* test vector 17 for P-224 */ + "dde6f173fa9f307d206ce46b4f02851ebce9638a989330249fd30b73", /* private_key */ + "fc21a99b060afb0d9dbf3250ea3c4da10be94ce627a65874d8e4a630e8373ab7190890326aac4aacca3eba89e15d1086a05434dd033fd3f3", /* public_key */ + "6629366a156840477df4875cfba4f8faa809e394893e1f5525326d07", /* k */ + "c2c03fe07e10538f6a38d5831b5dda9ce7478b3ed31323d60617dc95", /* SHA224 hash */ + "41f8e2b1ae5add7c24da8725a067585a3ad6d5a9ed9580beb226f23a", /* R */ + "a5d71bff02dce997305dd337128046f36714398f4ef6647599712fae", /* S */ + }, + { + /* test vector 18 for P-224 */ + "aeee9071248f077590ac647794b678ad371f8e0f1e14e9fbff49671e", /* private_key */ + "fad0a34991bbf89982ad9cf89337b4bd2565f84d5bdd004289fc1cc35d8b6764f28c8163a12855a5c266efeb9388df4994b85a8b4f1bd3bc", /* public_key */ + "1d35d027cd5a569e25c5768c48ed0c2b127c0f99cb4e52ea094fe689", /* k */ + "5d52747226f37a5afcd94d1b95867c0111bcb34402dad12bee76c1b7", /* SHA224 hash */ + "2258184ef9f0fa698735379972ce9adf034af76017668bfcdab978de", /* R */ + "866fb8e505dea6c909c2c9143ec869d1bac2282cf12366130ff2146c", /* S */ + }, + { + /* test vector 19 for P-224 */ + "29c204b2954e1406a015020f9d6b3d7c00658298feb2d17440b2c1a4", /* private_key */ + "0e0fc15e775a75d45f872e5021b554cc0579da19125e1a49299c7630cb64fe462d025ae2a1394746bdbf8251f7ca5a1d6bb13e0edf6b7b09", /* public_key */ + "39547c10bb947d69f6c3af701f2528e011a1e80a6d04cc5a37466c02", /* k */ + "a1ab56bd011b7e6c7e066f25333d08cf81ac0d9c1abfa09f004ab52f", /* SHA224 hash */ + "86622c376d326cdf679bcabf8eb034bf49f0c188f3fc3afd0006325d", /* R */ + "26613d3b33c70e635d7a998f254a5b15d2a3642bf321e8cff08f1e84", /* S */ + }, + { + /* test vector 20 for P-224 */ + "8986a97b24be042a1547642f19678de4e281a68f1e794e343dabb131", /* private_key */ + "2c070e68e8478341938f3d5026a1fe01e778cdffbebbdd7a4cd29209cde21c9c7c6590ba300715a7adac278385a5175b6b4ea749c4b6a681", /* public_key */ + "509712f9c0f3370f6a09154159975945f0107dd1cee7327c68eaa90b", /* k */ + "8ef4d8a368fad480bac518d625e97206adcafa87c52aef3d179cbfa9", /* SHA224 hash */ + "57afda5139b180de96373c3d649700682e37efd56ae182335f081013", /* R */ + "eb6cd58650cfb26dfdf21de32fa17464a6efc46830eedc16977342e6", /* S */ + }, + { + /* test vector 21 for P-224 */ + "d9aa95e14cb34980cfddadddfa92bde1310acaff249f73ff5b09a974", /* private_key */ + "3a0d4b8e5fad1ea1abb8d3fb742cd45cd0b76d136e5bbb33206ad120c90ac83276b2fa3757b0f226cd7360a313bc96fd8329c76a7306cc7d", /* public_key */ + "1f1739af68a3cee7c5f09e9e09d6485d9cd64cc4085bc2bc89795aaf", /* k */ + "28fabbac167f3d6a20c2f5a4bcee527c96be04bdd2c596f09d8fbab7", /* SHA224 hash */ + "09bbdd003532d025d7c3204c00747cd52ecdfbc7ce3dde8ffbea23e1", /* R */ + "1e745e80948779a5cc8dc5cb193beebb550ec9c2647f4948bf58ba7d", /* S */ + }, + { + /* test vector 22 for P-224 */ + "380fb6154ad3d2e755a17df1f047f84712d4ec9e47d34d4054ea29a8", /* private_key */ + "4772c27cca3348b1801ae87b01cb564c8cf9b81c23cc74468a907927de9d253935b09617a1655c42d385bf48504e06fa386f5fa533a21dcb", /* public_key */ + "14dbdffa326ba2f3d64f79ff966d9ee6c1aba0d51e9a8e59f5686dc1", /* k */ + "50dd74b5af40978e809cee3eb41195402ebb5056e4437f753f9a9d0d", /* SHA224 hash */ + "ff6d52a09ca4c3b82da0440864d6717e1be0b50b6dcf5e1d74c0ff56", /* R */ + "09490be77bc834c1efaa23410dcbf800e6fae40d62a737214c5a4418", /* S */ + }, + { + /* test vector 23 for P-224 */ + "6b98ec50d6b7f7ebc3a2183ff9388f75e924243827ddded8721186e2", /* private_key */ + "1f249911b125348e6e0a473479105cc4b8cfb4fa32d897810fc69ffea17db03b9877d1b6328329061ea67aec5a38a884362e9e5b7d7642dc", /* public_key */ + "ab3a41fedc77d1f96f3103cc7dce215bf45054a755cf101735fef503", /* k */ + "9fee01807ab6c43a794abf6dcd6118915252ca7d3a31a1ff96b88a8d", /* SHA224 hash */ + "70ccc0824542e296d17a79320d422f1edcf9253840dafe4427033f40", /* R */ + "e3823699c355b61ab1894be3371765fae2b720405a7ce5e790ca8c00", /* S */ + }, + { + /* test vector 24 for P-224 */ + "8dda0ef4170bf73077d685e7709f6f747ced08eb4cde98ef06ab7bd7", /* private_key */ + "7df67b960ee7a2cb62b22932457360ab1e046c1ec84b91ae65642003c764ca9fc1b0cc2233fa57bdcfedaab0131fb7b5f557d6ca57f4afe0", /* public_key */ + "9ef6ebd178a76402968bc8ec8b257174a04fb5e2d65c1ab34ab039b9", /* k */ + "c349032f84384b913bd5d19b9211ddce221d66a45e8a051878254117", /* SHA224 hash */ + "eef9e8428105704133e0f19636c89e570485e577786df2b09f99602a", /* R */ + "8c01f0162891e4b9536243cb86a6e5c177323cca09777366caf2693c", /* S */ + }, + { + /* test vector 25 for P-224 */ + "3dbe18cd88fa49febfcb60f0369a67b2379a466d906ac46a8b8d522b", /* private_key */ + "b10150fd797eb870d377f1dbfa197f7d0f0ad29965af573ec13cc42a17b63ccefbe27fb2a1139e5757b1082aeaa564f478c23a8f631eed5c", /* public_key */ + "385803b262ee2ee875838b3a645a745d2e199ae112ef73a25d68d15f", /* k */ + "63fe0d82cf5edf972e97316666a0914432e420f80b4f78ceb92afd1d", /* SHA224 hash */ + "1d293b697f297af77872582eb7f543dc250ec79ad453300d264a3b70", /* R */ + "517a91b89c4859fcc10834242e710c5f0fed90ac938aa5ccdb7c66de", /* S */ + }, + { + /* test vector 26 for P-224 */ + "c906b667f38c5135ea96c95722c713dbd125d61156a546f49ddaadc6", /* private_key */ + "3c9b4ef1748a1925578658d3af51995b989ad760790157b25fe0982655648f4ff4edfb899e9a13bd8d20f5c24b35dc6a6a4e42ed5983b4a0", /* public_key */ + "b04d78d8ac40fefadb99f389a06d93f6b5b72198c1be02dbff6195f0", /* k */ + "9b44ee16e576c50c0b6b37ac1437bf8f013a745615012451e54a12f2", /* SHA224 hash */ + "4bdd3c84647bad93dcaffd1b54eb87fc61a5704b19d7e6d756d11ad0", /* R */ + "fdd81e5dca54158514f44ba2330271eff4c618330328451e2d93b9fb", /* S */ + }, + { + /* test vector 27 for P-224 */ + "3456745fbd51eac9b8095cd687b112f93d1b58352dbe02c66bb9b0cc", /* private_key */ + "f0acdfbc75a748a4a0ac55281754b5c4a364b7d61c5390b334daae1086587a6768f235bf523fbfc6e062c7401ac2b0242cfe4e5fb34f4057", /* public_key */ + "854b20c61bcdf7a89959dbf0985880bb14b628f01c65ef4f6446f1c1", /* k */ + "3c89c15dee194b3223e7b53a8a5845d4873a12a2f1581d5413359828", /* SHA224 hash */ + "a2601fbb9fe89f39814735febb349143baa934170ffb91c6448a7823", /* R */ + "bf90f9305616020a0e34ef30803fc15fa97dffc0948452bbf6cb5f66", /* S */ + }, + { + /* test vector 28 for P-224 */ + "2c522af64baaca7b7a08044312f5e265ec6e09b2272f462cc705e4c3", /* private_key */ + "5fad3c047074b5de1960247d0cc216b4e3fb7f3b9cd960575c8479fce4fc9c7f05ff0b040eb171fdd2a1dfe2572c564c2003a08c3179a422", /* public_key */ + "9267763383f8db55eed5b1ca8f4937dc2e0ca6175066dc3d4a4586af", /* k */ + "2b7faf36fdf0e393ddeb9fc875dd99f670e3d538fd0462395ea06c8f", /* SHA224 hash */ + "422e2e9fe535eb62f11f5f8ce87cf2e9ec65e61c06737cf6a0019ae6", /* R */ + "116cfcf0965b7bc63aecade71d189d7e98a0434b124f2afbe3ccf0a9", /* S */ + }, + { + /* test vector 29 for P-224 */ + "3eff7d07edda14e8beba397accfee060dbe2a41587a703bbe0a0b912", /* private_key */ + "6dd84f4d66f362844e41a7913c40b4aad5fa9ba56bb44c2d2ed9efac15f65ebcdf2fd9f8035385a330bdabec0f1cd9cc7bc31d2fadbe7cda", /* public_key */ + "7bb48839d7717bab1fdde89bf4f7b4509d1c2c12510925e13655dead", /* k */ + "5b24b6157c0d1edf3a40c22a0745d23bdb59379e5e5e776ed040288d", /* SHA224 hash */ + "127051d85326049115f307af2bc426f6c2d08f4774a0b496fb6982b1", /* R */ + "6857e84418c1d1179333b4e5307e92abade0b74f7521ad78044bf597", /* S */ + }, + { + /* test vector 30 for P-224 */ + "888fc992893bdd8aa02c80768832605d020b81ae0b25474154ec89aa", /* private_key */ + "4c741e4d20103670b7161ae72271082155838418084335338ac38fa4db7919151ac28587b72bad7ab180ec8e95ab9e2c8d81d9b9d7e2e383", /* public_key */ + "06f7a56007825433c4c61153df1a135eee2f38ec687b492ed40d9c90", /* k */ + "00c6fc53c1986d19a8a8b580ee553dc1240745d760647d1c0adf442c133c7f56", /* SHA256 hash */ + "0909c9b9cae8d2790e29db6afdb45c04f5b072c4c20410c7dc9b6772", /* R */ + "298f4fcae1fe271da1e0345d11d07a1fca43f58af4c113b909eedea0", /* S */ + }, + { + /* test vector 31 for P-224 */ + "5b5a3e186e7d5b9b0fbdfc74a05e0a3d85dc4be4c87269190c839972", /* private_key */ + "897089f4ef05b943eeac06589f0e09ccc571a6add3eb1610a2fc830f62ba3f6b3e6f0f062058b93e6f25b6041246c5be13584a41cae7e244", /* public_key */ + "5b6f7eca2bcc5899fce41b8169d48cd57cf0c4a1b66a30a150072676", /* k */ + "fb5dd3b8d280fe7c4838f01b2a5c28493ed3084f46b40642600ba39e43fbff7b", /* SHA256 hash */ + "f12c9985d454ffbc899ebbbb6cf43e3debcac7f19029f8f2f35cce31", /* R */ + "12fcb848adbd8b1b4c72b2b54a04d936e4a5f480ae2a3ea2e3c1baae", /* S */ + }, + { + /* test vector 32 for P-224 */ + "f60b3a4d4e31c7005a3d2d0f91cb096d016a8ddb5ab10ecb2a549170", /* private_key */ + "40a4ab1e6a9f84b4dedb81795e6a7124d1cfdfd7ec64c5d4b9e3266683aa32a3c2fc068e62626f2dafce5d7f050e826e5c145cd2d13d1b27", /* public_key */ + "c31150420dfb38ba8347e29add189ec3e38c14b0c541497fb90bf395", /* k */ + "f4083aebe08c9bdb8c08ff844ffc207f80fa4406fb73bdbc1c6020f71281bdae", /* SHA256 hash */ + "bf6c6daa89b21211ea2c9f45192d91603378d46b1a5057962dafaf12", /* R */ + "cb6b237950e0f0369323055cd1f643528c7a64616f75b11c4ddd63c7", /* S */ + }, + { + /* test vector 33 for P-224 */ + "c8fc474d3b1cba5981348de5aef0839e376f9f18e7588f1eed7c8c85", /* private_key */ + "66f49457ed15f67ed4042195856f052fe774077f61cebcb9efddc3653a6e3f3423eec7308a69eb1b0416d67cc3b84d24f251d7cbdb45c079", /* public_key */ + "5e5405ae9ab6164bb476c1bb021ec78480e0488736e4f8222920fbd9", /* k */ + "cb017b280093879c4b114b52ea670f14e97b661074abccc8539a23280fe136b4", /* SHA256 hash */ + "7b7beaf9f696ca1a8051527478c4c075ab45aa4768937886dbf38618", /* R */ + "93d4cf110a37c5a6f15c4e6024822118539e860dee2f60b8c3f462f6", /* S */ + }, + { + /* test vector 34 for P-224 */ + "04ef5d2a45341e2ace9af8a6ebd25f6cde45453f55b7a724eb6c21f6", /* private_key */ + "8d642868e4d0f55ee62a2052e6b806b566d2ac79dbde7939fe72577379505a57cd56904d2523b3e1281e9021167657d38aeb7d42fc8ec849", /* public_key */ + "ec60ea6f3d6b74d102e5574182566b7e79a69699a307fee70a2d0d22", /* k */ + "5f1d77f456d7ed30acad33795b50733d54226e57df4281a43d3821d0762f12fe", /* SHA256 hash */ + "2fd7fcbb7832c97ce325301dd338b279a9e28b8933284d49c6eabcf6", /* R */ + "550b2f1efc312805a6ed8f252e692d8ee19eaa5bcd5d0cda63a1a3f0", /* S */ + }, + { + /* test vector 35 for P-224 */ + "35d4bbe77d149812339e85c79483cb270bdac56bbf30b5ef3d1f4d39", /* private_key */ + "7924b1d7f5920cce98e25094e40f2eb3eb80d70b17e14b3d36c3671c26c5af35f71e61858582b7cc2b41790597c53ee514ffdf7a289d108c", /* public_key */ + "751869c1d0e79eb30aae8fbfb6d97bfa332123fd6b6c72c9cd3c1796", /* k */ + "cce0671ca07521fdaa81eced1dc37282bd9a6dbbaeb8cd00d13d4cf75cef044c", /* SHA256 hash */ + "26bb1b92b0f01e94eba5fa429271371db527ce857abba13bd1103f64", /* R */ + "836aba9c63e1252c2b2d72a21e6a41b82241ebe32647e7f814652bcb", /* S */ + }, + { + /* test vector 36 for P-224 */ + "2c291a393281b75264c9b8817af684fa86a1cdc900822f74039dc5d6", /* private_key */ + "18cb5826ad60e6696bf07655032a3749f6577ca36da3ccd6e66a137c194e14820fe02d784fd1363ff7a30399518309765bd3f4412d646da2", /* public_key */ + "e2a860416229dfd3f5a5cc92344ca015093a543943a0d8f73bf2b2fd", /* k */ + "4ee903b828f54f35adab0bfec06eb064abde530d8ed0384730aa23e8e9664801", /* SHA256 hash */ + "00e300c1ef4a8c4ca5da6413856f8981db49de29bdf03f32ffc3ceab", /* R */ + "f250f18a51ba5f63e1584097841099fa6ae4e98ee458c061d1d5aed7", /* S */ + }, + { + /* test vector 37 for P-224 */ + "831ea25dbeda33d272a1382c5def0e83929170ab06a629eed6ee244b", /* private_key */ + "076518e393940d42dfd09819409d66966d8c9189c83d554a9cc8a08244d0ceaf4c0f50e46bea4a52e30423ce3ada19edd363ac5694c65cb8", /* public_key */ + "6be6dd9f6a083915ccba54626caf12d246d3aece0a7eda7d8d85599c", /* k */ + "215e9817eccaa125e0c053fed373f4605de292d27a692bd4f744e63215fd8705", /* SHA256 hash */ + "ff1460946e06fb6f5d35e8d2625ca70ffb9b45308e3fabf6ad8351b1", /* R */ + "6029aa3990918e8cb8a388d53b0772e5cdfff49c3405fe0d3a95933a", /* S */ + }, + { + /* test vector 38 for P-224 */ + "70f74c7324ef137318b610ead8ddc5b964e0eed3750b20612fc2e67b", /* private_key */ + "279649e2a2918e683520cde3fc98b0ae58a7100e8de35e7c9cc797b6aa4de6be34be61f02880139787b9038f4554a8ef1c994b887c2974b5", /* public_key */ + "8e984864f86f7a2a73f3edda17dbccd13fac8fa4b872814abf223b1b", /* k */ + "6571a344765c0512d3911a7724509b649a6ce4106823be76726f117f109ec0fa", /* SHA256 hash */ + "3b18736fa11d04e27e2614cda03a63ec11a180f357b0b3192920d09c", /* R */ + "2f0f3dbd570727b14fbb29155538e62c930dd51c4035275c1365dc60", /* S */ + }, + { + /* test vector 39 for P-224 */ + "026be5789886d25039c11d7d58a11a6e1d52cb1d5657561f2165b8a8", /* private_key */ + "3fa617c50b177da1a2bdb98b780ad21ad1195c4bd24465f6187de3c9e3fd8d8876dfd03a4a4e31a1acad3a08d983826d286c250c4e5620c1", /* public_key */ + "0128b8e3f50731eb5fcc223517fc0cf6b96cd1d2807eb4524bc46f77", /* k */ + "95914b17ff0362e12305d71657bbc9d919ae4aa746bf4ebe95b2d2fe7ca3f022", /* SHA256 hash */ + "3a6b633f96f3d0b6d54f7fb29ac33709e4f0dd8fa0e51606ed9765ca", /* R */ + "63e8c119dfa51784decd864f6911f2210a80f8f02d472d88df10d119", /* S */ + }, + { + /* test vector 40 for P-224 */ + "e79c18d935c2839644762867aa793201f96a3cde080c5968412ce784", /* private_key */ + "b7ae1e992b1c7fde1141f40bd913358538ca0f07f62b729f13cea327811252d12120e04805fc171a439d382c43b68a21e1a0bdf5e4ec1da4", /* public_key */ + "7abedab1d36f4f0959a03d968b27dd5708223b66e0fc48594d827361", /* k */ + "2dd97b10b2ac90709062989f57873e30696bf8376957e68f7de95aa333a67685", /* SHA256 hash */ + "d35047d74e1e7305bb8c1a94e8ae47cb1591c3437a3e185e00afe710", /* R */ + "d9c425c9d5feb776ac8952e6c4eee0ecd68aef2f0e7bff2e49c9185e", /* S */ + }, + { + /* test vector 41 for P-224 */ + "0d087f9d1f8ae29c9cf791490efc4a5789a9d52038c4b1d22494ad8c", /* private_key */ + "cd95cf8fb1cd21690f40d647f2353672a1076cc6c46bddaad2d0fc56934262f74d9ee0f8a2754f64cb7415923d64bf00c94a39b52803f577", /* public_key */ + "557d0e3995dc6377b3911546dd7aeaeec62a6d8f2af6a274382fc37f", /* k */ + "7c74a2e71f7bb3101787517394a67d03f977c95519526b47854e417b95bf8d1b", /* SHA256 hash */ + "56df0ea6afdcc232ceb41729eec00cf906b69b6e28423a36d3c92cc5", /* R */ + "f4f70fd948c9a147f55317fdea7b8a84c33e721014552d5800d63edc", /* S */ + }, + { + /* test vector 42 for P-224 */ + "0830aebb6577d3a3be3ba54a4501c987b0e0bb593267b9bbadb66583", /* private_key */ + "b88652020e083ccc1c43dc83d1881884dd4c7e3b4e3460b344b1ea6422b69b517f86d7c26dc37c0f8feb4bb07fe876149fbcc3334fd2805b", /* public_key */ + "e4f4a3280574c704c2fde47ca81ec883d27f2c5a961a294db7cda9d2", /* k */ + "ccc04666744685c57d2256f21cee0f53857a0528a96d59bb13cdeb92fd786d4f", /* SHA256 hash */ + "b30b8a0079d9a134b5e1618c2ac63e3fbe0e95866b9dbc5f423f2707", /* R */ + "3dc36746610271ef66e0aa52cc2ccadc5c9b08dc769e4dc4f6538c11", /* S */ + }, + { + /* test vector 43 for P-224 */ + "2acc9b97e625263e8e4cd164302c7d1e078bfcdd706111a13ccda5b2", /* private_key */ + "ce1a06f82df874dded37cca03b56c0648e4e8917ecd40ee73ee61588ceb6177b8f1ac7c5c6e6e1f7737cc3026952ee392badd2cd7af32f9d", /* public_key */ + "e401fa80f96480d437ed4f61a783888062ec33d530b188fd48016a6d", /* k */ + "9e7d5f30677692b669e21cf5461fa7f2e887dfcbbeb2db88d666bd591a944e00", /* SHA256 hash */ + "28674f447c4742e4087bbccfb522fbad4e18b56031d2ce8f532b078a", /* R */ + "a5a7a13d15b423dd17771f73cea98d89dbffa846cc209b45c0e29b76", /* S */ + }, + { + /* test vector 44 for P-224 */ + "f4e873d4fb944fb52323406f933815092b7672221de4d1c45917f3fc", /* private_key */ + "0dc2cdddb990341adb1de73f02d87fc3822485a659a15145f4251d5fcf78b2a83c7352eda1af2c74e1804ea04b35f76c04e89d90281dc2bb", /* public_key */ + "5d1476c682a64162fd2fdc82696fc8cab1469a86f707ea2757416e40", /* k */ + "d8978f697bef71b062d4b3211e8ab5b993c09920af803614dbb9437f6e261b70", /* SHA256 hash */ + "82982b38ed465138df4018d7cfb835edcb591cb57446ca49d163782b", /* R */ + "8ef1d7b326cabee7f7ab95b7b98d3c27a069c0fd95a1599c0ccb422b", /* S */ + }, + { + /* test vector 45 for P-224 */ + "62c572ee0d6f81b27e591d788bfc2f42b5105d2663078dfb58069ebd", /* private_key */ + "bd6ba605639b98fa8113a16a3bb004ddfaec901c98a931206165f4a5a3190b10ef39e88abd60b2293b4707512b45c6c5ed5794cc11454427", /* public_key */ + "0f0bb1e428bcdebf4dc62a5278068efc0f8ce75f89e89b3630f102b2", /* k */ + "1a9fc0195bf0f53cebba8aa7ccc8567c680d75187392d6d8201854ec4a6e6abd349037d831809e9f3add2fc09d27e4a4", /* SHA384 hash */ + "aac0ea27e129f544abcc77f110e70bbdd5aa3e425dc39d5e8887025d", /* R */ + "10e5dd06aee6b8419a04aa33d9d5678b0039c3acc3c4b61fe106bfdc", /* S */ + }, + { + /* test vector 46 for P-224 */ + "e2f86bf73ba9336fa023343060f038e9ad41e5fe868e9f80574619a3", /* private_key */ + "f5d5346f17898ea6bbdfff19c216a8757a5dc37b95315f5481628381ae61fd172ac8b7a4f13870a932dece465834cbd4f50bbcfb802c824e", /* public_key */ + "35724ac043e3b44b73b5a7919cf675190306d26aa67c27c28c873534", /* k */ + "0f236d9a43edd55dacf5ff9f93ee805395e130ca2c8ad2eaea0fdd68e2ee2fadae9f41aa46f881485db208bd9cdc463b", /* SHA384 hash */ + "535147c265af138eec50c7fb570bcc8d2e6f675597b0fcc034e536bc", /* R */ + "743812c188a1dddf9fb34b90738f8b2e58760d6cd20ccceb1bb9c516", /* S */ + }, + { + /* test vector 47 for P-224 */ + "b0a203438e2586d7575bc417a4a798e47abc22aa3955b58fc2789f17", /* private_key */ + "dc5d217862a1e5b00c95affa9d8b925a72b9beaeb7a86dc397e788d85f05f8e976ae1eb1036eca6d683a82850795bf9127dee5f8b2859445", /* public_key */ + "408e9c8b1f33136d6ddb93ff3a498bc09d4eee99bf69cdd5af0aa5a2", /* k */ + "525b6241eb2a6dd00b55b172708aafd0775e959b7c601903f44ffcfc17ee979f34f204680f8a71044a6d7e3679a50576", /* SHA384 hash */ + "1b5a964c8b1fc634c6e2b82322499df1d7f0c12a4d2a77723c816ab8", /* R */ + "cf54599a36ca064fae0aa936de5266f87704409d22a15d28c01b7f2a", /* S */ + }, + { + /* test vector 48 for P-224 */ + "efcfa50fad6fb2065f9a55f28c0c42fa24c809ccb19b6fc6d8ffb085", /* private_key */ + "61521a0cfb72be77ba33cb3b8e022743cd9130ff49e97093b71aa178ce0819aedaf6fce639d0e593f8ab0147eeb6058f5f2b448231584ea9", /* public_key */ + "d1eea821f286eae6ebc1f61b08f9ad4323a3787e94af4c32cd31351b", /* k */ + "88c4b7ca396f17e82c92596c301e41d7f01810bfeb33173cc0d1fedf3fd5ace6892ba9a788de13417f0ef00ff87344fb", /* SHA384 hash */ + "b37caaa71103752ac559f9eb4943324409ebfa8b585f684dcaa5c411", /* R */ + "7c28e7619e2944ab4b7be022878c8052ebdf2cae5dff4f976c49686a", /* S */ + }, + { + /* test vector 49 for P-224 */ + "61a17816937987764cdc064dc7b5b4f5b16db1023acdfe25902957dd", /* private_key */ + "a7e975c0a8f87c683bb8e31bc160843a7b69c945f4850bd60e1c08c08930a454dcc2aa13bed7ea89368b2c9d689d816b2acf4e52585ee9c4", /* public_key */ + "44b1fdec2629f9075f89c134ac28ff19bfddaa9db02a5d7f853582b4", /* k */ + "3babfaba30f3300171e6adcf4f62a12287031ac40078c96b2c2c063849e9a42ef3be953dc11fb319c18bf22fe511bf37", /* SHA384 hash */ + "b0f5635d8bc9c53a1d54a3ec63de59ed66e6b2358d4ab79755414326", /* R */ + "67c68fe265c7e5aba4232deeafb88545a2aa266fb9f2c2bb3f3ae8d2", /* S */ + }, + { + /* test vector 50 for P-224 */ + "79d5367314ec664aa0f6ca36f95549502a05bf8400bf532d669fab8d", /* private_key */ + "3191f0237102dac159032ab2dde53cf56c9ec827b5caddfe9e83c02ab496b1bdcca4434ac0d0d91ea38ff3bc33f9f54095bfe17796d5a9e2", /* public_key */ + "da529c52f5cc1f435d873109cd991d6cd7e1631d9ff1dd9521dd5db6", /* k */ + "9f36da1a5653469a52f85e7e3b2a21ac3497cc00ff37e03235bbdf951695f182312ad5c8fb8a5fbd0295dc8c5acda068", /* SHA384 hash */ + "8e0ac63903f4921755430572c3f08bc272790639bdf1009fe2a9a714", /* R */ + "6278c841a2d0a270791fe54b36c49d426d67907aa4e4f59c8638ad97", /* S */ + }, + { + /* test vector 51 for P-224 */ + "1320eedad4745121793a7eaf732b0b4498f7cb456cac8cf45a1f66f0", /* private_key */ + "9fdd99906ab77fd29e9021bde947d05a7a9eb153612269bfb0899bc9681b65b9ac8e4c2899bb622dafb253b7bf5a6e38e5f6595f997c291a", /* public_key */ + "66ed8d8934633f4125f593cf1b1d3745c4db1f15dde60cf46ca1c7f2", /* k */ + "12532cbcfd4e80373bc235ac0bfa2a70b1044786d29f9384d555030f5df3cb5ab9f973df638b6835cb756792d1fe1a4e", /* SHA384 hash */ + "80199485a3a96447b39f7679cd47412a78675ba17dcbd10465dc5b48", /* R */ + "a251fd9f136a3cb0dd0bc80659ae032e4a761ba7045da0034553fb8c", /* S */ + }, + { + /* test vector 52 for P-224 */ + "e18821329447d3f65ba7279e96bd4624ffa1b32b90f6e8331b1e876d", /* private_key */ + "46c9ed837232c47022df2f1a1578fbe65ac9f2e81c98a74cc22ea31a6fc5e9568ae62b31412a0b0b367242e9fd7e518c83aa06a069e1d90d", /* public_key */ + "a4c1eb402a2fb3af26e0e14a3d2fc8ed3bc1a8b2475270356a79fdd3", /* k */ + "89030408e06cc06d3dbfb51f6725c710a2bc9db9e07ff1ec8a32a827d93d2dc951834cdb01a7afa1fe4cf4e9186ee424", /* SHA384 hash */ + "d478b68733d8ad44be46766e7b66af782fbdc7ff7ed0b191176da98a", /* R */ + "5eae9160ccf71fd1d359d89cecce72ef8afaeee2365f6ba828aa450a", /* S */ + }, + { + /* test vector 53 for P-224 */ + "f73e030d5a696b358986d3efaca121cf71f775f8835a21e6135145d7", /* private_key */ + "9ca2c6ea87ac8dd3a23a5b4010841a7c8af309038882ae44634bcf55b0a347dbd5ded3b8702ac5a457e8b32bd4de06fd315095fa1b7d5fe1", /* public_key */ + "e3cc786c1288ea567836c51d6d69dd0cab5c015987d936ccc3a4beb3", /* k */ + "eda24262a9e64be110a6c96763e8a4b5edb38af2a084695e294593583b462c56b0db50bc014eb19278e3f3d675eb5f22", /* SHA384 hash */ + "f1234da71761b7a0f49e661a419d2a739bdc4544bf87690e3d2f96db", /* R */ + "096d16bf8020c3d3c233894ad8eb81206010e62c6e692a215e088fd4", /* S */ + }, + { + /* test vector 54 for P-224 */ + "7a0789323f8741c157a1753ae165ecaf8e8b03a60561f8b80cee467c", /* private_key */ + "101271a9addd4bd1f19d00bf116c8524f52cefd598e85dc381597acb2f17d14f4d8ccb28b216553718152ba7c104646d8eca986dd9ddea39", /* public_key */ + "d169f04f05b60c625cda864d187938863964dab7bb3b9dfc04b05519", /* k */ + "983a5d16b009cc65bdf3c3badc2f21280e04f44244b70a583c2e9732534497373f51b226c3ab7bd69c6940e46bc41fa1", /* SHA384 hash */ + "e4a51be686a764b709da23ab48b1985e153c6ee238d945e743907afc", /* R */ + "118a8f1ffe3cd556ce6345bd1a398dd9cc3729b7fd6d8af9bfd82f40", /* S */ + }, + { + /* test vector 55 for P-224 */ + "78e795d0edb11fd9e28dc26b21e751aa89bea0d87932ef11c95c0e18", /* private_key */ + "9edd544107977134bf6360d43ccabb3c94d627c03963c0a04b439627ece4c61d319a0e41f3de7863e7c355bac94395aaa74cdb5f74a87a5b", /* public_key */ + "36f7c0f76808b826a0a974a1fd6e155e00a73f1d34674a8f88be405a", /* k */ + "ae7b5fde427af9c450368b11f66f49bf8c3b6e1f5abed6bb25683001924dfb005738637e1c1b7855566330d202ecc763", /* SHA384 hash */ + "3e319444438bc2cc92f323ea842cb402b3c3c2448c89869ef7998edb", /* R */ + "3420cc38f058f41c31e71f4b1ad488f801111c73541de69fcee60695", /* S */ + }, + { + /* test vector 56 for P-224 */ + "bee02d8bc5bffb3fd3b4c9d6f686409f02662d10150d1e58d689966a", /* private_key */ + "8848f964c847fe9dddc774618d4588c9cd56bbe588d7b1fb369c8bfaebbb699fbd0dc08859fe9132285fe20dff3b9d561c0640b6e0717607", /* public_key */ + "59f1450d857b40e5552a4b8cd4ab0df2f01716635d172c1106840f21", /* k */ + "63ef787f467ff0cd6e5012b09414c00ef56dba959c4b62bf7e76a4205078d436c45591752c8d55abe728a2d28b5b0643", /* SHA384 hash */ + "a206d8398a16a991bc217f77f23c6f648384f254f255a8a876404444", /* R */ + "eb1169cb5b1423dc0bfaffe565ae57f986e00de06405e3e7b605862e", /* S */ + }, + { + /* test vector 57 for P-224 */ + "dc0ddf6e501418bb8eafc5d7ccc143369e2aa441df8fc57d5f94a738", /* private_key */ + "063a5d632f4144376e14cfb03ad8ccf1489b613acd184d20dff66545e77727f057b043d8a0f7458196b72e92d11f85b0891c6aaa9d915f58", /* public_key */ + "ff0e5cae2671db7a1b90e22c63e7570bdd27352d45bac31e338debe0", /* k */ + "11f0d587e82e7490af4737c272877d9d37c1e7ae7f2fd3b00d8fa0d4f2bcb3a41d5185e65604b8c411a407eb6c558954", /* SHA384 hash */ + "5bc0b4998481ecbd3b6609184a84ca41d69b08c37138097f559259f8", /* R */ + "0df8828eb1ca85e46405b94e1a2972c34c5e620a54e2f640f04aecc5", /* S */ + }, + { + /* test vector 58 for P-224 */ + "229d89b2fcf8441ffc95ebb2ac2ef156e25825782044b2b8bd6a3e01", /* private_key */ + "de616848d8044a44789ef1ba3a6dd66fe9257ddc57f7534e59a701be26cbf74a6d25e5b34b96d30f327abd574cff7f7dbe6686573a7d6c5c", /* public_key */ + "3b18ca6ec8e8e255ac88f64302745ca0b73ff94b2b2d48be95b4aaee", /* k */ + "537d6d3d4be3e3beaf31014dae59ca7186c1c1a32c88068ff343180a138ceb6d7c38e0ae1e9b51003b71c1a2f3a3741b", /* SHA384 hash */ + "fa94fd8b827c06115c1eefd50afc02ce5926ee0e789667783c01c34b", /* R */ + "edf766a66973cfc33e4159966c07321a7f6549c3c60e8586ef41402b", /* S */ + }, + { + /* test vector 59 for P-224 */ + "97d747068147c0393a0bb5c159e2c9f1bd538f6204823294883abe28", /* private_key */ + "3858a576eef2ce24d01766997fb81b3f3f78b6104cd188610be221d795ffc677ac7bfe3e0bb4cffb17355a964c8356a807151b3cba5d1f4e", /* public_key */ + "c1a2ec1ef16cfd5107c892790daefbed061be78bd8576696b60f64d5", /* k */ + "7e16034a71ebf52a7a6cd00fe469c6edc121b2882462176298c9443aca2a0ad6ebe2eb9e145097409873170f40d503dd", /* SHA384 hash */ + "18c908541843fcdac99b9ff6bb397f3f8094d16b42670216e4eaa2d7", /* R */ + "c107a8a508ff57c5d4f78f86cc37e129c864d1c44ed5e73909613b74", /* S */ + }, + { + /* test vector 60 for P-224 */ + "ba5374541c13597bded6880849184a593d69d3d4f0b1cb4d0919cbd6", /* private_key */ + "ac635fe00e8b7a3c8ef5655bdfb7f83e8532e59c0cc0b6534d810ffa1d067aebeba66e79b28ecfe59ac6fdf5e1970dc3a84499c9d90cd8e2", /* public_key */ + "187ed1f45c466cbafcd4b9577fb222408c011225dcccfd20f08b8d89", /* k */ + "3edbb59a32b2464291d0a96023a798c1fc6cb5ff4fcecfadcfac2be00c26fa27181aef76c96d8269aeaf2275eeacbb777abbd9571de9279edc5695a3345cad9b", /* SHA512 hash */ + "f83d54945997584c923c09662c34cf9ad1e987da8bfd9be600e7a098", /* R */ + "4ff2dba9dba992c98a095b1144a539310e1a570e20c88b7d0aa1955c", /* S */ + }, + { + /* test vector 61 for P-224 */ + "1e27187134d0a63542adf4665fba22f00cfc7b0a1e02effe913ceedc", /* private_key */ + "ecaea8ceea55c3bd418fd34a4ff2499e25e66a104eed846bc00c31d23933a356ab1f2dabc303ff0a5d076131e77032e6f502336883bf78a7", /* public_key */ + "34cb597deae9a3b1cada937abcd247161b19b2b336b20e2e42ae01f1", /* k */ + "825ab979af5c263d9f074a2d771d1d1cdfa435e7938245a3c9ee30cb77ee8c1475051d2f09d7d11d920a6c754bfd253903131c491994679cafdb8cfbf32b763d", /* SHA512 hash */ + "58177ba46fb291490b39368774accf72736412c1fb5ee0f27b9b1e02", /* R */ + "58337d78b95a080bfcabb5809bee012501b4da84b8ef310a4628f11c", /* S */ + }, + { + /* test vector 62 for P-224 */ + "0905b40e6c29bfcbf55e04266f68f10ca8d3905001d68bb61a27749b", /* private_key */ + "d656b73b131aa4c6336a57849ce0d3682b6ab2113d013711e8c297626328335ffc2029afbfe2a15cc5636978778c3f9dab84840b05f2e705", /* public_key */ + "dc82840d147f893497a82f023d7d2cbf0a3a5b2ac6cc1b9b23e504be", /* k */ + "d0db7c20c201cd8c63ca777293543750d7f6a9e375b056e74cfe9fb2c95b2cc9807d8a9607a5b0fad6eeda86e4f73ace139e77a5356181b8cbef3f88173253b6", /* SHA512 hash */ + "583af080e0ec7c1ba5a491a84889b7b7b11ccfe18927c7c219b11757", /* R */ + "b23700035349df25d839f0973bef78a7515287de6c83707907074fa6", /* S */ + }, + { + /* test vector 63 for P-224 */ + "afbaede5d75e4f241dd5b53220f3f5b9c1aa1d5d298e2d43236452dc", /* private_key */ + "fe83e59fc8ea8b939355d3258fe53a64d45f63031a0716b7cc416173f151d23060f1c856eb7f1f58be72a7228c3af89e43b56e9695b558c7", /* public_key */ + "0fbbe7b40136c81a8fb894498d5502157a1cf5a89d0643de92cd38f6", /* k */ + "37d9091eddc6fc34b45cf97140e956a42ab659f6bd442e81b57c4ecfbdab45f7380a7efdbac5400ceb1bf683194232cd086c1b4e09fc9313f1bc38af731f1a98", /* SHA512 hash */ + "24f3f457c7b72b7e759d5a8afbf330e31c5d8d2e36f92c0e79c5d87d", /* R */ + "36fd1193def34f12a960740fd79fb38bf2b480726ccad540eb42cdf8", /* S */ + }, + { + /* test vector 64 for P-224 */ + "950b07b0c2b7539a21b5135bfede214733f2e009647d38d8b21d760c", /* private_key */ + "f43d13bbfcee3b724063b3910fea49fd591b81e86fdb813b1a492d0c6b4c8d6fa5dc661889e3cf5ec64997a78222837885f85d2fe9b684fb", /* public_key */ + "83e110d0d1e700d2f36543028737d2a2f1474aa3b4b28998a39e4793", /* k */ + "8ddf64c9c67289a76c2f5b44a30b8365f4adf487b4edadada5749cad9e5765c57a348a750817a53e5c2ff551e003747ca1e3438b2aa1952c6876fda8fd8f4de2", /* SHA512 hash */ + "2685265bc878e85d10ab13293dec190881a57c4a467f8fc2170432ea", /* R */ + "80a347bb49036522369339bd6485a967cdda818915d8eb947302fcf9", /* S */ + }, + { + /* test vector 65 for P-224 */ + "015bd9f5dfef393b431c3c7fced24385d861ccb563542574a5d2a9bc", /* private_key */ + "e868690641e2cda13b289a6c5d2fb175940396044d9cf27b4f2240af4c78c9abdf2b7fc67ed4497001d7bcf1daca1739dc14a661f91d7c40", /* public_key */ + "e2374350f47c08f3c1359d4edf87e61d1ba4e7dd1540d8d9062efa79", /* k */ + "7c22f34d5897ccdf7d807f68a7f16e3093a4413625e7853401a4e0384d26893f1997c84557515f2ea66afe7629f62415e6b98e18e97dcb4fb2dec97cf2dd68d9", /* SHA512 hash */ + "e12dc088d2bc032bb214c77d0e0fb749fc8e61ebe1ed72996f1084b6", /* R */ + "0ab58aa31e0bba5fbc76855e6549f1036fba0a589aeab978ab01b8fb", /* S */ + }, + { + /* test vector 66 for P-224 */ + "0a3c259df933247445acffb6d8265b601d597fb9997dc2a1eb4deef4", /* private_key */ + "e67f4385a9da54253cc371ee9bc6739ae6385a4b87669c7baf0c460d2bb00b6ddd7b67d9ac5653ec04ca8529fbf16f815c04da3c2e58e82d", /* public_key */ + "8bf5859665b6a23e6b05a311580f60187ba1c4ae89e44877fb48af66", /* k */ + "016d26cbcf55236c053ece58651183e4c81edd8f07749a5ba28d8d22a5d6a9c6b33810c9618bd9cf472006cfeb62842927d3fb677d82e09bb5134e470d481812", /* SHA512 hash */ + "653675fb993c3fa9e57b32e33029ec230b966e8077c72c1ec90ddefc", /* R */ + "792723bf87e315147cd4303de7f1dfe95cd7658ebb95c38c1a196140", /* S */ + }, + { + /* test vector 67 for P-224 */ + "a1c8ef463f9e7e3dd63e677412f87cf9ea4ac9a6a2dae629da5b9916", /* private_key */ + "400e5cd4b315ceb309545cd3277acb70bdae2073fda6ad896ea14b27fbe1d2466cd2e116f38248bd5cabaa6cbe6c4a2694d998abd7b0c991", /* public_key */ + "82f55a25d3ed6e47c22a6eed0fa52ed0818b87d6ea7950281dfefc09", /* k */ + "47e43ab8ebe14f0394c46b55856104211b12d8f2b075f6efa1510fed823dc121cfd9198e060839ebbdf2eb994194875c342be861bf0975665aae881f28cefbc0", /* SHA512 hash */ + "16305a46a3f6f9e216ef8f6a6f5f0760d064a885657c864e1c1ea035", /* R */ + "58fd97050bfbca6f87e64e1458c4ad80bae26e280356da344ad3b25d", /* S */ + }, + { + /* test vector 68 for P-224 */ + "fa511dbf6fef7e5e9c73e4555eb75d435f7884322d9faf5d78cacc0b", /* private_key */ + "e8dccd706c31f895f2f261ab979cbab51b8ae28196bcc12a42046380ec246be8e71ea3859cb717a59990fe22e4b76858ff49becd70739a01", /* public_key */ + "a37d665fe4314aa4cd03eb8e6a1f366b43e11fdb419c96b48f787b62", /* k */ + "d86bfb4fc2ae431617d8800e44b37a5b549775c78e90eaec58b42aebafed731b3123a82fab13254783e24c28db715c53f6538a2961cc888638eab768ee6b66c0", /* SHA512 hash */ + "05e4909bcc172ab4140be291aad4660e375032bce2d762b6269ba764", /* R */ + "e347a1c9d3670690e1d8d1d4cd9579848f442199c10526488da5cebf", /* S */ + }, + { + /* test vector 69 for P-224 */ + "a58bd53646400a646f0e4208320dc679a9664d1c6bfb27fdc8eac7ea", /* private_key */ + "e22e0dc4ecd96eb0071b72ba4b4988bf784f3fe73cb81bfb93d9ac4fb3e213e518bee1367a4fb3703b9008bac9d95a1fc4aa61225fff9f3c", /* public_key */ + "42c5b6f87d3bb1ed74f5ee8398d8f8c61e9e50ffa7a1da12d39893f9", /* k */ + "e537383a08a421bf1f29e07554387bd32d685c2a5830b157df1e83c0f3c78cd11e5a5cc62830a45d7eb71920a2d13ca9cc1eec020c9db49a07d1c91433b31e2c", /* SHA512 hash */ + "5c0e5c6f057de1e99ef5d237a60d7a07fa9a42b120a82f573d9fb7b2", /* R */ + "2fffc0bf550bd2f650fed085a84501cacfa6a1bb984df1f9237eaa59", /* S */ + }, + { + /* test vector 70 for P-224 */ + "64bd4452b572cc95510ac2e572f41136299ff17f6e8448f4ffb571d0", /* private_key */ + "92521fa25c2e034d127e0921efdb167f0b2ff8b20504487ed87fa264e72c770e37375ad7dc2c4e63e5701826f6606f6ffb9461ee61b4e872", /* public_key */ + "eaf76ee4d7e00d13d8a6d03dffd07ad9a8bb6dc8176c9f93059b1b7f", /* k */ + "e7a2242c4409f1eefabffc48014a00424ae3b38c39651227d033b464c2ed4a365841499048b8e491506657e40548a104b4d9d08dc86b6d6dd43af27730788639", /* SHA512 hash */ + "cf5058e2a6cf5e61a138b013eb292f38a1b9f07239ae5941dbce8919", /* R */ + "d14198621650d985d270bc997da6e78588fd0ef843b874c66a3de3c3", /* S */ + }, + { + /* test vector 71 for P-224 */ + "7f3edb710df9d982f486233d0c176aa88f5a0ee81efa9b8145020294", /* private_key */ + "e7611e013e7b43ff5b8b57ad83333bffcc9e469ad23070b5791dc5947784da0a11dbe16208c6e0b6d5029e71fbec4dffc9fa046d3eeb71c9", /* public_key */ + "94db7ef9a232593091eb9a74f289529c7e0d7fef21f80b3c8556b75e", /* k */ + "8b751b00d1bb15cc16f6ea2e67b3235c9a50e8cb602eb20dd846c92375ef8446bf1ff1c77fdbc93cfb7d4e845774a27983aaf3fad289ba8495183d03e8b3bbe0", /* SHA512 hash */ + "a971f45bab10b1d16d7234ca8e4ec987da20d9e867f28aa063296e23", /* R */ + "e38c538d65a7e1a28fd3ec53f015a7e5beb60e9d309f1e3ba4b2c3d2", /* S */ + }, + { + /* test vector 72 for P-224 */ + "b569f8296ff1d9cc01fffd9919016e5730c1858bdb7b99527153751a", /* private_key */ + "242f34959516a4706172f7dede23110efa314bff22eb320ab88feeff45e3227710900a8acfc9bcce728119d042f64ca40876c2b380ee46e0", /* public_key */ + "ae61523866a8f43e6cdd42ba27a34ed06527e8a5842901a64c393f76", /* k */ + "89670327dfc4c3a20cd71c6943d3404c34c4b2267b892ae69dee792107ea19e90cc792c3ab886e6c1247e37c3eae8d81cff87b24e06f476e32dae64303349a23", /* SHA512 hash */ + "c2732a4e0815f9f785500e80147e9486994446beccf8a6a352b97585", /* R */ + "6ecaece6487d7920e398f7f951ab7c7aba5832dabf03704106ad1244", /* S */ + }, + { + /* test vector 73 for P-224 */ + "41a4dd8eee39232b728516e2f21e66011e7426a6b25986c3ffa237e4", /* private_key */ + "c32988171caab178bf50dc7310bc7f604df5a9d19a8e602519c72d8af8985d112ad9de05969e5364d943c1cc5cd198359f4c62b19da0e117", /* public_key */ + "827d4999da81fa920c8492ccc1e2d5cdafed9754cf7382a859952071", /* k */ + "e94800f0b0272d7e59c7e2614318df5652261e89c47fbd0c01b016e569825a4a1b0631e0749dca72b47a4edaac6e6463c7b1c8c3038b20d06d160fc0e1c217e3", /* SHA512 hash */ + "89c61da7422ccd676baec07e2185c12e947a2374eede87847304be6c", /* R */ + "2685379624717ea28422e8d001c090405a130b4ef9f1ac726c3ca502", /* S */ + }, + { + /* test vector 74 for P-224 */ + "67fa50569257c8cc89ac0325db4902003a62f30b917f53e4035a7e04", /* private_key */ + "6773a0436a9c42635730413b19aa4166f08c69c0e5002953da42253b555138290b093bf2fe79acda9131d920cd1e7ac43fb8775776cd713c", /* public_key */ + "557cb45fd3a30b3bdbf08c56eabbd4478736024aaa52bf8448096453", /* k */ + "0bc258cd68474b7df93d2b3209048f571fb0fad76e4c1a5d6e0fc83c2aaff5e50fc978c36a47fb2c0163ad47333b78ed08e07fc21ba2230356a54885a8df2fe5", /* SHA512 hash */ + "8e92cf7a674aa5f7542dd95c695589a05747431692edd04804299b8f", /* R */ + "af4908b41f8180b71a6ff10fd51f3d143147af6ddddf7534d3284ed9", /* S */ + }, +}; diff --git a/test/test_vectors/nist_fips_186_secp256r1_tvs.h b/test/test_vectors/nist_fips_186_secp256r1_tvs.h new file mode 100644 index 0000000..c3a63ce --- /dev/null +++ b/test/test_vectors/nist_fips_186_secp256r1_tvs.h @@ -0,0 +1,678 @@ +#include "test_vector.h" +Test nist_fips_186_secp256r1_tvs[] = { + { + /* test vector 0 for P-256 */ + "002a10b1b5b9fa0b78d38ed29cd9cec18520e0fe93023e3550bb7163ab4905c6", /* private_key */ + "e9cd2e8f15bd90cb0707e05ed3b601aace7ef57142a64661ea1dd7199ebba9acc96b0115bed1c134b68f89584b040a194bfad94a404fdb37adad107d5a0b4c5e", /* public_key */ + "00c2815763d7fcb2480b39d154abc03f616f0404e11272d624e825432687092a", /* k */ + "b46806837d5e311b7cb075ef63e6f5489a4bf099", /* SHA1 hash */ + "15bf46937c7a1e2fa7adc65c89fe03ae602dd7dfa6722cdafa92d624b32b156e", /* R */ + "59c591792ee94f0b202e7a590e70d01dd8a9774884e2b5ba9945437cfed01686", /* S */ + }, + { + /* test vector 1 for P-256 */ + "00fc37666c6b87d7a4701b149003f8767fa3206d3e5236ca317122b3cec5900a", /* private_key */ + "6be8613c7022a78a24d38c44befd48446648d4bd1345e1470c7b5f8edb56823b58d84900fb28f15fde66bc264508feee5e54c0fa9712ce0059902efb46c349a3", /* public_key */ + "00cb00d310146dc133ca5dddca6f96a20519de714621579381bccaac247929b5", /* k */ + "a50a98ea609e64c0c1ed198113ffc4e038f34092", /* SHA1 hash */ + "43f40b6413531e99ee4ebb2fb4c58b89eb7796f84caef33c2b193577d16eab84", /* R */ + "642c95930bc2a155ee2ff8a94202cfbb8349d3f6841a7bb789587a8a1cfedbea", /* S */ + }, + { + /* test vector 2 for P-256 */ + "000dd9c37b06a662bbb327e7e7537a473300de497b3dcd890f3a25d90071a608", /* private_key */ + "0763b24636d112294ad6d85fd7640b4defdef5df245e53c42750a680838e1150b87e87a4b35355c531709156961e64d8c17f63a438aad652fcc98604a33be2a7", /* public_key */ + "0045af0ce21481f3daedc4d34b611c75cb1f8a0715f30bf2fb45b017258584d5", /* k */ + "dbeaadeb4a5f28982bac4bbd9db36c6dd0f49598", /* SHA1 hash */ + "6f0a3866109007c528e4f75bc4be8f4459066257d354e750f63d073f2b7b8d36", /* R */ + "ae800de3eba87a1088900570ca0c2680d4bf8f6a7f706501626503db4102cd0a", /* S */ + }, + { + /* test vector 3 for P-256 */ + "0043fb051277a6cde808a34ea75d38a8173f80ece46740828b0758d829d8ca3c", /* private_key */ + "fab5c35a7a6e214f7a499866aa50ef16b8d92e29e66a0b6319721522db101eae8f3f89ad8d369e4873e566f21b8adf42304cb81019c401c1b1de4029e0245d75", /* public_key */ + "0036797bf01ddb25973cd9b030b50632d621aac0c653536e751c31c4367de559", /* k */ + "2e32a0b7a364d472f6d0529c6a337b1fe8f555eb", /* SHA1 hash */ + "17cfd4d7b43c06a2a439bc6d04c2cf4ff8ba8324c4a1c8a329a6189f5da5c23b", /* R */ + "9302909d1317bbecd95d10eead9ab69433012eddf917c12f6f91adf9cc4a7f09", /* S */ + }, + { + /* test vector 4 for P-256 */ + "00d741ac1103eea6de3031270fde37cb680c1728f05fc08557bb35ee61ea0bf7", /* private_key */ + "08ef74016b7d4dc64c47987b11967437bfc6f7fa2d570063c6b72f1c8d5125ed1fc1ccb317c3923825ac8526358fe4b00d4ca1526d86d7309a004acf0cfae637", /* public_key */ + "005b5852327259b12ba08f9a0e1c82d87f6cdc833dd69fedf05bd9283b8ebc61", /* k */ + "a71a71ecaa1db2d7c2a162b3aff79f5fb66f1dff", /* SHA1 hash */ + "9908aae43deed6b5651d9a4d0041ecc976e819ae64e3e938e0af8b3d41a76b3e", /* R */ + "32b17d68019e94a362d4178aa954f5cfefe0fd659c341c88f4f068ebf48b9773", /* S */ + }, + { + /* test vector 5 for P-256 */ + "00c2fe3b0d4f3d6909a399a43247a21292ff633f8f0f053e39459af6b8437e6b", /* private_key */ + "1baf23f86d78aa82da248d2f9acf65dfa2e7848a8bdebb93199168e6f0d4f5f9ca61985bfcd0ac55f95b73f07774d8714b6c3b80ddd6123b3dac8a45c34e435b", /* public_key */ + "00c8c9e7cf43fe62a67a3c998c36931a3a5332f3a47972c26a7813f405ffe851", /* k */ + "4365307f9c60aa620450116909776c8b8cdd16c0", /* SHA1 hash */ + "ddf8fc4d06ef4b7b69e26ac9c00ac7ed9ae55012e9f2a97f4eb99cabae393660", /* R */ + "1f41ca553dbb07d8e7d68e3650c5777e42b3473e31908688c0d7324afa637ed0", /* S */ + }, + { + /* test vector 6 for P-256 */ + "0037d4ac2a27520b1303990391805aa3c190656e30cc8c5b54b489ac4d0b295e", /* private_key */ + "834f19c9364b77ec0acd04997f1b8da7e35c7f9d90d305e4bb1505d0c072c2d97343fc4f25507e000a12bf5cc5ca99e310383d0824807a74fb31d3bc89b94d69", /* public_key */ + "001195d3f0a9f06fd529e351ea3defebd8a68fa6228fcba6e2c23167855d931b", /* k */ + "442fea471c1127556e4b62628a5dce3a20902636", /* SHA1 hash */ + "2a7bbeba9a1925e64c6e829d88c7a893c2960273ac40d82ea9b66c981a24b346", /* R */ + "5077207032c8a7bfd4ae876f22bb54b3ec4d7f394cf0c152f636a78fda8eb35a", /* S */ + }, + { + /* test vector 7 for P-256 */ + "00b3ea9154c84749f4d5ee1160fdd1ca699187f3b339d4bd8cac3266e0714d0b", /* private_key */ + "d25e48c881cd1a8bf8017507a6511e1c49409802f14d226b56507a280f8240b1e0ad278311c6e08b65e7b1bb86627a43fc45d04a89c42804b55a3788056556e2", /* public_key */ + "0023ded046abaa7858849550559af1ab74205904ba560a050abfa9358958622e", /* k */ + "7b2fd81cb4f9b24a4ac8c9a58666d0e1b09dc557", /* SHA1 hash */ + "fe7e110c27f69d4d8c319113676c83d7b9b4d8dedd5db6a75853a8b399aa2789", /* R */ + "c5d7710ef88a11200d84c702b28d174800bbf5a9e08ebbd639fd4fb8aa6dd4db", /* S */ + }, + { + /* test vector 8 for P-256 */ + "00480ab6fa574aeaa0411380cbfdc387792432c3e0b4eaeaf1617096f4f11b89", /* private_key */ + "afb9820fbab1f31e84b7bed0ef93053eec01e7099100bb290df12a59028d0a37f3962209d8683a907b8c201389b4cd2ab4d0782166a88dc4204a479e7b34d101", /* public_key */ + "0006a94c845c7ef871b0c440bbcb997f688b3fee833354b6981702bc3159479c", /* k */ + "803102eaaf336b1a2934914f8350833667e93c16", /* SHA1 hash */ + "a417adcf86b1de7c40d340977944805514e7637cba5ee83ebbdb2443562318a9", /* R */ + "48cc6eff803308b02c9ddd739924138fd572a8e9c23764a1831ee3d819bf087a", /* S */ + }, + { + /* test vector 9 for P-256 */ + "00e11c4eb57bdd6c266b5795e2e95d3f34f802f8ce8728a6d981b8787ecc102c", /* private_key */ + "997a535b892adf06afe8fd17d91b52c9149e1d83c3c73179008727efcdba5521ef142fa48a4b75771a9f156d229c9d61b223a573fadb3138b3d0b4d411415a94", /* public_key */ + "009d3dc147bc10b23b1156aa120e1933f31fa98a4233587941c355ca0b99f0c3", /* k */ + "9dd377222efd2c6e4cf5a994747f545ed2bcc70a", /* SHA1 hash */ + "d4ed66d8a5bc640e01fdf95a7ff2d0fe13692eb121bf6883fdc2be938d991060", /* R */ + "f43168414538b8817a3e483502437fd1681a84f20539c055668eaa5a93fa4db0", /* S */ + }, + { + /* test vector 10 for P-256 */ + "005eeb60901d07f49f433744715306cea06cf75507b74fb823223dc3ad33d20e", /* private_key */ + "00fe1ad18e9656d9d5fdc1ccce2f268debeb64ebb0b39fed657d2051727b0a57ef4d02fda898266c96d7cf2031d1e0d56e158ee0a07fecb4c8a14a021d984584", /* public_key */ + "007188abf3ed30221ff28c8adf1c2af5b40bb4021ea5d94672ee7308c5154807", /* k */ + "62f3e1765cc481e53c0ecf643c50cc8bda6e9e72", /* SHA1 hash */ + "d5604aecac4f8b69d5fe0ee8ee9d0d5918d378cc9c38862a85cab10182836f62", /* R */ + "c7104858cd7bcc418b4f2c3673945d47e9567fa05a9028e00d9aed06ea854068", /* S */ + }, + { + /* test vector 11 for P-256 */ + "009d5fd22302b0b2d0d8e90c623ba5361caa2ca05323972c62829ae160b4fbfe", /* private_key */ + "adcf9c09044148d3e24ac412eb96853019cc39df61d3a6dc25a4a174d1e655030c53f552192b2e7093ef358d112758495e67b87a4e26904fbf3bbb899bde7c26", /* public_key */ + "001b1768e9de3db0bb64886c4e3becf3af3c680bc49e28263bdeddd10ede71d7", /* k */ + "5e243f001717af0409e621035167e5fdabe68b03", /* SHA1 hash */ + "3e6dddb20cea388e6947b8b8af2860f5bc385db819df337e2f7c0564fc69ddb6", /* R */ + "13b2f3fe0f6e3f33015ec27ca9bbaa4e0ef93712192d379ddbbf0913a8bd0459", /* S */ + }, + { + /* test vector 12 for P-256 */ + "00412bc94f1a48ffee13c3e96cdfc94f3fe6ef9d62f2263a1182edcc62fe9c84", /* private_key */ + "5ca2c1761d400a62617e79fe5fb28ce66dca62d0ac2637935ed1caf4947f70ed5d79c1b778d6d31c8491c38347f2678fc45c8675c74a5a42895b1ed5385fc7f9", /* public_key */ + "00a0d4137f3e02ee6b17f1ce5204bf138802ec7136bc3a048579a28efec5635f", /* k */ + "758ba7ab92d10523012ff3a20cdc099684b83ca5", /* SHA1 hash */ + "b26219af8cbdb95c24ba669f0c54637b27ec05c7121a3c21b90efdc055f23fd2", /* R */ + "7f9a56fd23f6e93034107dbcb3d5f25dcf325dbf59bb9fc86b7bb62b545ff259", /* S */ + }, + { + /* test vector 13 for P-256 */ + "008127b4aa2aec3b3027ab7f8b5df1cb4154dc5c6a0330a232ec07e594d306cc", /* private_key */ + "79899b96a440c912e46e31c64dcdb8c18d3d8a29b775e4c0ffece91fafb7c48d4f14689ded44becc4d7401bf39cc368fa183feba2e416ce1617d59fe4c2ba77c", /* public_key */ + "00d30706db4e88261037558bf275fb93c7d8778fe20b832e4e3b9b162b1ed12b", /* k */ + "e18b1ba2f854a3c469321f74d93a1bfd1060bcb6", /* SHA1 hash */ + "54e82ea0aff83dfbeb8cea1fdd7d6950d6dd3446c1ee524553c60d5481cc521e", /* R */ + "f7514314df4c0eb7fe0d95df0fc6fe5e38b8590613555a8db2869c6f8741dc25", /* S */ + }, + { + /* test vector 14 for P-256 */ + "00d007e1b9afcc312eec9cecffa0280752bbd1953182edef12f3fc366e8f4356", /* private_key */ + "d6606271131e7e7e617a81aa11f09e7ed56311828823367a869b454040b3f905cf4897766131aa8b7f80453a15bf90f7517878579d5a4f973aea5bb11542e07f", /* public_key */ + "00c03c3b8b1e40cb328a61d51783356935625884399e26a5828f387c2bde6ebc", /* k */ + "0f7b55549fab573c0361b832ad0be8cdeef91b56", /* SHA1 hash */ + "b5b417619bf9fa89d50b3e22782a2de80a86db67e728114e6e0e91cab1a41612", /* R */ + "e43e8111258bea6f5c96bd6d66715748fbee756da418de90f64066c6b3e072f1", /* S */ + }, + { + /* test vector 15 for P-256 */ + "708309a7449e156b0db70e5b52e606c7e094ed676ce8953bf6c14757c826f590", /* private_key */ + "29578c7ab6ce0d11493c95d5ea05d299d536801ca9cbd50e9924e43b733b83ab08c8049879c6278b2273348474158515accaa38344106ef96803c5a05adc4800", /* public_key */ + "58f741771620bdc428e91a32d86d230873e9140336fcfb1e122892ee1d501bdc", /* k */ + "5e53611194b517b0ef4f704684850dfa387f99997d586d43c9e41530", /* SHA224 hash */ + "4a19274429e40522234b8785dc25fc524f179dcc95ff09b3c9770fc71f54ca0d", /* R */ + "58982b79a65b7320f5b92d13bdaecdd1259e760f0f718ba933fd098f6f75d4b7", /* S */ + }, + { + /* test vector 16 for P-256 */ + "90c5386100b137a75b0bb495002b28697a451add2f1f22cb65f735e8aaeace98", /* private_key */ + "4a92396ff7930b1da9a873a479a28a9896af6cc3d39345b949b726dc3cd978b5475abb18eaed948879b9c1453e3ef2755dd90f77519ec7b6a30297aad08e4931", /* public_key */ + "36f853b5c54b1ec61588c9c6137eb56e7a708f09c57513093e4ecf6d739900e5", /* k */ + "50be7b4f0e1fa36f06eb430ad4afe8f0cea2b97e060230f91ed1922b", /* SHA224 hash */ + "38b29558511061cfabdc8e5bb65ac2976d1aa2ba9a5deab8074097b2172bb9ad", /* R */ + "0de2cde610502b6e03c0b23602eafbcd3faf886c81d111d156b7aa550f5bcd51", /* S */ + }, + { + /* test vector 17 for P-256 */ + "a3a43cece9c1abeff81099fb344d01f7d8df66447b95a667ee368f924bccf870", /* private_key */ + "5775174deb0248112e069cb86f1546ac7a78bc2127d0cb953bad46384dd6be5ba27020952971cc0b0c3abd06e9ca3e141a4943f560564eba31e5288928bc7ce7", /* public_key */ + "a0d9a7a245bd9b9aa86cecb89341c9de2e4f9b5d095a8150826c7ba7fb3e7df7", /* k */ + "f51177ab6c34bf80ea72d687a670e4102987d1378bd9a4d973af4dad", /* SHA224 hash */ + "b02a440add66a9ff9c3c0e9acf1be678f6bd48a10cbdec2ad6d186ffe05f3f2a", /* R */ + "a98bea42aec56a1fcecec00a1cc69b01fcbcf5de7ac1b2f2dcc09b6db064f92b", /* S */ + }, + { + /* test vector 18 for P-256 */ + "7bbc8ff13f6f921f21e949b224c16b7176c5984d312b671cf6c2e4841135fc7f", /* private_key */ + "f888e913ec6f3cd8b31eb89e4f8aaa8887d30ae5348ed7118696949d5b8cc7c108895d09620500d244e5035e262dea3f2867cd8967b226324d5c05220d8b410c", /* public_key */ + "21c942f3b487accbf7fadc1c4b7a6c7567ce876c195022459fa1ebf6d04ffbaa", /* k */ + "03bf686dab49196f887f3a8083f1a39e26085127a9d9e6a78f22f652", /* SHA224 hash */ + "2e6cc883b8acc904ee9691ef4a9f1f5a9e5fbfde847cda3be833f949fb9c7182", /* R */ + "2ac48f7a930912131a8b4e3ab495307817c465d638c2a9ea5ae9e2808806e20a", /* S */ + }, + { + /* test vector 19 for P-256 */ + "daf5ec7a4eebc20d9485796c355b4a65ad254fe19b998d0507e91ea24135f45d", /* private_key */ + "137c465085c1b1b8cccbe9fccbe9d0295a331aaf332f3ed2e285d16e574b943bd3e8d5a24cd218c19760b0e85b35a8569945aa857cbf0fd6a3ce127581b217b6", /* public_key */ + "343251dffa56e6a612fec7b078f9c3819eab402a72686b894a47a08fd97e6c23", /* k */ + "40a7ece19f7f6a6473b209a7ac9441d59b00fc94ae0ded3423427c12", /* SHA224 hash */ + "775e25a296bd259510ae9375f548997bec8a744900022945281dc8c4d94f2b5b", /* R */ + "d87592ceab773ae103daebbb56a04144aaccb1e14efc1024dc36c0e382df1f70", /* S */ + }, + { + /* test vector 20 for P-256 */ + "8729a8396f262dabd991aa404cc1753581cea405f0d19222a0b3f210de8ee3c5", /* private_key */ + "82b1f1a7af9b48ca8452613d7032beb0e4f28fe710306aeccc959e4d03662a355e39f33574097b8d32b471a591972496f5d44db344c037d13f06fafc75f016fd", /* public_key */ + "6de9e21f0b2cacc1762b3558fd44d3cf156b85dbef430dd28d59713bfb9cfa0b", /* k */ + "f6c083325d6316e337c102b16bb96faa478a43b2dc0d56d51a4affed", /* SHA224 hash */ + "a754b42720e71925d51fcef76151405a3696cc8f9fc9ca7b46d0b16edd7fb699", /* R */ + "603924780439cc16ac4cf97c2c3065bc95353aa9179d0ab5f0322ca82f851cf2", /* S */ + }, + { + /* test vector 21 for P-256 */ + "f1b62413935fc589ad2280f6892599ad994dae8ca3655ed4f7318cc89b61aa96", /* private_key */ + "e0bbfe4016eea93e6f509518cbffc25d492de6ebbf80465a461caa5bdc0181593231ee7a119d84fa56e3034d50fea85929aec2eb437abc7646821e1bf805fb50", /* public_key */ + "7a33eeb9f469afd55de2fb786847a1d3e7797929305c0f90d953b6f143bb8fc6", /* k */ + "6890736262386d60424be27b3f95996ab696e1ddffdc4a03c256a7c0", /* SHA224 hash */ + "96d1c9399948254ea381631fc0f43ea808110506db8aacf081df5535ac5eb8ad", /* R */ + "73bf3691260dddd9997c97313f2a70783eacf8d15bdfb34bb13025cdfae72f70", /* S */ + }, + { + /* test vector 22 for P-256 */ + "4caaa26f93f009682bbba6db6b265aec17b7ec1542bda458e8550b9e68eed18d", /* private_key */ + "e3c58c1c254d11c7e781ad133e4c36dd1b5de362120d336a58e7b68813f3fbee59760db66120afe0d962c81a8e5586588fd19de2f40556371611c73af22c8a68", /* public_key */ + "c0d37142dc8b0d614fad20c4d35af6eb819e259e513ddeac1e1c273e7e1dc1bb", /* k */ + "e8ed2e73fe9e3c6bb087c5179bb357be4cd147bc66e70dc1fecc10fd", /* SHA224 hash */ + "25dd8e4086c62a40d2a310e2f90f6af5cb7e677b4dfdb4dc4e99e23ea2f0e6dc", /* R */ + "90ad62c179b0c9d61f521dde1cd762bfd224b5525c39c3706f2549313ddb4f39", /* S */ + }, + { + /* test vector 23 for P-256 */ + "7af4b150bb7167cb68037f280d0823ce5320c01a92b1b56ee1b88547481b1de9", /* private_key */ + "cb3634ec4f0cbb99986be788f889e586026d5a851e80d15382f1bdb1bda2bc7551e4e43bc16fb114896b18198a1aebe6054ba20ed0c0317c1b8776158c0e6bfb", /* public_key */ + "98edd59fafbcaee5f64e84eb5ed59fff45d14aabada47cee2fa674377173627a", /* k */ + "ca7e8c8c873346c85db9ac648509c8ccc9ab5651d91e35a248b951fb", /* SHA224 hash */ + "261a1cdb0fd93c0fb06ea6068b6b03c330a12f621a7eba76682a1d152c0e8d08", /* R */ + "7ca049bad54feee101d6db807635ffb8bdb05a38e445c8c3d65d60df143514c5", /* S */ + }, + { + /* test vector 24 for P-256 */ + "52ad53e849e30bec0e6345c3e9d98ebc808b19496c1ef16d72ab4a00bbb8c634", /* private_key */ + "7cca1334bfc2a78728c50b370399be3f9690d445aa03c701da643eeb0b0f7fa83f7522238668e615405e49b2f63faee58286000a30cdb4b564ac0df99bc8950f", /* public_key */ + "8650c30712fc253610884fbba4a332a4574d4b7822f7776cab1df8f5fa05442a", /* k */ + "3367c395a9ad7b8214c48658f2a4b377b6b0288ba272a4fbfeaa48df", /* SHA224 hash */ + "a18194c7ac5829afc408d78dde19542837e7be82706c3941b2d9c5e036bb51e0", /* R */ + "188ead1cdf7c1d21114ff56d0421ffd501ab978ef58337462c0fa736d86299af", /* S */ + }, + { + /* test vector 25 for P-256 */ + "80754962a864be1803bc441fa331e126005bfc6d8b09ed38b7e69d9a030a5d27", /* private_key */ + "0aaeed6dd1ae020d6eefc98ec4241ac93cbd3c8afed05bb28007e7da5727571b2dda1d5b7872eb94dfffb456115037ff8d3e72f8ebdd8fcfc42391f96809be69", /* public_key */ + "738e050aeefe54ecba5be5f93a97bbcb7557d701f9da2d7e88483454b97b55a8", /* k */ + "a36a7d6424763633320ca799667f1b79955f079fb1b6dc264058af41", /* SHA224 hash */ + "8cb9f41dfdcb9604e0725ac9b78fc0db916dc071186ee982f6dba3da36f02efa", /* R */ + "5c87fe868fd4282fb114f5d70e9590a10a5d35cedf3ff6402ba5c4344738a32e", /* S */ + }, + { + /* test vector 26 for P-256 */ + "cfa8c8bd810eb0d73585f36280ecdd296ee098511be8ad5eac68984eca8eb19d", /* private_key */ + "c227a2af15dfa8734e11c0c50f77e24e77ed58dd8cccf1b0e9fa06bee1c64766b686592ce3745eb300d2704083db55e1fa8274e4cb7e256889ccc0bb34a60570", /* public_key */ + "2d6b449bb38b543d6b6d34ff8cb053f5e5b337f949b069b21f421995ebb28823", /* k */ + "864f18aa83fd3af6cdf6ac7f8526062d0c48a8d3c341cc23d53be864", /* SHA224 hash */ + "5e89d3c9b103c2fa3cb8cebeec23640acda0257d63ffbe2d509bfc49fab1dca6", /* R */ + "d70c5b1eeb29e016af9925798d24e166c23d58fedd2f1a3bbdb1ef78cdbfb63a", /* S */ + }, + { + /* test vector 27 for P-256 */ + "b2021e2665ce543b7feadd0cd5a4bd57ffcc5b32deb860b4d736d9880855da3c", /* private_key */ + "722e0abad4504b7832a148746153777694714eca220eced2b2156ca64cfed3ddf0351b357b3081e859c46cad5328c5afa10546e92bc6c3fd541796ac30397a75", /* public_key */ + "b15bbce4b382145de7ecd670d947e77555ef7cd1693bd53c694e2b52b04d10e1", /* k */ + "916924fcced069bf6956eeb4e8f09dc9bf928e8a690111b699e39eab", /* SHA224 hash */ + "9d086dcd22da165a43091991bede9c1c14515e656633cb759ec2c17f51c35253", /* R */ + "23595ad1cb714559faaecaf946beb9a71e584616030ceaed8a8470f4bf62768f", /* S */ + }, + { + /* test vector 28 for P-256 */ + "0c9bce6a568ca239395fc3552755575cbcdddb1d89f6f5ab354517a057b17b48", /* private_key */ + "4814d454495df7103e2da383aba55f7842fd84f1750ee5801ad32c10d0be6c7da0bd039d5097c8f0770477f6b18d247876e88e528bf0453eab515ffab8a9eda3", /* public_key */ + "d414f1525cdcc41eba1652de017c034ebcc7946cb2efe4713d09f67c85b83153", /* k */ + "ec2fb907b92865e501ce97f703cf6214a6de2303df472ba58145af16", /* SHA224 hash */ + "84db02c678f9a21208cec8564d145a35ba8c6f26b4eb7e19522e439720dae44c", /* R */ + "537c564da0d2dc5ac4376c5f0ca3b628d01d48df47a83d842c927e4d6db1e16d", /* S */ + }, + { + /* test vector 29 for P-256 */ + "1daa385ec7c7f8a09adfcaea42801a4de4c889fb5c6eb4e92bc611d596d68e3f", /* private_key */ + "f04e9f2831d9697ae146c7d4552e5f91085cc46778400b75b76f00205252941dbd267148174cd0c2b019cd0a5256e2f3f889d1e597160372b5a1339c8d787f10", /* public_key */ + "7707db348ee6f60365b43a2a994e9b40ed56fe03c2c31c7e781bc4ffadcba760", /* k */ + "b047a2a715335a1cc255beb983355e7d1363c610bf56df45d4503e69", /* SHA224 hash */ + "5d95c385eeba0f15db0b80ae151912409128c9c80e554246067b8f6a36d85ea5", /* R */ + "db5d8a1e345f883e4fcb3871276f170b783c1a1e9da6b6615913368a8526f1c3", /* S */ + }, + { + /* test vector 30 for P-256 */ + "519b423d715f8b581f4fa8ee59f4771a5b44c8130b4e3eacca54a56dda72b464", /* private_key */ + "1ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83ce4014c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9", /* public_key */ + "94a1bbb14b906a61a280f245f9e93c7f3b4a6247824f5d33b9670787642a68de", /* k */ + "44acf6b7e36c1342c2c5897204fe09504e1e2efb1a900377dbc4e7a6a133ec56", /* SHA256 hash */ + "f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac", /* R */ + "8bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903", /* S */ + }, + { + /* test vector 31 for P-256 */ + "0f56db78ca460b055c500064824bed999a25aaf48ebb519ac201537b85479813", /* private_key */ + "e266ddfdc12668db30d4ca3e8f7749432c416044f2d2b8c10bf3d4012aeffa8abfa86404a2e9ffe67d47c587ef7a97a7f456b863b4d02cfc6928973ab5b1cb39", /* public_key */ + "6d3e71882c3b83b156bb14e0ab184aa9fb728068d3ae9fac421187ae0b2f34c6", /* k */ + "9b2db89cb0e8fa3cc7608b4d6cc1dec0114e0b9ff4080bea12b134f489ab2bbc", /* SHA256 hash */ + "976d3a4e9d23326dc0baa9fa560b7c4e53f42864f508483a6473b6a11079b2db", /* R */ + "1b766e9ceb71ba6c01dcd46e0af462cd4cfa652ae5017d4555b8eeefe36e1932", /* S */ + }, + { + /* test vector 32 for P-256 */ + "e283871239837e13b95f789e6e1af63bf61c918c992e62bca040d64cad1fc2ef", /* private_key */ + "74ccd8a62fba0e667c50929a53f78c21b8ff0c3c737b0b40b1750b2302b0bde829074e21f3a0ef88b9efdf10d06aa4c295cc1671f758ca0e4cd108803d0f2614", /* public_key */ + "ad5e887eb2b380b8d8280ad6e5ff8a60f4d26243e0124c2f31a297b5d0835de2", /* k */ + "b804cf88af0c2eff8bbbfb3660ebb3294138e9d3ebd458884e19818061dacff0", /* SHA256 hash */ + "35fb60f5ca0f3ca08542fb3cc641c8263a2cab7a90ee6a5e1583fac2bb6f6bd1", /* R */ + "ee59d81bc9db1055cc0ed97b159d8784af04e98511d0a9a407b99bb292572e96", /* S */ + }, + { + /* test vector 33 for P-256 */ + "a3d2d3b7596f6592ce98b4bfe10d41837f10027a90d7bb75349490018cf72d07", /* private_key */ + "322f80371bf6e044bc49391d97c1714ab87f990b949bc178cb7c43b7c22d89e13c15d54a5cc6b9f09de8457e873eb3deb1fceb54b0b295da6050294fae7fd999", /* public_key */ + "24fc90e1da13f17ef9fe84cc96b9471ed1aaac17e3a4bae33a115df4e5834f18", /* k */ + "85b957d92766235e7c880ac5447cfbe97f3cb499f486d1e43bcb5c2ff9608a1a", /* SHA256 hash */ + "d7c562370af617b581c84a2468cc8bd50bb1cbf322de41b7887ce07c0e5884ca", /* R */ + "b46d9f2d8c4bf83546ff178f1d78937c008d64e8ecc5cbb825cb21d94d670d89", /* S */ + }, + { + /* test vector 34 for P-256 */ + "53a0e8a8fe93db01e7ae94e1a9882a102ebd079b3a535827d583626c272d280d", /* private_key */ + "1bcec4570e1ec2436596b8ded58f60c3b1ebc6a403bc5543040ba829630572448af62a4c683f096b28558320737bf83b9959a46ad2521004ef74cf85e67494e1", /* public_key */ + "5d833e8d24cc7a402d7ee7ec852a3587cddeb48358cea71b0bedb8fabe84e0c4", /* k */ + "3360d699222f21840827cf698d7cb635bee57dc80cd7733b682d41b55b666e22", /* SHA256 hash */ + "18caaf7b663507a8bcd992b836dec9dc5703c080af5e51dfa3a9a7c387182604", /* R */ + "77c68928ac3b88d985fb43fb615fb7ff45c18ba5c81af796c613dfa98352d29c", /* S */ + }, + { + /* test vector 35 for P-256 */ + "4af107e8e2194c830ffb712a65511bc9186a133007855b49ab4b3833aefc4a1d", /* private_key */ + "a32e50be3dae2c8ba3f5e4bdae14cf7645420d425ead94036c22dd6c4fc59e00d623bf641160c289d6742c6257ae6ba574446dd1d0e74db3aaa80900b78d4ae9", /* public_key */ + "e18f96f84dfa2fd3cdfaec9159d4c338cd54ad314134f0b31e20591fc238d0ab", /* k */ + "c413c4908cd0bc6d8e32001aa103043b2cf5be7fcbd61a5cec9488c3a577ca57", /* SHA256 hash */ + "8524c5024e2d9a73bde8c72d9129f57873bbad0ed05215a372a84fdbc78f2e68", /* R */ + "d18c2caf3b1072f87064ec5e8953f51301cada03469c640244760328eb5a05cb", /* S */ + }, + { + /* test vector 36 for P-256 */ + "78dfaa09f1076850b3e206e477494cddcfb822aaa0128475053592c48ebaf4ab", /* private_key */ + "8bcfe2a721ca6d753968f564ec4315be4857e28bef1908f61a366b1f03c974790f67576a30b8e20d4232d8530b52fb4c89cbc589ede291e499ddd15fe870ab96", /* public_key */ + "295544dbb2da3da170741c9b2c6551d40af7ed4e891445f11a02b66a5c258a77", /* k */ + "88fc1e7d849794fc51b135fa135deec0db02b86c3cd8cebdaa79e8689e5b2898", /* SHA256 hash */ + "c5a186d72df452015480f7f338970bfe825087f05c0088d95305f87aacc9b254", /* R */ + "84a58f9e9d9e735344b316b1aa1ab5185665b85147dc82d92e969d7bee31ca30", /* S */ + }, + { + /* test vector 37 for P-256 */ + "80e692e3eb9fcd8c7d44e7de9f7a5952686407f90025a1d87e52c7096a62618a", /* private_key */ + "a88bc8430279c8c0400a77d751f26c0abc93e5de4ad9a4166357952fe041e7672d365a1eef25ead579cc9a069b6abc1b16b81c35f18785ce26a10ba6d1381185", /* public_key */ + "7c80fd66d62cc076cef2d030c17c0a69c99611549cb32c4ff662475adbe84b22", /* k */ + "41fa8d8b4cd0a5fdf021f4e4829d6d1e996bab6b4a19dcb85585fe76c582d2bc", /* SHA256 hash */ + "9d0c6afb6df3bced455b459cc21387e14929392664bb8741a3693a1795ca6902", /* R */ + "d7f9ddd191f1f412869429209ee3814c75c72fa46a9cccf804a2f5cc0b7e739f", /* S */ + }, + { + /* test vector 38 for P-256 */ + "5e666c0db0214c3b627a8e48541cc84a8b6fd15f300da4dff5d18aec6c55b881", /* private_key */ + "1bc487570f040dc94196c9befe8ab2b6de77208b1f38bdaae28f9645c4d2bc3aec81602abd8345e71867c8210313737865b8aa186851e1b48eaca140320f5d8f", /* public_key */ + "2e7625a48874d86c9e467f890aaa7cd6ebdf71c0102bfdcfa24565d6af3fdce9", /* k */ + "2d72947c1731543b3d62490866a893952736757746d9bae13e719079299ae192", /* SHA256 hash */ + "2f9e2b4e9f747c657f705bffd124ee178bbc5391c86d056717b140c153570fd9", /* R */ + "f5413bfd85949da8d83de83ab0d19b2986613e224d1901d76919de23ccd03199", /* S */ + }, + { + /* test vector 39 for P-256 */ + "f73f455271c877c4d5334627e37c278f68d143014b0a05aa62f308b2101c5308", /* private_key */ + "b8188bd68701fc396dab53125d4d28ea33a91daf6d21485f4770f6ea8c565dde423f058810f277f8fe076f6db56e9285a1bf2c2a1dae145095edd9c04970bc4a", /* public_key */ + "62f8665fd6e26b3fa069e85281777a9b1f0dfd2c0b9f54a086d0c109ff9fd615", /* k */ + "e138bd577c3729d0e24a98a82478bcc7482499c4cdf734a874f7208ddbc3c116", /* SHA256 hash */ + "1cc628533d0004b2b20e7f4baad0b8bb5e0673db159bbccf92491aef61fc9620", /* R */ + "880e0bbf82a8cf818ed46ba03cf0fc6c898e36fca36cc7fdb1d2db7503634430", /* S */ + }, + { + /* test vector 40 for P-256 */ + "b20d705d9bd7c2b8dc60393a5357f632990e599a0975573ac67fd89b49187906", /* private_key */ + "51f99d2d52d4a6e734484a018b7ca2f895c2929b6754a3a03224d07ae61166ce4737da963c6ef7247fb88d19f9b0c667cac7fe12837fdab88c66f10d3c14cad1", /* public_key */ + "72b656f6b35b9ccbc712c9f1f3b1a14cbbebaec41c4bca8da18f492a062d6f6f", /* k */ + "17b03f9f00f6692ccdde485fc63c4530751ef35da6f71336610944b0894fcfb8", /* SHA256 hash */ + "9886ae46c1415c3bc959e82b760ad760aab66885a84e620aa339fdf102465c42", /* R */ + "2bf3a80bc04faa35ebecc0f4864ac02d349f6f126e0f988501b8d3075409a26c", /* S */ + }, + { + /* test vector 41 for P-256 */ + "d4234bebfbc821050341a37e1240efe5e33763cbbb2ef76a1c79e24724e5a5e7", /* private_key */ + "8fb287f0202ad57ae841aea35f29b2e1d53e196d0ddd9aec24813d64c0922fb71f6daff1aa2dd2d6d3741623eecb5e7b612997a1039aab2e5cf2de969cfea573", /* public_key */ + "d926fe10f1bfd9855610f4f5a3d666b1a149344057e35537373372ead8b1a778", /* k */ + "c25beae638ff8dcd370e03a6f89c594c55bed1277ee14d83bbb0ef783a0517c7", /* SHA256 hash */ + "490efd106be11fc365c7467eb89b8d39e15d65175356775deab211163c2504cb", /* R */ + "644300fc0da4d40fb8c6ead510d14f0bd4e1321a469e9c0a581464c7186b7aa7", /* S */ + }, + { + /* test vector 42 for P-256 */ + "b58f5211dff440626bb56d0ad483193d606cf21f36d9830543327292f4d25d8c", /* private_key */ + "68229b48c2fe19d3db034e4c15077eb7471a66031f28a980821873915298ba76303e8ee3742a893f78b810991da697083dd8f11128c47651c27a56740a80c24c", /* public_key */ + "e158bf4a2d19a99149d9cdb879294ccb7aaeae03d75ddd616ef8ae51a6dc1071", /* k */ + "5eb28029ebf3c7025ff2fc2f6de6f62aecf6a72139e1cba5f20d11bbef036a7f", /* SHA256 hash */ + "e67a9717ccf96841489d6541f4f6adb12d17b59a6bef847b6183b8fcf16a32eb", /* R */ + "9ae6ba6d637706849a6a9fc388cf0232d85c26ea0d1fe7437adb48de58364333", /* S */ + }, + { + /* test vector 43 for P-256 */ + "54c066711cdb061eda07e5275f7e95a9962c6764b84f6f1f3ab5a588e0a2afb1", /* private_key */ + "0a7dbb8bf50cb605eb2268b081f26d6b08e012f952c4b70a5a1e6e7d46af98bbf26dd7d799930062480849962ccf5004edcfd307c044f4e8f667c9baa834eeae", /* public_key */ + "646fe933e96c3b8f9f507498e907fdd201f08478d0202c752a7c2cfebf4d061a", /* k */ + "12135386c09e0bf6fd5c454a95bcfe9b3edb25c71e455c73a212405694b29002", /* SHA256 hash */ + "b53ce4da1aa7c0dc77a1896ab716b921499aed78df725b1504aba1597ba0c64b", /* R */ + "d7c246dc7ad0e67700c373edcfdd1c0a0495fc954549ad579df6ed1438840851", /* S */ + }, + { + /* test vector 44 for P-256 */ + "34fa4682bf6cb5b16783adcd18f0e6879b92185f76d7c920409f904f522db4b1", /* private_key */ + "105d22d9c626520faca13e7ced382dcbe93498315f00cc0ac39c4821d0d737376c47f3cbbfa97dfcebe16270b8c7d5d3a5900b888c42520d751e8faf3b401ef4", /* public_key */ + "a6f463ee72c9492bc792fe98163112837aebd07bab7a84aaed05be64db3086f4", /* k */ + "aea3e069e03c0ff4d6b3fa2235e0053bbedc4c7e40efbc686d4dfb5efba4cfed", /* SHA256 hash */ + "542c40a18140a6266d6f0286e24e9a7bad7650e72ef0e2131e629c076d962663", /* R */ + "4f7f65305e24a6bbb5cff714ba8f5a2cee5bdc89ba8d75dcbf21966ce38eb66f", /* S */ + }, + { + /* test vector 45 for P-256 */ + "b6faf2c8922235c589c27368a3b3e6e2f42eb6073bf9507f19eed0746c79dced", /* private_key */ + "e0e7b99bc62d8dd67883e39ed9fa0657789c5ff556cc1fd8dd1e2a55e9e3f24363fbfd0232b95578075c903a4dbf85ad58f8350516e1ec89b0ee1f5e1362da69", /* public_key */ + "9980b9cdfcef3ab8e219b9827ed6afdd4dbf20bd927e9cd01f15762703487007", /* k */ + "d9c83b92fa0979f4a5ddbd8dd22ab9377801c3c31bf50f932ace0d2146e2574da0d5552dbed4b18836280e9f94558ea6", /* SHA384 hash */ + "f5087878e212b703578f5c66f434883f3ef414dc23e2e8d8ab6a8d159ed5ad83", /* R */ + "306b4c6c20213707982dffbb30fba99b96e792163dd59dbe606e734328dd7c8a", /* S */ + }, + { + /* test vector 46 for P-256 */ + "118958fd0ff0f0b0ed11d3cf8fa664bc17cdb5fed1f4a8fc52d0b1ae30412181", /* private_key */ + "afda82260c9f42122a3f11c6058839488f6d7977f6f2a263c67d06e27ea2c3550ae2bbdd2207c590332c5bfeb4c8b5b16622134bd4dc55382ae806435468058b", /* public_key */ + "23129a99eeda3d99a44a5778a46e8e7568b91c31fb7a8628c5d9820d4bed4a6b", /* k */ + "76c8df4563375d34656f2d1dd3445c9d9f0c8da59dc015fa6122237e1a02039998c16b3935e281160923c6e21115d0a9", /* SHA384 hash */ + "e446600cab1286ebc3bb332012a2f5cc33b0a5ef7291d5a62a84de5969d77946", /* R */ + "cf89b12793ee1792eb26283b48fa0bdcb45ae6f6ad4b02564bf786bb97057d5a", /* S */ + }, + { + /* test vector 47 for P-256 */ + "3e647357cd5b754fad0fdb876eaf9b1abd7b60536f383c81ce5745ec80826431", /* private_key */ + "702b2c94d039e590dd5c8f9736e753cf5824aacf33ee3de74fe1f5f7c858d5ed0c28894e907af99fb0d18c9e98f19ac80dd77abfa4bebe45055c0857b82a0f4d", /* public_key */ + "9beab7722f0bcb468e5f234e074170a60225255de494108459abdf603c6e8b35", /* k */ + "bad1b2c4c35c54eede5d9dee6f6821bb0254395ae6a689ae7289790448ff787ea4e495ea418c0759c51144a74eba3ac9", /* SHA384 hash */ + "c4021fb7185a07096547af1fb06932e37cf8bd90cf593dea48d48614fa237e5e", /* R */ + "7fb45d09e2172bec8d3e330aa06c43fbb5f625525485234e7714b7f6e92ba8f1", /* S */ + }, + { + /* test vector 48 for P-256 */ + "76c17c2efc99891f3697ba4d71850e5816a1b65562cc39a13da4b6da9051b0fd", /* private_key */ + "d12512e934c367e4c4384dbd010e93416840288a0ba00b299b4e7c0d91578b57ebf8835661d9b578f18d14ae4acf9c357c0dc8b7112fc32824a685ed72754e23", /* public_key */ + "77cffa6f9a73904306f9fcd3f6bbb37f52d71e39931bb4aec28f9b076e436ccf", /* k */ + "c248cc5eb23ed0f6f03de308fffed1e5fdd918aef379946d7b66b8924dc38306feb28e85cc5ab5d7a3a0e55087ddecde", /* SHA384 hash */ + "4d5a9d95b0f09ce8704b0f457b39059ee606092310df65d3f8ae7a2a424cf232", /* R */ + "7d3c014ca470a73cef1d1da86f2a541148ad542fbccaf9149d1b0b030441a7eb", /* S */ + }, + { + /* test vector 49 for P-256 */ + "67b9dea6a575b5103999efffce29cca688c781782a41129fdecbce76608174de", /* private_key */ + "b4238b029fc0b7d9a5286d8c29b6f3d5a569e9108d44d889cd795c4a385905be8cb3fff8f6cca7187c6a9ad0a2b1d9f40ae01b32a7e8f8c4ca75d71a1fffb309", /* public_key */ + "d02617f26ede3584f0afcfc89554cdfb2ae188c192092fdde3436335fafe43f1", /* k */ + "b05d944f6752bfe003526499bb4d8721c0d25a7901999f67519b17665e907cd148b2ff1b451248d292866bcc81b506d9", /* SHA384 hash */ + "26fd9147d0c86440689ff2d75569795650140506970791c90ace0924b44f1586", /* R */ + "00a34b00c20a8099df4b0a757cbef8fea1cb3ea7ced5fbf7e987f70b25ee6d4f", /* S */ + }, + { + /* test vector 50 for P-256 */ + "ecf644ea9b6c3a04fdfe2de4fdcb55fdcdfcf738c0b3176575fa91515194b566", /* private_key */ + "c3bdc7c795ec94620a2cfff614c13a3390a5e86c892e53a24d3ed22228bc85bf70480fc5cf4aacd73e24618b61b5c56c1ced8c4f1b869580ea538e68c7a61ca3", /* public_key */ + "53291d51f68d9a12d1dcdc58892b2f786cc15f631f16997d2a49bace513557d4", /* k */ + "847325a13b72de5a15cd899ced0920b8543ab26f9d3877fde99c5018efc78ddf14c00f88b06af7971181923aa46624d4", /* SHA384 hash */ + "a860c8b286edf973ce4ce4cf6e70dc9bbf3818c36c023a845677a9963705df8b", /* R */ + "5630f986b1c45e36e127dd7932221c4272a8cc6e255e89f0f0ca4ec3a9f76494", /* S */ + }, + { + /* test vector 51 for P-256 */ + "4961485cbc978f8456ec5ac7cfc9f7d9298f99415ecae69c8491b258c029bfee", /* private_key */ + "8d40bf2299e05d758d421972e81cfb0cce68b949240dc30f315836acc70bef035674e6f77f8b46f46cca937d83b128dffbe9bd7e0d3d08aa2cbbfdfb16f72c9a", /* public_key */ + "373a825b5a74b7b9e02f8d4d876b577b4c3984168d704ba9f95b19c05ed590af", /* k */ + "fd30608cf408dac5886ca156bdce7f75067e18172af79ca84f8d60d011b8a6b5ea33a92554d1ea34b105d5bd09062d47", /* SHA384 hash */ + "ef6fb386ad044b63feb7445fa16b10319018e9cea9ef42bca83bdad01992234a", /* R */ + "ac1f42f652eb1786e57be01d847c81f7efa072ba566d4583af4f1551a3f76c65", /* S */ + }, + { + /* test vector 52 for P-256 */ + "587907e7f215cf0d2cb2c9e6963d45b6e535ed426c828a6ea2fb637cca4c5cbd", /* private_key */ + "660da45c413cc9c9526202c16b402af602d30daaa7c342f1e722f15199407f31e6f8cbb06913cc718f2d69ba2fb3137f04a41c27c676d1a80fbf30ea3ca46439", /* public_key */ + "6b8eb7c0d8af9456b95dd70561a0e902863e6dfa1c28d0fd4a0509f1c2a647b2", /* k */ + "9d21e70e88c43cbab056c5fdeb63baa2660ebc44e0d1ef781f8f6bf58b28e3a2c9d5db051c8da3ba34796d8bcc7ba5cb", /* SHA384 hash */ + "08fabf9b57de81875bfa7a4118e3e44cfb38ec6a9b2014940207ba3b1c583038", /* R */ + "a58d199b1deba7350616230d867b2747a3459421811c291836abee715b8f67b4", /* S */ + }, + { + /* test vector 53 for P-256 */ + "24b1e5676d1a9d6b645a984141a157c124531feeb92d915110aef474b1e27666", /* private_key */ + "b4909a5bdf25f7659f4ef35e4b811429fb2c59126e3dad09100b46aea6ebe7a6760ae015fa6af5c9749c4030fdb5de6e58c6b5b1944829105cf7edf7d3a22cfb", /* public_key */ + "88794923d8943b5dbcc7a7a76503880ff7da632b0883aaa60a9fcc71bf880fd6", /* k */ + "0bc6a254fa0016a5aa608309f9a97cf0c879370bae0b7b460da17c2694e8414db39ec8b5f943167372610fc146dd8b28", /* SHA384 hash */ + "6ec9a340b77fae3c7827fa96d997e92722ff2a928217b6dd3c628f3d49ae4ce6", /* R */ + "637b54bbcfb7e7d8a41ea317fcfca8ad74eb3bb6b778bc7ef9dec009281976f7", /* S */ + }, + { + /* test vector 54 for P-256 */ + "bce49c7b03dcdc72393b0a67cf5aa5df870f5aaa6137ada1edc7862e0981ec67", /* private_key */ + "c786d9421d67b72b922cf3def2a25eeb5e73f34543eb50b152e738a98afb0ca56796271e79e2496f9e74b126b1123a3d067de56b5605d6f51c8f6e1d5bb93aba", /* public_key */ + "89e690d78a5e0d2b8ce9f7fcbf34e2605fd9584760fa7729043397612dd21f94", /* k */ + "12520a7ef4f05f91b9f9a0fba73eddc813413c4d4764dc1c4b773c4afd5cd77b0e7f09d56e5931aec2958407c02774c0", /* SHA384 hash */ + "07e5054c384839584624e8d730454dc27e673c4a90cbf129d88b91250341854d", /* R */ + "f7e665b88614d0c5cbb3007cafe713763d81831525971f1747d92e4d1ca263a7", /* S */ + }, + { + /* test vector 55 for P-256 */ + "73188a923bc0b289e81c3db48d826917910f1b957700f8925425c1fb27cabab9", /* private_key */ + "86662c014ab666ee770723be8da38c5cd299efc6480fc6f8c3603438fa8397b9f26b3307a650c3863faaa5f642f3ba1384c3d3a02edd3d48c657c269609cc3fc", /* public_key */ + "ec90584ab3b383b590626f36ed4f5110e49888aec7ae7a9c5ea62dd2dc378666", /* k */ + "4b3a6ea660aac1e87dae5a252ab5588b5292d713f8c146f1a92d7b72f64bc91663c46e2beb33832e92ec0dccdf033f87", /* SHA384 hash */ + "13e9ad59112fde3af4163eb5c2400b5e9a602576d5869ac1c569075f08c90ff6", /* R */ + "708ac65ff2b0baaccc6dd954e2a93df46016bd04457636de06798fcc17f02be5", /* S */ + }, + { + /* test vector 56 for P-256 */ + "f637d55763fe819541588e0c603f288a693cc66823c6bb7b8e003bd38580ebce", /* private_key */ + "74a4620c578601475fc169a9b84be613b4a16cb6acab8fd98848a6ec9fbd133d42b9e35d347c107e63bd55f525f915bcf1e3d2b81d002d3c39acf10fc30645a1", /* public_key */ + "4d578f5099636234d9c1d566f1215d5d887ae5d47022be17dbf32a11a03f053b", /* k */ + "a357e9fa283e8699373cb7c027e4c86084259f08662fd0fc064e7b2f6a33562fb2a9e938962eda99f43e5e2b012822b8", /* SHA384 hash */ + "113a933ebc4d94ce1cef781e4829df0c493b0685d39fb2048ce01b21c398dbba", /* R */ + "3005bd4ec63dbd04ce9ff0c6246ad65d27fcf62edb2b7e461589f9f0e7446ffd", /* S */ + }, + { + /* test vector 57 for P-256 */ + "2e357d51517ff93b821f895932fddded8347f32596b812308e6f1baf7dd8a47f", /* private_key */ + "7e4078a1d50c669fb2996dd9bacb0c3ac7ede4f58fa0fa1222e78dbf5d1f41860014e46e90cc171fbb83ea34c6b78202ea8137a7d926f0169147ed5ae3d6596f", /* public_key */ + "be522b0940b9a40d84bf790fe6abdc252877e671f2efa63a33a65a512fc2aa5c", /* k */ + "347d91b8295d9321c84ce2a5e1c5257c4ffaf0006d884ff7337d386c63f532db444a873b8047ba373bb3538b5664ab31", /* SHA384 hash */ + "a26b9ad775ac37ff4c7f042cdc4872c5e4e5e800485f488ddfaaed379f468090", /* R */ + "f88eae2019bebbba62b453b8ee3472ca5c67c267964cffe0cf2d2933c1723dff", /* S */ + }, + { + /* test vector 58 for P-256 */ + "77d60cacbbac86ab89009403c97289b5900466856887d3e6112af427f7f0f50b", /* private_key */ + "a62032dfdb87e25ed0c70cad20d927c7effeb2638e6c88ddd670f74df16090e544c5ee2cf740ded468f5d2efe13daa7c5234645a37c073af35330d03a4fed976", /* public_key */ + "06c1e692b045f425a21347ecf72833d0242906c7c1094f805566cdcb1256e394", /* k */ + "46252c7ed042d8b1f691a46b4f6ca5395106871bd413e277a3812beb1757d9fb056a9805aa31376fd60e0ac567265cdd", /* SHA384 hash */ + "eb173b51fb0aec318950d097e7fda5c34e529519631c3e2c9b4550b903da417d", /* R */ + "ca2c13574bf1b7d56e9dc18315036a31b8bceddf3e2c2902dcb40f0cc9e31b45", /* S */ + }, + { + /* test vector 59 for P-256 */ + "486854e77962117f49e09378de6c9e3b3522fa752b10b2c810bf48db584d7388", /* private_key */ + "760b5624bd64d19c866e54ccd74ad7f98851afdbc3ddeae3ec2c52a135be9cfafeca15ce9350877102eee0f5af18b2fed89dc86b7df0bf7bc2963c1638e36fe8", /* public_key */ + "e4f77c6442eca239b01b0254e11a4182782d96f48ab521cc3d1d68df12b5a41a", /* k */ + "1ec1470e867e27ab4800998382f623e27fc2a897a497e6a9cb7c3584b42080c65dbe1270dc479a454566653abd402f02", /* SHA384 hash */ + "bdff14e4600309c2c77f79a25963a955b5b500a7b2d34cb172cd6acd52905c7b", /* R */ + "b0479cdb3df79923ec36a104a129534c5d59f622be7d613aa04530ad2507d3a2", /* S */ + }, + { + /* test vector 60 for P-256 */ + "9dd0d3a3d514c2a8adb162b81e3adfba3299309f7d2018f607bdb15b1a25f499", /* private_key */ + "6b738de3398b6ac57b9591f9d7985dd4f32137ad3460dcf8970c1390cb9eaf8d83bc61e26d2bbbd3cf2d2ab445a2bc4ab5dde41f4a13078fd1d3cc36ab596d57", /* public_key */ + "9106192170ccb3c64684d48287bb81bbed51b40d503462c900e5c7aae43e380a", /* k */ + "a59ca4dd2b0347f4f2702a8962878a206775fd91047040be60463119f02aa829b7360b940b2785395406c280375c5d90ee655e51d4120df256b9a6287161c7fc", /* SHA512 hash */ + "275fa760878b4dc05e9d157fedfd8e9b1c9c861222a712748cb4b7754c043fb1", /* R */ + "699d906bb8435a05345af3b37e3b357786939e94caae257852f0503adb1e0f7e", /* S */ + }, + { + /* test vector 61 for P-256 */ + "f9bf909b7973bf0e3dad0e43dcb2d7fa8bda49dbe6e5357f8f0e2bd119be30e6", /* private_key */ + "f2a6674d4e86152a527199bed293fa63acde1b4d8a92b62e552210ba45c38792c72565c24f0eee6a094af341ddd8579747b865f91c8ed5b44cda8a19cc93776f", /* public_key */ + "e547791f7185850f03d0c58419648f65b9d29cdc22ed1de2a64280220cfcafba", /* k */ + "9e359350e87e7573ad9894cd4aad6c6202a58e9938d098dbf65650fc6f04fce3664b9adb234bfa0821788223a306daaa3e62bd46b19d7eb7a725bc5bce8998f3", /* SHA512 hash */ + "4782903d2aaf8b190dab5cae2223388d2d8bd845b3875d37485c54e1ded1d3d8", /* R */ + "dfb40e406bfa074f0bf832771b2b9f186e2211f0bca279644a0ca8559acf39da", /* S */ + }, + { + /* test vector 62 for P-256 */ + "724567d21ef682dfc6dc4d46853880cfa86fe6fea0efd51fac456f03c3d36ead", /* private_key */ + "70b877b5e365fcf08140b1eca119baba662879f38e059d074a2cb60b03ea5d395f56f94d591df40b9f3b8763ac4b3dbe622c956d5bd0c55658b6f46fa3deb201", /* public_key */ + "79d6c967ed23c763ece9ca4b026218004c84dc2d4ccc86cf05c5d0f791f6279b", /* k */ + "ff5e80ccbb51b75742a1f0e632b4c6cd119692f2aca337378f7eb2f3b17fc3d912828b7e1655d2263d8757715eea31493aa89dfe1db143a8fa13f89a00379938", /* SHA512 hash */ + "2ba2ea2d316f8937f184ad3028e364574d20a202e4e7513d7af57ac2456804d1", /* R */ + "64fe94968d18c5967c799e0349041b9e40e6c6c92ebb475e80dd82f51cf07320", /* S */ + }, + { + /* test vector 63 for P-256 */ + "29c5d54d7d1f099d50f949bfce8d6073dae059c5a19cc70834722f18a7199edd", /* private_key */ + "3088d4f45d274cc5f418c8ecc4cbcf96be87491f420250f8cbc01cdf2503ec47634db48198129237ed068c88ff5809f6211921a6258f548f4b64dd125921b78b", /* public_key */ + "0508ad7774908b5705895fda5c3b7a3032bf85dab7232bf981177019f3d76460", /* k */ + "e9518ad1c62d686b9df1f5ae1f6797d8c5944a65fcf2244b763f47b9bc5db8ec360cbd17180e6d24678bc36a1535276733bab7817610399ef6257ca43361dfa0", /* SHA512 hash */ + "acd9f3b63626c5f32103e90e1dd1695907b1904aa9b14f2132caef331321971b", /* R */ + "15c04a8bd6c13ed5e9961814b2f406f064670153e4d5465dcef63c1d9dd52a87", /* S */ + }, + { + /* test vector 64 for P-256 */ + "0d8095da1abba06b0d349c226511f642dabbf1043ad41baa4e14297afe8a3117", /* private_key */ + "75a45758ced45ecf55f755cb56ca2601d794ebeaeb2e6107fe2fc443f580e23c5303d47d5a75ec821d51a2ee7548448208c699eca0cd89810ffc1aa4faf81ead", /* public_key */ + "5165c54def4026ab648f7768c4f1488bcb183f6db7ffe02c7022a529a116482a", /* k */ + "9fd9a5f9b73f6d01894ceaf8a1e0327a0cac0dbc30153201bcccf09b6756e2f89198781e80a7ff5119cc2bb4402c731379f5ab5eda9264e3fe88b4b528e16598", /* SHA512 hash */ + "ebc85fc4176b446b3384ccc62fc2526b45665561a0e7e9404ac376c90e450b59", /* R */ + "8b2c09428e62c5109d17ed0cf8f9fd7c370d018a2a73f701effc9b17d04852c6", /* S */ + }, + { + /* test vector 65 for P-256 */ + "52fe57da3427b1a75cb816f61c4e8e0e0551b94c01382b1a80837940ed579e61", /* private_key */ + "2177e20a2092a46667debdcc21e7e45d6da72f124adecbc5ada6a7bcc7b401d5550e468f2626070a080afeeb98edd75a721eb773c8e62149f3e903cf9c4d7b61", /* public_key */ + "0464fe9674b01ff5bd8be21af3399fad66f90ad30f4e8ee6e2eb9bcccfd5185c", /* k */ + "bfc07b9a8a8941b99ac47d607356e5b68d7534fb3faccfbe97751397af359d31fe239179a1d856ffac49a9738e888f599123ee96ae202fb93b897e26bc83202e", /* SHA512 hash */ + "f8250f073f34034c1cde58f69a85e2f5a030703ebdd4dbfb98d3b3690db7d114", /* R */ + "a9e83e05f1d6e0fef782f186bedf43684c825ac480174d48b0e4d31505e27498", /* S */ + }, + { + /* test vector 66 for P-256 */ + "003d91611445919f59bfe3ca71fe0bfdeb0e39a7195e83ac03a37c7eceef0df2", /* private_key */ + "7b9c592f61aae0555855d0b9ebb6fd00fb6746e8842e2523565c858630b9ba00d35b2e168b1875bbc563bea5e8d63c4e38957c774a65e762959a349eaf263ba0", /* public_key */ + "ef9df291ea27a4b45708f7608723c27d7d56b7df0599a54bc2c2fabbff373b40", /* k */ + "a051dcee66f456d9786785444cee2a3a342a8e27a5ebdf0e91553a0d257eea11af3a7df7e9310b46d95021a1880cd3f064c73447d92a31bacdb889f1e1390f49", /* SHA512 hash */ + "66d057fd39958b0e4932bacd70a1769bbadcb62e4470937b45497a3d4500fabb", /* R */ + "6c853b889e18b5a49ee54b54dd1aaedfdd642e30eba171c5cab677f0df9e7318", /* S */ + }, + { + /* test vector 67 for P-256 */ + "48f13d393899cd835c4193670ec62f28e4c4903e0bbe5817bf0996831a720bb7", /* private_key */ + "82a1a96f4648393c5e42633ecdeb1d8245c78c5ea236b5bab460dedcc8924bc0e8cbf03c34b5154f876de19f3bb6fd43cd2eabf6e7c95467bcfa8c8fc42d76fd", /* public_key */ + "efed736e627899fea944007eea39a4a63c0c2e26491cd12adb546be3e5c68f7d", /* k */ + "e1a00e6e38599d7eba1f1a8a6c7337e4dcbdd4f436f47c57d17ef85829f7e266b6bff67a001598db6b9ac032ad160d6f928f8724d2f10928cf953bc76c3fd2fb", /* SHA512 hash */ + "cf7fc24bdaa09ac0cca8497e13298b961380668613c7493954048c06385a7044", /* R */ + "f38b1c8306cf82ab76ee3a772b14416b49993fe11f986e9b0f0593c52ec91525", /* S */ + }, + { + /* test vector 68 for P-256 */ + "95c99cf9ec26480275f23de419e41bb779590f0eab5cf9095d37dd70cb75e870", /* private_key */ + "42c292b0fbcc9f457ae361d940a9d45ad9427431a105a6e5cd90a345fe3507f7313b08fd2fa351908b3178051ee782cc62b9954ad95d4119aa564900f8ade70c", /* public_key */ + "4c08dd0f8b72ae9c674e1e448d4e2afe3a1ee69927fa23bbff3716f0b99553b7", /* k */ + "bdcf1926e90c980373954c67d3c3c06ccb1a5076957673f12ddf23fa0cce7b3dc3ec2aec143a1ba58094e3da45e2b160092e1d943cf8f22fad35f8348575a0cf", /* SHA512 hash */ + "f2bc35eb1b8488b9e8d4a1dbb200e1abcb855458e1557dc1bf988278a174eb3b", /* R */ + "ed9a2ec043a1d578e8eba6f57217976310e8674385ad2da08d6146c629de1cd9", /* S */ + }, + { + /* test vector 69 for P-256 */ + "e15e835d0e2217bc7c6f05a498f20af1cd56f2f165c23d225eb3360aa2c5cbcf", /* private_key */ + "89dd22052ec3ab4840206a62f2270c21e7836d1a9109a3407dd0974c7802b9aee91609ba35c7008b080c77a9068d97a14ca77b97299e74945217672b2fd5faf0", /* public_key */ + "c9f621441c235fc47ec34eef4c08625df1ec74918e1f86075b753f2589f4c60b", /* k */ + "da606bb1d0d25dd18a9c29096042e65e6b73086b30509962ea1aa75f25b74653c03a66620cba446f442765f28d7c55a5ff4f9693a6c7ce18e1196c25c12da48d", /* SHA512 hash */ + "a70d1a2d555d599bfb8c9b1f0d43725341151d17a8d0845fa56f3563703528a7", /* R */ + "4e05c45adf41783e394a5312f86e66871c4be4896948c85966879d5c66d54b37", /* S */ + }, + { + /* test vector 70 for P-256 */ + "808c08c0d77423a6feaaffc8f98a2948f17726e67c15eeae4e672edbe388f98c", /* private_key */ + "b0c0ad5e1f6001d8e9018ec611b2e3b91923e69fa6c98690ab644d650f640c42610539c0b9ed21ac0a2f27527c1a61d9b47cbf033187b1a6ada006eb5b2662ed", /* public_key */ + "1f6d4a905c761a53d54c362976717d0d7fc94d222bb5489e4830080a1a67535d", /* k */ + "efdb1d2143ecf0447a68e8156a7443897a56b31b4c0cfe499511a4a3ff6f32ba25515b3a20296a10d23378a24fb7de8c2ce606a7d93a9bd72aef3a34d1ff6401", /* SHA512 hash */ + "83404dcf8320baf206381800071e6a75160342d19743b4f176960d669dd03d07", /* R */ + "3f75dcf102008b2989f81683ae45e9f1d4b67a6ef6fd5c8af44828af80e1cfb5", /* S */ + }, + { + /* test vector 71 for P-256 */ + "f7c6315f0081acd8f09c7a2c3ec1b7ece20180b0a6365a27dcd8f71b729558f9", /* private_key */ + "250f7112d381c1751860045d9bcaf20dbeb25a001431f96ac6f19109362ffebb49fba9efe73546135a5a31ab3753e247034741ce839d3d94bd73936c4a17e4aa", /* public_key */ + "68c299be2c0c6d52d208d5d1a9e0ffa2af19b4833271404e5876e0aa93987866", /* k */ + "eeb09b1f4a74744909774bfe707977e5234db27026873fc7b5496e37d363ff82d5a1dd6fa6c97717aa0828a6f6325a2b7970e5d836ddfb63bf47b09f136eb9da", /* SHA512 hash */ + "7b195e92d2ba95911cda7570607e112d02a1c847ddaa33924734b51f5d81adab", /* R */ + "10d9f206755cef70ab5143ac43f3f8d38aea2644f31d52eaf3b472ee816e11e5", /* S */ + }, + { + /* test vector 72 for P-256 */ + "f547735a9409386dbff719ce2dae03c50cb437d6b30cc7fa3ea20d9aec17e5a5", /* private_key */ + "4ca87c5845fb04c2f76ae3273073b0523e356a445e4e95737260eba9e2d021db0f86475d07f82655320fdf2cd8db23b21905b1b1f2f9c48e2df87e24119c4880", /* public_key */ + "91bd7d97f7ed3253cedefc144771bb8acbbda6eb24f9d752bbe1dd018e1384c7", /* k */ + "8cd8e7876555a7393128336880c8002136e1008814a691528111220fd14158b7ff822226c67390739db56b368cf69cecc4cc147220be3d3ce587c8ad75b0f55a", /* SHA512 hash */ + "008c1755d3df81e64e25270dbaa9396641556df7ffc7ac9add6739c382705397", /* R */ + "77df443c729b039aded5b516b1077fecdd9986402d2c4b01734ba91e055e87fc", /* S */ + }, + { + /* test vector 73 for P-256 */ + "26a1aa4b927a516b661986895aff58f40b78cc5d0c767eda7eaa3dbb835b5628", /* private_key */ + "28afa3b0f81a0e95ad302f487a9b679fcdef8d3f40236ec4d4dbf4bb0cbba8b2bb4ac1be8405cbae8a553fbc28e29e2e689fabe7def26d653a1dafc023f3cecf", /* public_key */ + "f98e1933c7fad4acbe94d95c1b013e1d6931fa8f67e6dbb677b564ef7c3e56ce", /* k */ + "7a951d7de2e3552d16912a1d4381f047577f9fd7a8f55dc8ebfb5eac9c859ab8771e222bf56d3330201b82751d0aa5b6c21f42ada05db9955d46f62d530723e1", /* SHA512 hash */ + "15a9a5412d6a03edd71b84c121ce9a94cdd166e40da9ce4d79f1afff6a395a53", /* R */ + "86bbc2b6c63bad706ec0b093578e3f064736ec69c0dba59b9e3e7f73762a4dc3", /* S */ + }, + { + /* test vector 74 for P-256 */ + "6a5ca39aae2d45aa331f18a8598a3f2db32781f7c92efd4f64ee3bbe0c4c4e49", /* private_key */ + "c62cc4a39ace01006ad48cf49a3e71466955bbeeca5d318d672695df926b3aa4c85ccf517bf2ebd9ad6a9e99254def0d74d1d2fd611e328b4a3988d4f045fe6f", /* public_key */ + "dac00c462bc85bf39c31b5e01df33e2ec1569e6efcb334bf18f0951992ac6160", /* k */ + "4cb0debbdb572d89e2e46dcc6c2c63ef032792683032ce965b3e7fa79e3282039a705acbcc7bd07057a88b1e65852707934f10a67710ebefaa865201dfa6d4ff", /* SHA512 hash */ + "6e7ff8ec7a5c48e0877224a9fa8481283de45fcbee23b4c252b0c622442c26ad", /* R */ + "3dfac320b9c873318117da6bd856000a392b815659e5aa2a6a1852ccb2501df3", /* S */ + }, +}; diff --git a/test/test_vectors/rfc6979.h b/test/test_vectors/rfc6979.h new file mode 100644 index 0000000..b6004fa --- /dev/null +++ b/test/test_vectors/rfc6979.h @@ -0,0 +1,118 @@ +#ifndef RFC6979_H +#define RFC6979_H + +#include "test_vector.h" + +Test rfc6979_p256_tvs[] = { + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "a6e3c57dd01abe90086538398355dd4c3b17aa873382b0f24d6129493d8aad60", // k + "af2bdbe1aa9b6ec1e2ade1d694f41fc71a831d0268e9891562113d8a62add1bf", // hash SHA-256("sample") + "efd48b2aacb6a8fd1140dd9cd45e81d69d2c877b56aaf991c34d0ea84eaf3716", // R + "f7cb1c942d657c41d436c7a1b6e29f65f3e900dbb9aff4064dc4ab2f843acda8", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "882905f1227fd620fbf2abf21244f0ba83d0dc3a9103dbbee43a1fb858109db4", // k + "8151325dcdbae9e0ff95f9f9658432dbedfdb209", // sha1(sample) + "61340c88c3aaebeb4f6d667f672ca9759a6ccaa9fa8811313039ee4a35471d32", // R + "6d7f147dac089441bb2e2fe8f7a3fa264b9c475098fdcf6e00d7c996e1b8b7eb", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "103f90ee9dc52e5e7fb5132b7033c63066d194321491862059967c715985d473", // k + "9003e374bc726550c2c289447fd0533160f875709386dfa377bfd41c", // sha224(sample) + "53b2fff5d1752b2c689df257c04c40a587fababb3f6fc2702f1343af7ca9aa3f", // R + "b9afb64fdc03dc1a131c7d2386d11e349f070aa432a4acc918bea988bf75c74c", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "a6e3c57dd01abe90086538398355dd4c3b17aa873382b0f24d6129493d8aad60", // k + "af2bdbe1aa9b6ec1e2ade1d694f41fc71a831d0268e9891562113d8a62add1bf", // sha256(sample) + "efd48b2aacb6a8fd1140dd9cd45e81d69d2c877b56aaf991c34d0ea84eaf3716", // R + "f7cb1c942d657c41d436c7a1b6e29f65f3e900dbb9aff4064dc4ab2f843acda8", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "09f634b188cefd98e7ec88b1aa9852d734d0bc272f7d2a47decc6ebeb375aad4", // k + "9a9083505bc92276aec4be312696ef7bf3bf603f4bbd381196a029f340585312313bca4a9b5b890efee42c77b1ee25fe", // sha384(sample) + "0eafea039b20e9b42309fb1d89e213057cbf973dc0cfc8f129edddc800ef7719", // R + "4861f0491e6998b9455193e34e7b0d284ddd7149a74b95b9261f13abde940954", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "5fa81c63109badb88c1f367b47da606da28cad69aa22c4fe6ad7df73a7173aa5", // k + "39a5e04aaff7455d9850c605364f514c11324ce64016960d23d5dc57d3ffd8f49a739468ab8049bf18eef820cdb1ad6c9015f838556bc7fad4138b23fdf986c7", // sha512(sample) + "8496a60b5e9b47c825488827e0495b0e3fa109ec4568fd3f8d1097678eb97f00", // R + "2362ab1adbe2b8adf9cb9edab740ea6049c028114f2460f96554f61fae3302fe", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "8c9520267c55d6b980df741e56b4adee114d84fbfa2e62137954164028632a2e", // k + "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", // sha1(test) + "0cbcc86fd6abd1d99e703e1ec50069ee5c0b4ba4b9ac60e409e8ec5910d81a89", // R + "01b9d7b73dfaa60d5651ec4591a0136f87653e0fd780c3b1bc872ffdeae479b1", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "669f4426f2688b8be0db3a6bd1989bdaefff84b649eeb84f3dd26080f667faa7", // k + "90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809", // sha224(test) + "c37edb6f0ae79d47c3c27e962fa269bb4f441770357e114ee511f662ec34a692", // R + "c820053a05791e521fcaad6042d40aea1d6b1a540138558f47d0719800e18f2d", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "d16b6ae827f17175e040871a1c7ec3500192c4c92677336ec2537acaee0008e0", // k + "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", // sha256(test) + "f1abb023518351cd71d881567b1ea663ed3efcf6c5132b354f28d3b0b7d38367", // R + "019f4113742a2b14bd25926b49c649155f267e60d3814b4c0cc84250e46f0083", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "16aeffa357260b04b1dd199693960740066c1a8f3e8edd79070aa914d361b3b8", // k + "768412320f7b0aa5812fce428dc4706b3cae50e02a64caa16a782249bfe8efc4b7ef1ccb126255d196047dfedf17a0a9", // sha384(test) + "83910e8b48bb0c74244ebdf7f07a1c5413d61472bd941ef3920e623fbccebeb6", // R + "8ddbec54cf8cd5874883841d712142a56a8d0f218f5003cb0296b6b509619f2c", // S + }, + { + "c9afa9d845ba75166b5c215767b1d6934e50c3db36e89b127b8a622b120f6721", // private_key + "60fed4ba255a9d31c961eb74c6356d68c049b8923b61fa6ce669622e60f29fb67903fe1008b8bc99a41ae9e95628bc64f2f1b20c2d7e9f5177a3c294d4462299", // public_key + "6915d11632aca3c40d5d51c08daf9c555933819548784480e93499000d9f0b7f", // k + "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff", // sha512(test) + "461d93f31b6540894788fd206c07cfa0cc35f46fa3c91816fff1040ad1581a04", // R + "39af9f15de0db8d97e72719c74820d304ce5226e32dedae67519e840d1194e55", // S + }, +}; + +Test rfc6979_p224_tvs[] = { + { + "f220266e1105bfe3083e03ec7a3a654651f45e37167e88600bf257c1", // private_key + "00cf08da5ad719e42707fa431292dea11244d64fc51610d94b130d6ceeab6f3debe455e3dbf85416f7030cbd94f34f2d6f232c69f3c1385a", // public_keY + "ad3029e0278f80643de33917ce6908c70a8ff50a411f06e41dedfcdc", // k + "af2bdbe1aa9b6ec1e2ade1d694f41fc71a831d0268e9891562113d8a62add1bf", // hash SHA-256("sample") + "61aa3da010e8e8406c656bc477a7a7189895e7e840cdfe8ff42307ba", // R + "bc814050dab5d23770879494f9e0a680dc1af7161991bde692b10101", // S + }, +}; +Test rfc6979_p192_tvs[] = { + { + "6fab034934e4c0fc9ae67f5b5659a9d7d1fefd187ee09fd4", // private_key + "ac2c77f529f91689fea0ea5efec7f210d8eea0b9e047ed563bc723e57670bd4887ebc732c523063d0a7c957bc97c1c43", // public_keY + "32b1b6d7d42a05cb449065727a84804fb1a3e34d8f261496", // k + "af2bdbe1aa9b6ec1e2ade1d694f41fc71a831d0268e9891562113d8a62add1bf", // hash SHA-256("sample") + "4b0b8ce98a92866a2820e20aa6b75b56382e0f9bfd5ecb55", // R + "ccdb006926ea9565cbadc840829d8c384e06de1f1e381b85", // S + }, +}; + +#endif diff --git a/test/test_vectors/test_vector.h b/test/test_vectors/test_vector.h new file mode 100644 index 0000000..d92ce50 --- /dev/null +++ b/test/test_vectors/test_vector.h @@ -0,0 +1,14 @@ + +#ifndef TEST_VECTOR_H +#define TEST_VECTOR_H + +typedef struct tv { + const char* private_key; + const char* public_key; + const char* k; + const char* hash; + const char* r; + const char* s; +} Test; + +#endif