diff --git a/tests/scripts/generate_test_keys.py b/tests/scripts/generate_test_keys.py new file mode 100755 index 0000000000..c2d23c91e1 --- /dev/null +++ b/tests/scripts/generate_test_keys.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 + +# Copyright The Mbed TLS Contributors +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +"""Module generating EC and RSA keys to be used in test_suite_pk instead of +generating the required key at run time. This helps speeding up testing.""" + +import os +import sys +import subprocess + +KEY_GEN = "./programs/pkey/gen_key" +TMP_DER_FILE = "tmp_key.der" +OUTPUT_HEADER_FILE = "./tests/src/test_keys.h" +BYTES_PER_LINE = 12 + +KEYS = { + # RSA keys + 'test_rsa_1024': ['rsa', '1024'], + 'test_rsa_1026': ['rsa', '1026'], + 'test_rsa_1028': ['rsa', '1028'], + 'test_rsa_1030': ['rsa', '1030'], + 'test_rsa_2048': ['rsa', '2048'], + 'test_rsa_4096': ['rsa', '4096'], + # EC keys + 'test_ec_secp192r1': ['ec', 'secp192r1'], + 'test_ec_secp224r1': ['ec', 'secp224r1'], + 'test_ec_secp256r1': ['ec', 'secp256r1'], + 'test_ec_secp384r1': ['ec', 'secp384r1'], + 'test_ec_secp521r1': ['ec', 'secp521r1'], + 'test_ec_bp256r1': ['ec', 'brainpoolP256r1'], + 'test_ec_bp384r1': ['ec', 'brainpoolP384r1'], + 'test_ec_bp512r1': ['ec', 'brainpoolP512r1'], + 'test_ec_curve25519': ['ec', 'x25519'], + 'test_ec_secp192k1': ['ec', 'secp192k1'], + 'test_ec_secp256k1': ['ec', 'secp256k1'], + 'test_ec_curve448': ['ec', 'x448'], +} + +def generate_der_file(curve_type: str, curve_or_bits: str): + if not os.path.exists(KEY_GEN): + raise Exception("Key generation program does not exist.") + if curve_type == 'ec': + cob_param = 'ec_curve=' + curve_or_bits + else: + cob_param = 'rsa_keysize=' + curve_or_bits + + subprocess.run([KEY_GEN, 'type=' + curve_type, cob_param, + 'format=der', 'filename=' + TMP_DER_FILE], check=True) + +def convert_der_to_c(array_name: str) -> str: + """Convert a DER file content to a C array. The name of such array is + provided as input parameter. The file to be converted is the temporary + TMP_DER_FILE.""" + output_text = "const unsigned char {}[] = {{\n".format(array_name) + + with open(TMP_DER_FILE, 'rb') as input_file: + data_block = input_file.read(BYTES_PER_LINE) + while data_block: + new_line = ' ' + ', '.join(['{:#04x}'.format(b) for b in data_block]) + output_text = output_text + new_line + ",\n" + data_block = input_file.read(BYTES_PER_LINE) + + output_text = output_text + "};\n" + + return output_text + +def write_header(macro_name: str): + return ("/* This macro was generated from tests/scripts/generate_test_keys.py */\n" + + "/* BEGIN FILE string macro {} */\n".format(macro_name)) + +def write_footer(): + return "/* END FILE */\n" + +def main(): + # Remove intermediate and output files if already existing. + if os.path.exists(OUTPUT_HEADER_FILE): + os.remove(OUTPUT_HEADER_FILE) + if os.path.exists(TMP_DER_FILE): + os.remove(TMP_DER_FILE) + + output_file = open(OUTPUT_HEADER_FILE, 'at') + + add_newline = False + for key in KEYS: + # Use gen_key tool to generate the desired key (in DER format) and save + # it into a temporary file. + generate_der_file(KEYS[key][0], KEYS[key][1]) + # Convert the key from binary format to a C array and append the result + # to the output header file. + if add_newline: + output_file.write("\n") + output_file.write(write_header(key)) + c_data = convert_der_to_c(key) + output_file.write(c_data) + output_file.write(write_footer()) + # Remove the temporary key file. + os.remove(TMP_DER_FILE) + add_newline = True + +if __name__ == '__main__': + sys.exit(main()) diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h index 21737b247a..0c9fc6edaf 100644 --- a/tests/src/test_keys.h +++ b/tests/src/test_keys.h @@ -1,311 +1,742 @@ -/** - * Predefined keys to be used in test_suite_pk. - * - * They were automatically generated with the following bash script: - * - * ``` - * LIST="secp521r1 brainpoolP512r1 secp384r1 brainpoolP384r1 secp256r1 secp256k1 - * brainpoolP256r1 secp224r1 secp224k1 secp192r1 secp192k1 x25519 x448" - * - * for item in $LIST; do - * ./programs/pkey/gen_key type=ec ec_curve=$item filename="tests/data_files/ec_$item.der" format=der - * done - * - * LIST="1024 1026 1028 1030 2048 4096" - * - * for item in $LIST; do - * ./programs/pkey/gen_key type=rsa rsa_keysize=$item filename="tests/data_files/rsa_$item.der" format=der - * done - * ``` - */ - -struct rsa_key { - int bits; - const char *key; +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1024 */ +const unsigned char test_rsa_1024[] = { + 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xa3, + 0x41, 0xeb, 0xfb, 0x42, 0x66, 0xcb, 0x43, 0x5d, 0xa1, 0x0a, 0x6f, 0xdc, + 0x66, 0x35, 0x71, 0x49, 0x6c, 0x03, 0x09, 0x0b, 0x3b, 0x02, 0x2e, 0xeb, + 0x8b, 0x9c, 0xed, 0x0a, 0x9b, 0xc4, 0x80, 0xa4, 0xf3, 0x80, 0x2d, 0xa0, + 0x22, 0x22, 0x4c, 0x84, 0x81, 0x13, 0x05, 0x0c, 0xdc, 0x62, 0xe0, 0xd3, + 0x19, 0x4a, 0x1e, 0x47, 0x16, 0x44, 0x4b, 0xc8, 0x61, 0x30, 0x13, 0x2c, + 0x8c, 0xa6, 0x31, 0x6e, 0x2b, 0xbe, 0x17, 0x64, 0x60, 0xbe, 0xb5, 0x7c, + 0xea, 0xbe, 0xe1, 0xb3, 0x20, 0x9f, 0x13, 0x71, 0x97, 0x12, 0x3c, 0x2c, + 0x09, 0xd8, 0x95, 0x88, 0x6b, 0x01, 0x10, 0x12, 0x6d, 0x18, 0xd3, 0xf7, + 0x2d, 0xab, 0x10, 0x2a, 0xd1, 0x32, 0x72, 0x52, 0x4b, 0xd9, 0x21, 0xea, + 0x14, 0x93, 0xac, 0x9a, 0x18, 0x80, 0x02, 0x54, 0x42, 0x6a, 0xfc, 0xed, + 0x0f, 0xec, 0xb3, 0xdf, 0x2b, 0x54, 0x31, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x01, 0x1f, 0xc4, 0xd3, 0x71, 0xd1, 0x59, 0xe0, 0x70, + 0x9e, 0x59, 0x7f, 0x4c, 0x2d, 0xf2, 0xfb, 0xc0, 0xf4, 0xea, 0xaf, 0x6f, + 0x01, 0x9c, 0xc1, 0xfc, 0x72, 0xb5, 0x65, 0xa7, 0x6f, 0x4b, 0xa2, 0xd4, + 0x1f, 0xee, 0x17, 0xc2, 0x54, 0xc1, 0xd6, 0x33, 0x8a, 0x5c, 0xfa, 0x69, + 0xac, 0x81, 0xcc, 0xc8, 0xff, 0x51, 0x54, 0x94, 0x8a, 0x39, 0x75, 0xa9, + 0x1f, 0x4c, 0x30, 0xb1, 0x9b, 0x95, 0x50, 0x5a, 0x7f, 0x9e, 0xc7, 0xd1, + 0x4c, 0x92, 0x20, 0x55, 0x4f, 0xe6, 0x8e, 0xb0, 0xfc, 0x77, 0xc3, 0x79, + 0x81, 0x9e, 0xda, 0xae, 0xed, 0xfd, 0x05, 0xd9, 0x37, 0xaa, 0x4b, 0xd4, + 0x9b, 0xa0, 0x3c, 0xd0, 0x86, 0xe1, 0xa5, 0x6f, 0x19, 0xe1, 0x59, 0x57, + 0xcb, 0xbf, 0x37, 0x0d, 0xbe, 0x17, 0xf5, 0xab, 0x13, 0x76, 0x9a, 0xef, + 0x8c, 0x7e, 0xca, 0xc4, 0x78, 0x20, 0x20, 0x10, 0x90, 0x4a, 0x81, 0x02, + 0x41, 0x00, 0xd6, 0x08, 0x58, 0x09, 0xc8, 0xba, 0x06, 0xa9, 0xf0, 0x0f, + 0x9e, 0x62, 0x0a, 0xde, 0xe3, 0x15, 0x87, 0xac, 0x19, 0x6f, 0x5b, 0x65, + 0x77, 0x77, 0x41, 0xf2, 0xf9, 0x2d, 0xb1, 0x10, 0x50, 0x9e, 0xa2, 0xe9, + 0xa2, 0xe1, 0x0d, 0xf4, 0xa9, 0x31, 0x43, 0x7f, 0xe8, 0xbd, 0xbd, 0xab, + 0x9c, 0x3d, 0xb6, 0x11, 0x20, 0xcb, 0x93, 0xbe, 0xc0, 0x0e, 0xa7, 0x91, + 0xf9, 0x77, 0xe9, 0x5a, 0xdf, 0x21, 0x02, 0x41, 0x00, 0xc3, 0x44, 0xda, + 0x87, 0x88, 0xfe, 0x44, 0xef, 0x5c, 0x80, 0x6e, 0x4f, 0x69, 0x31, 0xd9, + 0x86, 0x57, 0x5a, 0xf4, 0x16, 0xd4, 0x84, 0x11, 0xc9, 0x77, 0xac, 0xec, + 0xcc, 0x2a, 0xec, 0xd3, 0x4d, 0xff, 0xc4, 0x49, 0xd0, 0x3b, 0x2d, 0x1f, + 0x77, 0x27, 0x6c, 0x7b, 0x7f, 0x00, 0xc9, 0x02, 0xea, 0x1e, 0x87, 0x7b, + 0x5a, 0x67, 0xc4, 0xdb, 0x6d, 0xc4, 0xc5, 0xcd, 0xaf, 0x04, 0x81, 0x23, + 0x11, 0x02, 0x41, 0x00, 0xc1, 0x1d, 0x6e, 0x32, 0x05, 0xc6, 0xb3, 0x54, + 0x89, 0xa1, 0xce, 0x0a, 0x30, 0x3c, 0xc3, 0x30, 0x1d, 0xe6, 0x0e, 0x5d, + 0x07, 0x5e, 0x19, 0xd8, 0xa4, 0xcc, 0x92, 0x3f, 0xc3, 0xcf, 0x30, 0xae, + 0xb1, 0xd7, 0x94, 0x7a, 0xf3, 0x98, 0x99, 0x40, 0x35, 0xe3, 0x27, 0x20, + 0x6c, 0x0e, 0x77, 0x3e, 0xc7, 0x13, 0xd5, 0x3f, 0x59, 0xe3, 0x76, 0x6e, + 0xc2, 0x8b, 0x57, 0x47, 0xf6, 0x69, 0x63, 0x81, 0x02, 0x40, 0x78, 0x14, + 0xa9, 0x86, 0x5b, 0xba, 0x71, 0xcd, 0xf8, 0xc6, 0x8a, 0x0f, 0x8f, 0x93, + 0x36, 0x3f, 0xa5, 0x0c, 0xab, 0xba, 0x36, 0x6a, 0x19, 0x3e, 0x19, 0xb8, + 0x5f, 0xce, 0x96, 0x3f, 0x19, 0x1a, 0x88, 0x44, 0xbf, 0x57, 0xac, 0x6c, + 0x6d, 0x43, 0x2b, 0x1d, 0x4d, 0x3c, 0xa6, 0xd0, 0xf6, 0x57, 0xde, 0xfa, + 0x55, 0xe3, 0x1c, 0x99, 0x34, 0x8f, 0x66, 0x48, 0x75, 0xda, 0x41, 0x1c, + 0xe0, 0xe1, 0x02, 0x41, 0x00, 0xa1, 0x87, 0x23, 0x89, 0x69, 0x7e, 0x0b, + 0x69, 0x03, 0xac, 0x76, 0x05, 0xad, 0x42, 0xe9, 0x3f, 0xfc, 0xe7, 0x03, + 0x49, 0x8e, 0x0a, 0xcf, 0x74, 0x82, 0x7f, 0x00, 0x43, 0x14, 0x7e, 0x0c, + 0xce, 0xe7, 0x8b, 0xcb, 0x94, 0xf1, 0xae, 0x0b, 0xf2, 0x53, 0xfc, 0xa9, + 0xd1, 0x45, 0x95, 0x43, 0x0f, 0x16, 0x67, 0x52, 0x3f, 0xb9, 0x0b, 0x3d, + 0xc3, 0xce, 0x82, 0x69, 0x90, 0x35, 0xa6, 0x15, 0xef, }; +/* END FILE */ -struct rsa_key rsa_key_data_lut[] = { - { 1024, - "3082025b020100028181009a1c55b1d24441a3a752f8e9d08b3392f2e95b" - "741468627cce9eee9c089928b98f77a1f3b0e4abb35552838071e4f853a5" - "b9dd04ca939240dd66632c48f15fdd6186249fc0043ef52a97d7bb6fecf4" - "be5d0e6aba78731782b8f070efdf4853d7f44ce58e89855a92a0274c007e" - "cd21de781ab4ae67a89774d160165b2000ee0f02030100010281802616a9" - "b15cd404db13404507d8c486b723753c66a8a291f0e1ca5313da662c340c" - "7ad75a98d6337f8baf6c93e2d261f39e8a9ccf11d83e35ece260d171a7c2" - "76dcf28aefbda457fac13fc85d154325ad339d7afae2c4dff93ad58550db" - "3e7cdd0bea9f1f4ef96a560f942924c0b19780a702b44990caad692346f5" - "bf45295091024100c90be3f126e0a4b8ac560bca99f3bd980842de6f90fa" - "f1e32bc9b029efd7ae8a5f6defa8195e3d3c70ebaa91d2cee080a93d4e7e" - "7f89dea09623dc7ce7aa8351024100c43c242651b315de5f10c0923dd0e5" - "e8308b2e57a9a6f71583ac20d65d12bf3f0b63a86ef9a4e093376c9d48ee" - "ab2c79f4d6a144ff43304912f8806ae29c435f02404d426d8141c0786ca3" - "8599986d1b36d3d2f0e78c1639e974b4621879b53abc4f5ea6dfbf48a867" - "7defa310f462ffaf54a234f61234aee5c7ee8aaf73ac8f6151024019076e" - "b8f07cbe1251dfca201d005302ad86630fcd54bd792205475ef01a1f0884" - "845e8c610d1593d162ea20ce4848f0f93892f340f7a9e5f8247804aa08b2" - "5302405f19b2ef1b2452e9a5edb032b673bd3e277ebc3f777a922b22c913" - "7d4028626b0445db61f42a99b4e5f28c3faf9a774604db172092eee0fdef" - "9526f7aec8a856" }, - { 1026, - "3082025d0201000281810344ca3e3712ee43d1ea5d493baa485d94fee503" - "323d37dc49b907b11b6b534669b2e572123ab6b5b8223b87e22d60c3be86" - "19f6a39f1d76f581f4dda46701628a6dff5316c6efb81bdcbe2cc20173cd" - "75c076b7ec84a61b6b80cffc16fa045cf68346013ed639e93708bf264072" - "63bc6a39ace26cf0eb24e2c0e6597fbab1f9bb0203010001028181010d06" - "b085e8522dffb90790d9dbdf342708e3fbe915017693452791eb2cd0331d" - "1c64e40db44eb591a37fdc29fd48d4e5d61b56ce3803b3112f5cd83d58d8" - "7b22b818641bba62adf3d5ca44f8523221b1068639ad865e7a7e6fc69aa2" - "1091fdf1a325d1b2c6a0ddd1f27883f01aa15b0b193311d357776b6ce52c" - "51ac1d8c0601024101ec7ae8715bbda8d4db6636396c1582e8e234275dc9" - "d272b0c31848f96dd201f4cc01ac857e25ce2b316ae1798c83a9786c2f8c" - "f71d3cbf2db13861814c9ea481024101b2fa7cd232925b355dda2d5f10a2" - "f0a05aa91ba74be5c088444d681e1dc0b2c85acfec84c1470233aa4bb5c9" - "db0b48853a410eb7d58b07afda91c54012da103b02410169dcc9ccf986fb" - "76241c0f7dd3f05e777636b23254e88083676701bfdd34f1610941b59d85" - "1a8c49ea8ec94c41b640a10e8546041184a04917ae00df3c08598102406d" - "90e2f81f7cf6348f1b71ea4c4a7eca258c0b472cbb06b04c642321d2e4c3" - "23ec9c0b3bb563a98e520b18136c757f22eff58b3b8b32a61109c1462a49" - "955c1902401e737a46f09dbc770e7c6ee0b1cce304a8d5bb93d300020c86" - "b0ce9fc2296307959a7f07ae859c94e9e57d511bd992080e8aa23f5e7b97" - "47c42bbda86f3c6f06" }, - { 1028, - "3082025f0201000281810aa49a11be540d741e513621f39d1ecd72a7b020" - "d50272d5fbff59b638770f4abaeecc3240c8f8fadecf1a2d4a23d47ba702" - "f5c92db1533b835c768e0d395c43931d7525c56aa71266a5dbd7b4c87c96" - "52536cd520e61762573274897f3ad77b83f43584660caee3fe3a9fa27b3f" - "50d71409feb01956faf9b966e1b08464f0210702030100010281810105c9" - "cbf4a6acd840657b370dea45e065a8d9127e850ab5a6cde537cdfb1a9c0a" - "941148aed2e0a172312209c1fae95aac346b9b55e998deba03735cb8c68f" - "27ea64e6f99d86428a80176115b2d6f5e12d7b9dce5cb68570968f876c69" - "762ab664be06d4590c2a168c1180e78ba8787110fd61f0043bd99206b0d4" - "3ba39a14bee90241037e44c625d91b753c86804b18f22851b6ca2f50d8f8" - "ee71bf53d18e88bbd5aa9fcbcbcad3b415f115a38d9a1858300783343ae0" - "8ccdaa64baab34fca617aa303b0241030bf6fd42a34f02155a61667a6482" - "33a3d683288b36c7530ed1bff81f2ae2e55ccd7c9d28c968568bbbd2b0ff" - "5701335abf1f9785395b136b539a4ecefc8f71a50241031d89986e08c244" - "3c46780481aaf5ea6a6ac6e803997e8e53641d7050e1b41d078669a9ea44" - "a18cf10f7c2a01ac24a98e89f6386d5abeac370e99a2f93e01ba21024101" - "ec7b1efd05aaec90d909a9305ce84d7d0504ba03f529b48b25ebc5dac034" - "96489bc33464bd8fb11df811980b123fc2d268dda4c9cd2671c391fd5c07" - "9c3762b5024103632899c6c15aee731835c5ca4a75f2236e86a1f701be19" - "386d4218d346c371c2b9c08930abf423aca3dbf1e7caf79ecdea6aa66775" - "7e7dce5852faef59fcfc2f" }, - { 1030, - "3082025e0201000281812ebe4c4d2a6cd165ebbc6a4bb53dd1bc96dab169" - "d6c34ebe5a68f3c3b2d385533045901db0dffc9aebf13c44a6aab2a81f63" - "0ed26ee2d4b19bd49abceff7331cdf6f6aae6075631bf72236ff7e546270" - "a8b85cab40589ec7c767114aaa3ddd1b35fe999183f21ca02bf3a840422e" - "1b06a723fdd0c55c7dfaa0345e2f918884ddb90203010001028181016f27" - "a7d8778ff1e3754657a8a9cb15266b1db56f22fd4d5c3875d3992ee1f0dc" - "52ce14b322c9928bf9bcb7d330a54700f6339eb8f5ef1667547323a7ede5" - "9cbfecda40b4976795aeb53729f09455bd86c4ff6c257dfe8ad0d63ed1a6" - "5f7da87c3acdbfe27ccc423739859b860ea28bf004f30be5f1543253a572" - "43a5b426d98102410703b35b5221d562f0732901c9b67d2ee7c33c89e03c" - "750f0a5978877ba7c2149c10e74ef339500536adbe18e17084bcf557513b" - "f02f933713fe5065b69028ef59024106a9f2bff289987d993b27a541eae6" - "1a1dd3cf34cd174cb148f59f0e70bfa5b0ea18e64e552379a92d321e37cd" - "1a9dd5174d2f84afd83778437b6d9ebe5f42f561024056db7c1552f1a161" - "84107db7a60e1410bdced5d474d82cac117bd501d4317d11b77798c80703" - "a9dce53686b990d9bad21b3120b713760979fc1923725b32bfb10241030e" - "8c936e7f9ddae7a2922225a5ca5dea96d1f327ad6b79dbbd08748855f17c" - "c13620d7880898f3790f077b937385394dd2135d2b88e4911f6b8c3288a3" - "8c44a1024101e712867c169a6f391cd8f3ce6d7672ed7e90e6590647ebb8" - "9bf55924c8cc487a91307b0cbd6f6a5e781dd5b160ac7efe0aba5b2757b3" - "b7b00881c25070dda042" }, - { 2048, - "308204a302010002820101009912d469d8864df984bd8ea0d1a4e9bef9b3" - "d3ee7249801cd28195d1f3cd71b12aed430dba25012f69effca752337897" - "ae3b29df272d1d5dc6495553d0398f86eddf4bd2084f379aaac0f05d33ab" - "f6279d495394034c8e8ee5aeb6f0da9404eb8c773f8bec6a3199187ed681" - "55dacdc9c1db2f73dfde416ee63f87786da3cc94631ea2adaa3185fce12c" - "1c05659e5addaafcab1b7484a823cdfadab90f8555da052bb92c61a96bb6" - "2c2b6acbb06e0b01e65605905e42a64def5cc29fc2c04275f4a0a07bcf7a" - "49978c820a4710b605ef15c8aa0678636f73f99d79f235548856c8bbf104" - "344b209e46bc14acca95050cb4aac1cfc0a28c9d9dc05ab3ee0cf40d0203" - "01000102820100156455048cc2aa2b7c723c383bcc12f18236701ff2df54" - "34d2f352a37271abd99150f28dbccd96969074be2788fc91f60a9e9089b3" - "d121793d307ae8f960cdeed297e1e1f290d589bb22b704a367bd0108c15a" - "59854381e9b4edff7975e679308ce30e61a8d2a767488dd33ee4676d5a6c" - "89cbde22f34dcc2887c8d01aec68f6bd7551b8155dfc8cf10a3f43c8ecdc" - "e55ade57f0041d58878bf7420e8d945bbe858829f55d86b6fe466ce135cd" - "34db478a16125a989978266ed38b8f8c204f3873cee95191c41549296ee5" - "6e8e7300f9b35700f8aed9c0a1a545ecb9f4d09bfa5c9044bc307ad30ac0" - "c6e27b6ce9ffbeed6213110a9aa821d0c7e85cb5ad349902818100c7feea" - "fc0076c99dd4b4259fc84c12f4290a6f468e538b6fd8d8aeea4ccc9fe3a3" - "83add1964e13bf5b0e081fa401155938962b7a2420800f2e4926ca57f735" - "31b5ac1beb22fa98b02640ee67c63ecd250e93a76791c1789f939b8bceb2" - "26c2e43b8d1590d401829d83df5749744031d5839e7aa9833d1fbad5a504" - "75af833a8902818100c3f033c251d3c857eebae23547fedf350103c91f7a" - "a549c37ddec96003691a652c53b1ba46dd687117b3a6007fc340c46ad110" - "8d6d5c096a7de8f3773ac866352888f17a7502cf45f3f3d021d8b5719bd2" - "98c7f59e3f4f675052800c653be810ec4c4d7c9481e59205d2b0e628e436" - "1a4ea4375a84a71c8de549ef546a68fc65028181009883e43b4d3749459d" - "81cbf76fcde3de62b5dc6a17fbca27ff5c2ef7ea9d5989459713a4f35493" - "66a84fa90e4809b37818d91c4ac6e62a0269afcb6f1f6a1c1cce8873b9fb" - "30d3e3f1282f26e05de01fd45ff197dfe584d15cc58ff68e9154aaac6748" - "fceb5043854f9db07909b832c8bad8ce7e1ae1302350edc8dade7fdad102" - "818042dcc90cda97869a5b20f2e873b509be30a6760f83eebb89367ebc01" - "43a8ae1530572f22fde3b82c3f8652738125c40842db2ce6d616be2fd4df" - "95956e3dcc82ff5e1be949dcb7968b74fbe550ea39e68eab0c3148db19e1" - "8b8b5b9edf3cde28483a91869db6e5fc3a78775d533eed2775069ccd0acf" - "6bf30ff776f03b8faff1028180613011e3c3c1e97ed0d4c05f64d46b73e8" - "c93ff671ab2bc497aadfae36d803c3e2d7e2ae6a99c36ceebeb86dd5ccd5" - "d6f3304821b44e2ee2bb5540f9104d02e7cee6315024096120fb12a98bc1" - "1f4f08acf31e6f0cf75ec44b046382344eb1a299a3996ca9b63f71b9fc96" - "9f9c76846382c7b026c57cdfdeb53eff85b4f6b373" }, - { 4096, - "3082092702010002820201009ffa9b03aab78e5980223bed1811991bf244" - "20e7a277efc45fb01e9d756eba9e57b17b7f198d03e5731f7c8adbcecd6c" - "c75c1185228aa3eb650e3df03d10b8c4ee4794be04d48f304a3884589789" - "8baa4aae806ff9645318345bb532c7aa85be1de3e4d87873fb709a9af4ed" - "984fc2d8f42a98a233204eb50ecce01fef9eaf0ff82324dea54ea7cc909b" - "164a58c71f8b47edb097099cb27ee2ba1cd7c37dfbf28e0685a418b1cb5f" - "e6cea64d0d3f8b713a628fa9afc385f067323781e72f91a8a1808721ee4d" - "369d551f5cbdaadd9d1131ad5652ef71d91be6e701852ad7cf666eb7866a" - "ea556a44087f76a2ca120ca53ff5abf6771884f60546d9373328c7150b41" - "827207cac3fbe295e4361f4c713f301ae095d9cc521dc1a08828320bf6bd" - "7f63d1f7b81702f4738c6aa7992a1a34550a41ca794326e28c9d3a5997fa" - "af907bbd832a2e704ce6f867dada308cd28a06b37819a04f7c57fb10ad44" - "4f7189ff64a58ae419b1623792704db86a8b75ea5deaae967837757863b1" - "b43b55a27be101d714c6f7019a6339470349632b2ac5ba66258f8db5b80f" - "fda6b2b078b9716d704f8d1abd90b0364474c41dbb67699fe753f6c37a89" - "9887c0eb76f8db872329f2250c30917561242a64bbf341679a0d3e127bb7" - "66cdba9a0ae4f15e6220571a083fb9c487c9deff3b029653783a3c205e3d" - "5e9aaed05e4ee8b0e13a03a9fac502030100010282020010fdfc531261f6" - "c3b8e169fe0fed6696da4fb4330645b8f8e1b5023b754ab295b8f8c80642" - "ff806771a7e98192414ffe7ada639e01823a50f965dedc5290212001b326" - "b05c30fb988479a64d06a37c6b350d7de4e6d76a200b07a6a26324d099d5" - "f0ebd0b65293656d7682076e83224e0af92f4723290e531ae455f5ee6cab" - "6985d0adccdc4013809de76b21b0764dfa6c4469da51120cbf7f738736bf" - "b3f4fbd96c05ebdd179d636d4f8bc8695cd381ce52c3b1a152a23a5babb0" - "cba273a204084b6f8f0211bf784c9f4d2974299fd240b58992bb8e1b2264" - "8f2ad12b30cafdb54ad7032a2ab263d1874061a016f4b2e4ad427ba640bb" - "76aa2ed14994ac8320a4d81ba570d35184956f049be8c6c7da7938cc5105" - "c07bfba6b990687b94066def18ac3525c139707ae781c1e66931241137c1" - "0854ee00a74c9c52dc67f1964721891b8302dc4719c60f10af993d69ddce" - "b128da65a36f4d0829e84c74f3570d8db747a6db352c22061c2603f255f6" - "72f11f11c6f7bcecbbdc16f3995c87e5b840fba8b65a24043fc6dd0f8e1c" - "24b3cbb047f56813073b6bb81996f79452ec2aa9ed995bd5d0d6fe4a0315" - "2eac8e4f2ceb7ee4aece6760820f0e787d9abab312a435daf8dc3e28125e" - "f67107844dba0136a2d5d4b7ce6fc7d5159419d399eb42c5e7818b437c1d" - "1a1d4551358ad5e5dc2a757e9f1f12de1a2eb463b748b6c3ad0282010100" - "e18b2f5736dccd61f604efd0c1921186d188c54849c6f78aff4964d1fe27" - "c0727f057d8bb2e5b86efcc1121e4a791d84acd643c38a75fdcf38167260" - "948f23cb0f40c555c1edebf1582439e7b404d9df48de9e6100d9c0084eb3" - "59716f2f6ebdebf17c1438ff5a2864b621e79b1b28e7f6e2e7893fbaa1c5" - "19fda27e900f7b15f3fbfce98c7b5dac4e86701346a5bb84a5f2330661d2" - "677c8ff47b65851e596334e4d057c3e1bec0df01313919f68a20ac3fc3b8" - "df5f52ee6e21b9698dff82d1dbc37b2f9cb12036e2d76024ff7a586327d5" - "1fad8b7c1d99163827caee7b61e908b0fcf51d3264b8a11abd121993676c" - "10d715a345c197d0f4f42e85f74647b30282010100b594e9e77eed5cbb93" - "8234af03d2415ed0f8cd99e86033799d68b6547986f27131550d0bb45831" - "7ccf1841f0d398fd14c75bf57de7d6a096642b9864e2b07e5248b1f48306" - "2fdaa683a87a90aa05e3bbacc4b8eed9929b73eaec5ece7424af6e751afb" - "348a28e14a3218e700f0069d1330324b71ee9ba0cf516586c8f0a139f022" - "b612173276b40646b2f3d1063ddebee38daa61248ee58594da0168c4382f" - "2fff763cdfd69c5765d6f75f7d1d6a1db6cfd894118451fe58ded97f54db" - "703e6ed770452e70c6988238ec0ed599bd5cc550874344873e1040374c6d" - "373a485c2d2adeac3b89a7615542e0833433c119b1c0c784c76446f68e8b" - "9a2fb7d20f77a7028201007f3f96bafef1fe52298a497f1ee6f94a760753" - "3ee09907ea7cf37c95596e360ea30986f67d3d4c1c1a3017b7cd4e9dcfcf" - "efa715b895af57ed0e0503e66d07c5b5da563b770973d79b61fce573d454" - "d3bbfa15a326e6b3883c56c5bcd0fd12dec6325d4dcf8689e84641d7c922" - "e264e6d28cdc12bc48e0a22272cdedd7fb53f763cb24bae38e6aa01f418c" - "13e404f751f48a3c2d7a9d49d3a6284a4251a378cd16f78d7026ccc3616f" - "afed8488d866bfde4eaf6f2b5f4d9bc5b8f331d17279ed4aaef45e3d6a55" - "8181e3ff93802c179801ce256c3549162ddbb25d090a19c478c4758e9200" - "22015f854d5fa4c997377f69d4df99596ecae7927bfd8f899e362f028201" - "000a34532cca4a4692d80852339fb05a321ce64e8f9eaa815a0d498c2d95" - "22cb4f272993711bf274dd81b9e842c3716e8f93608c9c45c21f06349cea" - "9488d4c854917746b97248902e196a077147cccaee8a1808188c2b9c06d8" - "a5edf2063ee588fc95c6963e496bd7c296f9ac68d0c65504b95eda0941bf" - "b8c6e740badc2303618661db0468b699095d41c347f4e4d736bd0d020d31" - "83c24c4e802de2185cdbf203963e7789d501685cbb4c2778d6b4d2c83d70" - "9cc765e0385855babd2713d8be5be7184c32d4464fd32918f052127d3b2d" - "7a5c8266634b80805b102c315f4da6d028f15eeb2e77ded5c24e3d49c749" - "4d5efb177029277fc5a4fcc63fbb53593302820100689328a8b7c6de5b11" - "1934790c4152320c1a63a090bbb5d243517fe1f0203729828806897f157d" - "57d02333dc2c56a846eb286412473bab9ab68d144b991a3af9fee228c7ea" - "904d6b3aef2e42245abf4d777385b877c86a9b16b5d7c9cab1221576d88d" - "ee4993f130236744acbbf45c6bbd2dcaafc00f2cf36537e54e8a99ea8084" - "801d4f403376c0339de7f3867f2360af6fc0047cc85359669b90156a31aa" - "fe34570fbe1342f9e5743d45646aab7009b73c9e63b7a458c423f3b8de81" - "c83de5b0fe60bb7a235d7d1a931cca548639ed4e629386c7de98d8840ba2" - "bcb02d8adc59e179b27a4705426b313497c43aaacc953ae92c702af10a2d" - "a5db9b0688c41f" }, +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1026 */ +const unsigned char test_rsa_1026[] = { + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x03, 0x17, + 0x5c, 0xd2, 0x6b, 0x55, 0xf6, 0x1a, 0x0b, 0x42, 0x33, 0xc8, 0x18, 0x08, + 0x26, 0x31, 0x35, 0x04, 0x0a, 0xdb, 0xab, 0x0b, 0xd9, 0x49, 0x70, 0x59, + 0xcb, 0x51, 0xce, 0xc7, 0x14, 0x7c, 0xd6, 0xdf, 0xaf, 0x26, 0x71, 0xac, + 0x1f, 0xf9, 0xae, 0xa8, 0xe4, 0xc5, 0xde, 0xfe, 0x84, 0xbb, 0x68, 0x07, + 0xa9, 0x48, 0x82, 0x83, 0x5b, 0xbc, 0x2b, 0x75, 0x32, 0x51, 0xb5, 0x98, + 0xe0, 0x9b, 0xa2, 0xbd, 0x0f, 0x29, 0x96, 0x58, 0x5d, 0xbc, 0x80, 0xeb, + 0x9b, 0xda, 0xae, 0x8c, 0xf4, 0xea, 0x3e, 0xa1, 0xf4, 0x7a, 0x97, 0x13, + 0x42, 0x74, 0x74, 0x47, 0x83, 0xff, 0x31, 0xf8, 0x82, 0x92, 0xe3, 0xb1, + 0x38, 0x30, 0xea, 0x17, 0x67, 0x4b, 0xb6, 0x69, 0xdc, 0x5f, 0x17, 0xf2, + 0x94, 0x3f, 0xc8, 0x07, 0x1b, 0x10, 0x81, 0x8b, 0xd0, 0x2f, 0xfc, 0x8f, + 0xfb, 0xab, 0xa0, 0xa9, 0x02, 0x3b, 0x79, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x04, 0x29, 0x3b, 0x62, 0xcf, 0xe5, 0xe6, 0x60, 0xc1, + 0xfa, 0x28, 0x20, 0x30, 0x39, 0x2e, 0x63, 0x0e, 0x60, 0x95, 0xd6, 0xb5, + 0x67, 0xd7, 0x48, 0x6a, 0x26, 0xdb, 0x55, 0xdd, 0x34, 0xea, 0x92, 0x54, + 0x44, 0xc5, 0x4c, 0xc7, 0x50, 0x51, 0x53, 0xfa, 0x61, 0x5e, 0x5e, 0x95, + 0x9a, 0x05, 0x77, 0xd8, 0x5d, 0xaa, 0xe7, 0xbc, 0xc7, 0x15, 0x4e, 0x69, + 0x31, 0x25, 0x8a, 0xd7, 0x81, 0x25, 0x3d, 0x22, 0xdf, 0xd1, 0x91, 0x78, + 0xd2, 0xd1, 0x24, 0xb9, 0xa6, 0x9a, 0x12, 0xc5, 0xe1, 0xfe, 0xe7, 0x94, + 0xad, 0xbd, 0x9e, 0x6b, 0xe0, 0x97, 0x32, 0x33, 0x6a, 0xae, 0x98, 0x66, + 0xd7, 0x96, 0x7a, 0x72, 0xc7, 0xb4, 0x69, 0xef, 0x3d, 0x20, 0x37, 0x48, + 0xad, 0xd4, 0x92, 0x8a, 0xc0, 0x3f, 0x08, 0xfc, 0x8f, 0x61, 0xcc, 0x60, + 0x60, 0x49, 0xa7, 0xe4, 0xa0, 0x62, 0xf5, 0x7e, 0x19, 0xb5, 0x81, 0x02, + 0x41, 0x01, 0xe7, 0x1d, 0x98, 0x00, 0xc1, 0x36, 0xa4, 0x3e, 0x84, 0x3f, + 0xd1, 0x43, 0x9c, 0x4e, 0xa2, 0x62, 0xb2, 0x6b, 0x5d, 0x93, 0x5d, 0x41, + 0x51, 0x46, 0x6a, 0x75, 0x76, 0x97, 0xcc, 0x38, 0xa9, 0xeb, 0xbf, 0xae, + 0xcb, 0xd8, 0xac, 0x6b, 0x7b, 0xfa, 0xc7, 0x37, 0x6d, 0xc0, 0x7f, 0xb2, + 0x84, 0xaa, 0x6a, 0x54, 0x6f, 0xd7, 0xd0, 0xf6, 0x0c, 0xe6, 0x11, 0xc9, + 0xcc, 0xce, 0xa6, 0xb8, 0x66, 0x69, 0x02, 0x41, 0x01, 0x9f, 0xe5, 0x0e, + 0x78, 0x9f, 0xb4, 0x44, 0xba, 0x29, 0x74, 0xe7, 0xdb, 0x98, 0x44, 0xd2, + 0xa6, 0x03, 0xa6, 0xe7, 0xb4, 0x00, 0x6e, 0xe1, 0xcf, 0xa7, 0xcd, 0xe4, + 0xa8, 0x8e, 0xa7, 0xb8, 0xcd, 0x68, 0x23, 0x07, 0x6f, 0x47, 0xb9, 0xcd, + 0x59, 0x34, 0xc2, 0x9e, 0xc0, 0xb2, 0xed, 0x7a, 0x9b, 0xc2, 0x3d, 0xab, + 0x64, 0x36, 0xdd, 0xf9, 0xf2, 0x2d, 0xc1, 0x42, 0x4f, 0x11, 0x4b, 0x2a, + 0x91, 0x02, 0x41, 0x01, 0x73, 0xdd, 0x4c, 0xc0, 0x2e, 0xc0, 0x37, 0x0c, + 0x9e, 0xcb, 0x55, 0x46, 0xe7, 0x19, 0xc4, 0xaf, 0xd2, 0x03, 0x52, 0xd1, + 0x80, 0x1c, 0xb0, 0x1e, 0x30, 0x81, 0x71, 0xc2, 0x9a, 0x9e, 0x1b, 0x62, + 0x24, 0xd8, 0x1d, 0x38, 0x51, 0x10, 0x50, 0xfa, 0x76, 0x81, 0x23, 0x21, + 0x14, 0x9b, 0x44, 0xda, 0x10, 0x08, 0x5b, 0xc5, 0x86, 0xf9, 0x7f, 0x89, + 0x57, 0xc5, 0x15, 0xbc, 0x20, 0xdc, 0x9f, 0x19, 0x02, 0x41, 0x00, 0xd1, + 0xcd, 0xb6, 0x98, 0x29, 0x50, 0xc2, 0x5e, 0xfb, 0x6c, 0xeb, 0x4e, 0x3f, + 0x29, 0x70, 0xee, 0xa8, 0xe6, 0xf8, 0xfa, 0x38, 0x41, 0xb7, 0x8e, 0x8f, + 0x03, 0x71, 0xf7, 0x8a, 0x47, 0x98, 0x15, 0x9f, 0x14, 0x14, 0xbb, 0x11, + 0x7e, 0xec, 0xd5, 0xb4, 0xa4, 0xfd, 0x7b, 0x0e, 0x88, 0x78, 0x92, 0xbc, + 0xd1, 0x69, 0x75, 0xdb, 0xab, 0xed, 0x5c, 0x3b, 0xb2, 0xc3, 0xa5, 0xa9, + 0x7e, 0xb6, 0xd1, 0x02, 0x41, 0x01, 0x5e, 0x54, 0x53, 0x64, 0x9d, 0x04, + 0xe9, 0xb8, 0x6c, 0x96, 0x61, 0x85, 0xfe, 0x7c, 0x5b, 0x81, 0x46, 0x7b, + 0x92, 0xb7, 0xb7, 0x0a, 0x84, 0x9a, 0x1b, 0xcf, 0x9e, 0x56, 0xcb, 0x25, + 0xd6, 0xe2, 0x7d, 0xb9, 0xf1, 0x7e, 0x25, 0x34, 0x2a, 0x9c, 0xc7, 0x78, + 0xe8, 0x0b, 0xea, 0x04, 0xf8, 0x2e, 0xb0, 0xd5, 0xed, 0xb9, 0xdc, 0x71, + 0xdb, 0x9f, 0xba, 0xe6, 0xe5, 0xbb, 0xbd, 0xc0, 0x7c, 0xd7, }; +/* END FILE */ -const char *ec_key_data_lut[] = { - [MBEDTLS_ECP_DP_SECP192R1] = - "305f020101041856ceb8c9bc8e6562242362d5176916c8cad73cefde6242" - "faa00a06082a8648ce3d030101a134033200047bdb35c272027741d687ae" - "31007a4ed936231556747cf3e916884db6b08cece5a4923ce964b8bcd195" - "b0f53e01d1b9c4", - [MBEDTLS_ECP_DP_SECP224R1] = - "3068020101041cab5caf66f71236bd1c4c4825588c531682b8019882a025" - "ed3814e32fa00706052b81040021a13c033a0004260e79423142a44ce9e5" - "b78144c39e3d2b5b2670af673868083416745e57be42319d8ee6d034ef9c" - "535c7f6cc45ed5026fae66c0dd1298a5", - [MBEDTLS_ECP_DP_SECP256R1] = - "30770201010420b52b83eb4cf15f4fb2bdef164f521b92a4c7329ce83dd2" - "b24fc4080980603b07a00a06082a8648ce3d030107a14403420004dd40ad" - "3c112abb3e7beed40ca349c9a755f930968722865c27ca5d0ca884220b59" - "9e6620019ef8fc9b3050cf90ce8cfb5125db447c21bc567806d39e49b181" - "01", - [MBEDTLS_ECP_DP_SECP384R1] = - "3081a402010104301b3640d9ada2984b5c4406c339fa859c374aa1692990" - "547b0897429689d4b226d20b1ca20fd32d89e853e3b7644dffaba0070605" - "2b81040022a164036200043315c6d4276e8ab4b74b4069bb7a403f4a62e2" - "89bfbfe39738dee4064d7ae22ff32520316f7230302db8fa7b0434ada5ac" - "3f39acd252b5ec2eadbebf55ba7edb2265026a33bae2dbf59314ce081277" - "3f08faef9fb4786d610a8c1c1f348e9627", - [MBEDTLS_ECP_DP_SECP521R1] = - "3081dc020101044201300db372ffd5307db8016608a097cb4ac8440e7419" - "589566518a9b8b4506aa00ddd21d736284d31e02ae3064a0d2b1c3de08ec" - "b6285534e13fefe456fde0337572a00706052b81040023a1818903818600" - "040183a4329055ced8534460a22f00271dc55b9857aad6886355bcac683d" - "461a2281190546929a8e64cdfc1242fb6e3a460b0821b4197b42a0b18253" - "18c59dc74eabbd00c74c4bf20494c05183012229df3da41455673233cb32" - "877f0646b66fc75e4d72ccdc60e5ceb670ed4dc2773916738e2530a3f5fd" - "2c14ec512171e6de772dc21c27", - [MBEDTLS_ECP_DP_BP256R1] = - "307802010104202a248a6523ec929566b473d189d63358aeaa29385c56c4" - "ed52fee5bfbef6705fa00b06092b2403030208010107a14403420004606f" - "09a54c0f6d52ff0c7429ad085332d1e03e60370cd6a7b44c1a15668f28cf" - "14e35f242ae5c7ab089663de47f840b947a7ff4b2b72a820a0136154d6c6" - "c87a", - [MBEDTLS_ECP_DP_BP384R1] = - "3081a802010104301a4da2c6c462c6f115f3a91cfa6006bdb549e4935364" - "b2199d7bc872f1eb9bfcfcc3c997a1ac0064d581f32b3899ba3ba00b0609" - "2b240303020801010ba164036200042d4ed26c2aba8d7c49d52e1e6bfbe6" - "36583f22e50cc94c64442811f504db9f1823c43427ef5fbe9846842a66a7" - "20a1108ac13b1ff05a5d710a51a238ac89ce8f44c0139b9fef4d2c298f2e" - "187bf3c3e51ec05b32b27195d884b166b6c803409c", - [MBEDTLS_ECP_DP_BP512R1] = - "3081da02010104406f2730c70a35827f5a8ff0028f7ce3b28cf9d2711ad2" - "269130c5c72eace8d12efb0afd2f099548afa55bd94dd7361ab63ba1bea0" - "c7d295a67498107cf89acfb3a00b06092b240303020801010da181850381" - "82000464615aa207894e1059a28fc36c9f1d955b518dc668ee3a257b35b7" - "6d1b48820a0c42bf91122a96c5887633d71796d6d541a098534ad09f1f1b" - "0ebaece479e8e0284a7bb28efd1185a77a3ab8715e6e99f9591d44f92ca7" - "b4896d36a9022fdffa0cd7744f4dc462172bc4c027456d8469f41e15bbff" - "0546bac84f4edf3f4fc0c3", - [MBEDTLS_ECP_DP_CURVE25519] = - "302e020100300506032b656e04220420b0a8bd3ffeb3e2a7caa1148f5406" - "20b2dd493faff1d1cda6458822077445cd78", - [MBEDTLS_ECP_DP_SECP192K1] = - "305c02010104186a01a55cc30d77ef9962778f78af3cbb5c7fc7dd1aa9a7" - "b6a00706052b8104001fa1340332000435aa842c4bef314c579910674cf3" - "cb426ce001bdd5ca0586398634776957b1e3afa9473e5b69648ffaa65a1f" - "052be658", - [MBEDTLS_ECP_DP_SECP256K1] = - "30740201010420282608d1c6067366c22ef6ed5aa3b6e31107e6fa535f2b" - "6def935626517883c7a00706052b8104000aa14403420004163f1a8038d1" - "11cd2da34a98b8524180de6c56268cd8b2d315201778d1e7c09da090c2c8" - "da4667bd3e831f444103606875069c222bd1cc9beb84cf2989ad37ec", - [MBEDTLS_ECP_DP_CURVE448] = - "3046020100300506032b656f043a043858ab68f1e135d8d38514774a63a3" - "4c659b3ed783f8cf87531f49927c5e97f459cb324a32ab3dd2f1613ad931" - "cb3df24d5244bc7e4691f1f4", +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1028 */ +const unsigned char test_rsa_1028[] = { + 0x30, 0x82, 0x02, 0x5f, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x0f, 0x16, + 0x99, 0x9c, 0x0c, 0xc7, 0xb5, 0x63, 0x2d, 0xec, 0xdc, 0x12, 0x15, 0x15, + 0x12, 0x47, 0x26, 0xcc, 0xa9, 0xba, 0x8d, 0x31, 0x82, 0x63, 0x3e, 0xa9, + 0xdc, 0xa0, 0xa8, 0x7f, 0x02, 0x22, 0x4e, 0x5e, 0xa3, 0x77, 0xee, 0x13, + 0x94, 0x04, 0x76, 0x04, 0x8e, 0x98, 0xab, 0x7c, 0x82, 0xdd, 0x68, 0x5a, + 0xf6, 0xa8, 0x14, 0x5e, 0xf7, 0x43, 0xef, 0x04, 0xb5, 0x3f, 0x6a, 0x31, + 0x93, 0xd6, 0x1a, 0xfa, 0xcd, 0x20, 0x7b, 0x0e, 0xc3, 0x18, 0x39, 0x5f, + 0x7e, 0x1b, 0xa0, 0xe5, 0x85, 0x3e, 0xf7, 0x44, 0x51, 0xcc, 0xf7, 0xf1, + 0xc2, 0xf6, 0x79, 0x15, 0x0e, 0x0b, 0x50, 0x32, 0x35, 0xda, 0xeb, 0xe4, + 0x7d, 0x32, 0x6d, 0x21, 0x9e, 0xb2, 0xa0, 0x99, 0x0c, 0xc6, 0x17, 0xee, + 0xcd, 0xb5, 0xa6, 0x81, 0xa9, 0x91, 0x1b, 0x09, 0xfd, 0x32, 0xf9, 0xa1, + 0x8b, 0x1b, 0xf7, 0x99, 0xaf, 0xd6, 0xf7, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x03, 0x21, 0xe8, 0x06, 0x33, 0xc9, 0x0a, 0x69, 0x6a, + 0xd1, 0x6f, 0xe6, 0xf9, 0x25, 0x84, 0xc3, 0xec, 0xd4, 0x34, 0xb0, 0x9c, + 0x3b, 0x99, 0x1c, 0x4d, 0x98, 0x2a, 0x4b, 0xd8, 0x6f, 0x75, 0xdb, 0xf5, + 0x75, 0x44, 0x6e, 0xd3, 0xa8, 0x90, 0xe4, 0x54, 0x34, 0x21, 0xfe, 0xa4, + 0x2b, 0x97, 0x67, 0xac, 0x10, 0xa6, 0x80, 0xc2, 0xa9, 0xec, 0x9f, 0xd7, + 0xf1, 0x9c, 0x47, 0x6c, 0x1e, 0x9a, 0xd8, 0xa8, 0xe8, 0x5f, 0x76, 0x57, + 0x95, 0x26, 0xc0, 0x97, 0x5e, 0x56, 0x6d, 0x0c, 0x6c, 0xc5, 0x20, 0xd8, + 0x8f, 0xd7, 0xfd, 0xf4, 0x39, 0x97, 0xc2, 0x3b, 0xaa, 0x97, 0xd5, 0xea, + 0xaf, 0xdf, 0x23, 0x27, 0xf3, 0xea, 0x67, 0xd8, 0x52, 0x0a, 0x1f, 0xc2, + 0x5c, 0x3f, 0x56, 0x8f, 0x96, 0xc6, 0x3b, 0xa1, 0x12, 0xaf, 0xd3, 0x07, + 0xb4, 0x67, 0x37, 0x0d, 0xb2, 0x00, 0x80, 0x7b, 0xef, 0x4b, 0x58, 0x51, + 0x02, 0x41, 0x03, 0xe3, 0x05, 0x9f, 0xf4, 0x8d, 0xb5, 0x19, 0x32, 0x73, + 0xf1, 0xe7, 0x65, 0x49, 0xbb, 0xb4, 0xe0, 0x4a, 0x71, 0x23, 0x52, 0x69, + 0xd8, 0x06, 0x78, 0x8c, 0xde, 0x8a, 0x95, 0xfb, 0x70, 0x78, 0x6b, 0x20, + 0xcd, 0xfe, 0x2f, 0x3a, 0x56, 0xc6, 0x77, 0x44, 0xa8, 0x69, 0x32, 0xe6, + 0x1e, 0x58, 0xff, 0x6e, 0xd8, 0xe6, 0x54, 0x9a, 0xcd, 0x4e, 0xe9, 0xe2, + 0x44, 0x2d, 0x44, 0x27, 0x7d, 0x19, 0xdd, 0x02, 0x41, 0x03, 0xe1, 0xc5, + 0xcb, 0x94, 0x19, 0x26, 0x92, 0xdf, 0xf4, 0x81, 0xf1, 0x45, 0xb2, 0x69, + 0x5c, 0xfa, 0x06, 0x79, 0x2e, 0xc7, 0x71, 0xca, 0x94, 0x1e, 0x8b, 0xa8, + 0x2c, 0x93, 0x6b, 0xc2, 0x0d, 0xd0, 0x5e, 0xca, 0x57, 0x12, 0xee, 0x7f, + 0x64, 0xc2, 0x08, 0xaf, 0x6b, 0xa0, 0xdc, 0x2b, 0xe9, 0x40, 0xc9, 0xb8, + 0x49, 0xb2, 0x89, 0xd9, 0x8a, 0x08, 0x46, 0xc7, 0xd8, 0x60, 0xbd, 0x0f, + 0x08, 0xe3, 0x02, 0x41, 0x00, 0x88, 0x3b, 0xc3, 0xeb, 0xca, 0xdf, 0x29, + 0xc5, 0x03, 0xa4, 0xf2, 0x46, 0xa6, 0xf2, 0xc1, 0x50, 0x18, 0x41, 0x27, + 0x51, 0xe8, 0x56, 0x00, 0x84, 0xce, 0xdc, 0xc5, 0x62, 0xc5, 0x9b, 0x5f, + 0x91, 0x63, 0x5b, 0x70, 0xda, 0xec, 0x84, 0xe7, 0x05, 0x7b, 0x6c, 0x07, + 0x83, 0x45, 0x88, 0x90, 0x2c, 0xe0, 0xf3, 0x67, 0x8d, 0xdb, 0xe8, 0x12, + 0x4e, 0xe9, 0x80, 0xe6, 0x25, 0xb7, 0xb6, 0x64, 0x2d, 0x02, 0x41, 0x03, + 0x79, 0x4f, 0xa0, 0x56, 0xf0, 0x0a, 0xec, 0xf5, 0x2d, 0xc1, 0xfb, 0x3f, + 0xfb, 0xe0, 0xfe, 0x2b, 0x61, 0x0f, 0xa1, 0x25, 0x2a, 0x57, 0xb7, 0x25, + 0x7e, 0xa5, 0x08, 0xff, 0x04, 0x37, 0xac, 0x55, 0x03, 0xfe, 0xde, 0xdd, + 0x3a, 0x41, 0x16, 0xd1, 0xed, 0x23, 0xce, 0x95, 0x2d, 0x72, 0xbe, 0x52, + 0x14, 0x32, 0xaf, 0x00, 0xef, 0x0b, 0x95, 0xd2, 0xc2, 0x44, 0xa5, 0x06, + 0x2d, 0x29, 0xff, 0x31, 0x02, 0x41, 0x02, 0xc6, 0xb7, 0xac, 0x1d, 0x3b, + 0x80, 0xc4, 0x46, 0x4a, 0xff, 0xdd, 0x3f, 0xbb, 0x17, 0x4a, 0xf2, 0x19, + 0x3a, 0x74, 0x61, 0xa2, 0xd7, 0xc7, 0xd5, 0x85, 0xa3, 0x72, 0xfe, 0x86, + 0x20, 0x85, 0x5a, 0xa9, 0xb2, 0x84, 0x19, 0xcf, 0x41, 0x4a, 0x62, 0x11, + 0x07, 0x33, 0x82, 0xb2, 0x5f, 0x9f, 0x81, 0xfe, 0x1e, 0x8b, 0x26, 0x32, + 0xaa, 0x3c, 0x75, 0xa7, 0xb3, 0xbc, 0xc5, 0x92, 0x71, 0x88, 0x58, }; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_1030 */ +const unsigned char test_rsa_1030[] = { + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x29, 0x80, + 0x16, 0x41, 0x52, 0x5b, 0x45, 0xb0, 0xcf, 0x21, 0xf3, 0x1e, 0xcf, 0x61, + 0x78, 0x6b, 0xb7, 0x90, 0x12, 0x9b, 0x2c, 0xdb, 0xfa, 0x5a, 0x36, 0x78, + 0xcc, 0xa9, 0xcf, 0x90, 0x3d, 0x76, 0xcd, 0x22, 0x41, 0xb2, 0x24, 0x32, + 0x87, 0xb8, 0x32, 0x88, 0x28, 0xed, 0x69, 0xe9, 0x3d, 0x88, 0x8c, 0x40, + 0xfb, 0x41, 0x59, 0x6e, 0x78, 0x05, 0x5a, 0xa2, 0x5a, 0xb0, 0xba, 0x12, + 0x7e, 0x49, 0x30, 0x2d, 0xc7, 0x87, 0xda, 0xb2, 0xbd, 0xf9, 0x44, 0x61, + 0xd4, 0x9a, 0x3c, 0x8f, 0xb9, 0xac, 0x95, 0xec, 0xc4, 0xe7, 0xed, 0xbc, + 0xf1, 0xed, 0xea, 0xdc, 0xa9, 0x8b, 0x1e, 0x73, 0x09, 0x25, 0xf2, 0xff, + 0xea, 0xf4, 0x4f, 0xfd, 0x14, 0xe8, 0xab, 0x65, 0x80, 0xeb, 0xa4, 0x91, + 0xfa, 0x45, 0x8e, 0xf0, 0x84, 0xff, 0x59, 0x36, 0x40, 0xef, 0xaf, 0x63, + 0x23, 0x51, 0xcf, 0xb5, 0x2b, 0x9d, 0x35, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x08, 0x9c, 0xdf, 0xe1, 0x8a, 0x27, 0x4d, 0xa1, 0x1a, + 0x77, 0xd4, 0x06, 0x60, 0xa9, 0x3c, 0xad, 0xf4, 0x50, 0x77, 0x00, 0x13, + 0xf1, 0x0a, 0x75, 0xe7, 0x08, 0xae, 0x87, 0x0e, 0x80, 0x03, 0xb5, 0x90, + 0x70, 0xab, 0xdc, 0x3e, 0x05, 0x6b, 0xa3, 0xd7, 0x7e, 0xe9, 0x29, 0x8e, + 0x99, 0xbc, 0xae, 0xc6, 0x56, 0xe5, 0x1e, 0x44, 0xa2, 0x77, 0xcf, 0xba, + 0xa5, 0xe7, 0xb6, 0xf6, 0x43, 0x08, 0xc9, 0x02, 0x84, 0xef, 0x41, 0xb5, + 0x04, 0xc5, 0x6f, 0xd8, 0x9a, 0xa0, 0x71, 0xaa, 0x1a, 0x7e, 0xac, 0x57, + 0xb9, 0x73, 0x5a, 0x02, 0xbf, 0x7c, 0xbe, 0x05, 0xf7, 0x7a, 0xa8, 0xf1, + 0x83, 0x1a, 0x58, 0xe1, 0x85, 0xbb, 0x40, 0x87, 0xff, 0x83, 0xbd, 0x9c, + 0x5a, 0x5e, 0xe5, 0x88, 0xe0, 0x88, 0x27, 0xe2, 0xef, 0xbb, 0xb1, 0x23, + 0x33, 0x31, 0x7f, 0x2d, 0x58, 0x14, 0x31, 0xac, 0x36, 0x08, 0xb9, 0x69, + 0x02, 0x41, 0x06, 0xb1, 0xe8, 0x8e, 0xfe, 0x4a, 0x77, 0x67, 0xa0, 0xdd, + 0xb6, 0xb0, 0x94, 0x58, 0xbf, 0x68, 0x67, 0x9d, 0x31, 0xd8, 0x49, 0x55, + 0xf0, 0xc9, 0x50, 0x7b, 0x5f, 0x1d, 0x0d, 0x1b, 0x16, 0x78, 0x5d, 0xe3, + 0x11, 0x9c, 0x58, 0x20, 0xa6, 0xd9, 0xbc, 0x2b, 0x03, 0xb5, 0x2d, 0x99, + 0xaa, 0x67, 0x27, 0x2f, 0x16, 0x45, 0x3c, 0xf6, 0x3d, 0x0b, 0x76, 0xe8, + 0x73, 0x8b, 0x94, 0x38, 0xd1, 0x43, 0x9d, 0x02, 0x41, 0x06, 0x32, 0xe1, + 0x2a, 0xb9, 0x61, 0x5f, 0xa4, 0x5c, 0x67, 0x33, 0x71, 0xaf, 0xa0, 0xa6, + 0xef, 0x95, 0x63, 0x3a, 0x49, 0xef, 0xa6, 0xe6, 0x63, 0x39, 0x54, 0x80, + 0xef, 0x44, 0x49, 0xe0, 0x69, 0x6b, 0xf9, 0xbc, 0x89, 0x60, 0x1c, 0x03, + 0xce, 0x92, 0x53, 0x0d, 0x33, 0x88, 0x64, 0x9b, 0x77, 0xd3, 0x22, 0xec, + 0x1d, 0x94, 0xb5, 0x43, 0x0b, 0xb7, 0x69, 0xd1, 0x1d, 0xfc, 0x70, 0x30, + 0xc8, 0x79, 0x02, 0x41, 0x02, 0xb1, 0x63, 0x02, 0xc9, 0x64, 0x38, 0x9d, + 0x35, 0x46, 0x99, 0x2a, 0x73, 0xb1, 0x32, 0xe4, 0x92, 0xf0, 0xd6, 0xd0, + 0xd1, 0xc6, 0xc0, 0xc0, 0xa9, 0x1f, 0xc6, 0xc5, 0x4f, 0xb5, 0x3a, 0x97, + 0x95, 0xe4, 0x34, 0xfc, 0x37, 0x32, 0x83, 0x0a, 0x87, 0xb6, 0xa1, 0x9a, + 0x29, 0xca, 0x6a, 0x91, 0x6d, 0x60, 0x72, 0x4b, 0xcd, 0x56, 0x9a, 0x7d, + 0x57, 0x09, 0xef, 0x18, 0x10, 0xb9, 0xbd, 0xea, 0xbd, 0x02, 0x40, 0x77, + 0xdb, 0x55, 0xf4, 0xc6, 0x8c, 0x08, 0xc8, 0x09, 0xeb, 0x72, 0xcc, 0xc7, + 0x1f, 0x94, 0xbc, 0xfd, 0xcf, 0xab, 0x41, 0xf4, 0xa3, 0x36, 0x1f, 0x60, + 0x68, 0x94, 0xa9, 0xdd, 0xc2, 0x9b, 0x73, 0xd2, 0x5b, 0x11, 0x2d, 0x37, + 0x30, 0x7a, 0x6b, 0xc6, 0xe6, 0x1a, 0x5c, 0x54, 0xed, 0x01, 0x31, 0xeb, + 0x53, 0x56, 0x30, 0xa3, 0x38, 0x3b, 0x2c, 0x51, 0x4b, 0xc0, 0x2e, 0x0e, + 0xf3, 0x40, 0x51, 0x02, 0x41, 0x03, 0x26, 0x57, 0x0d, 0xf5, 0xdf, 0x3f, + 0x5e, 0x31, 0x00, 0x9b, 0xf0, 0x92, 0x04, 0xfd, 0x97, 0x3e, 0x04, 0x7f, + 0x23, 0xd7, 0x79, 0x3c, 0xd7, 0xe8, 0xe1, 0x0e, 0xf0, 0xc4, 0x9f, 0xdb, + 0x4b, 0x5a, 0x42, 0xd7, 0x63, 0x4f, 0x95, 0x85, 0x35, 0xb9, 0x37, 0x24, + 0x34, 0xeb, 0xa3, 0xc7, 0x27, 0x49, 0x18, 0x78, 0x68, 0x05, 0x45, 0x6c, + 0x9b, 0xa7, 0x60, 0x07, 0x9d, 0x7e, 0x63, 0xad, 0xb7, 0x0c, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_2048 */ +const unsigned char test_rsa_2048[] = { + 0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, + 0xaa, 0x20, 0x13, 0x4a, 0x30, 0x6e, 0x42, 0xaf, 0xcb, 0x0a, 0xb9, 0x31, + 0x8e, 0x5d, 0x85, 0x75, 0xfb, 0x48, 0x35, 0xbe, 0xc0, 0x77, 0x93, 0xcd, + 0x51, 0xf4, 0x22, 0x0d, 0x72, 0x1a, 0xc1, 0x87, 0xf5, 0x6c, 0xb6, 0x68, + 0xb8, 0xc3, 0x63, 0x90, 0xa7, 0x38, 0x86, 0x44, 0xc0, 0xfb, 0x03, 0x0a, + 0x69, 0xc2, 0xb0, 0x3a, 0x15, 0xa5, 0xa0, 0xe9, 0x5a, 0xab, 0x32, 0xbb, + 0xd1, 0x73, 0x88, 0x34, 0x77, 0xc5, 0xae, 0xc9, 0x7d, 0x0d, 0x33, 0x78, + 0x31, 0x57, 0xc0, 0x43, 0xa1, 0x61, 0x90, 0x7f, 0xfc, 0xd9, 0x02, 0x71, + 0x76, 0x96, 0x4e, 0xe5, 0x55, 0xe8, 0x6e, 0x34, 0x1c, 0xd7, 0x8c, 0xab, + 0x7f, 0xec, 0xc2, 0x36, 0xba, 0x4a, 0x04, 0xac, 0xfb, 0x78, 0x74, 0xf1, + 0xc3, 0xff, 0x4d, 0xac, 0x53, 0x27, 0x7a, 0x0d, 0xdc, 0x49, 0xbe, 0x8d, + 0x8f, 0xaa, 0x24, 0x9b, 0xbc, 0x94, 0x6c, 0xfe, 0x23, 0x18, 0xad, 0x80, + 0x9b, 0x68, 0x0e, 0xf6, 0xc7, 0x66, 0xf2, 0xca, 0x64, 0xc6, 0xb5, 0x68, + 0x89, 0xf2, 0xac, 0x93, 0xa8, 0x57, 0x2f, 0xd4, 0xd6, 0xc3, 0xee, 0x84, + 0x7b, 0x20, 0xcb, 0x5a, 0x9f, 0xd5, 0x03, 0x9b, 0x57, 0x44, 0xf3, 0x86, + 0x64, 0x88, 0x79, 0xf5, 0xe9, 0xb9, 0x4b, 0xf8, 0x74, 0x70, 0xea, 0x77, + 0x98, 0x4b, 0x36, 0xc2, 0xa8, 0x63, 0xe8, 0x56, 0x52, 0xae, 0x67, 0xf3, + 0x7c, 0x78, 0x0a, 0x0f, 0x9c, 0xd7, 0xc9, 0xc9, 0x89, 0x8f, 0x47, 0xe7, + 0x3a, 0xb8, 0x0f, 0x85, 0x66, 0xb0, 0x42, 0x2a, 0x55, 0x3c, 0x9c, 0x3c, + 0xcc, 0xc0, 0xf5, 0xc0, 0x20, 0x8b, 0x2f, 0xe4, 0xd1, 0x36, 0xc1, 0x2e, + 0x54, 0x97, 0xa4, 0xe8, 0x6f, 0xac, 0x94, 0x10, 0x43, 0xb8, 0xb9, 0x17, + 0x20, 0x09, 0x45, 0x70, 0x44, 0x0f, 0x47, 0xe2, 0x80, 0x33, 0x30, 0x05, + 0xd0, 0xd2, 0x62, 0x4f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, + 0x00, 0x13, 0x66, 0x73, 0xfc, 0xae, 0x58, 0x2c, 0x87, 0xa2, 0x76, 0x57, + 0x17, 0x15, 0x1e, 0x8a, 0x15, 0x21, 0xb2, 0x22, 0xda, 0xdd, 0x54, 0xe5, + 0x88, 0x70, 0xf3, 0x8f, 0x9c, 0x8b, 0xea, 0x0c, 0x2e, 0xc6, 0x68, 0x7e, + 0xc6, 0xa3, 0x67, 0x38, 0xa7, 0xea, 0xc1, 0xd1, 0xe1, 0xee, 0x45, 0xd1, + 0x9b, 0x72, 0xe3, 0x0e, 0x38, 0x99, 0x76, 0x59, 0x4a, 0xb3, 0x19, 0xb9, + 0xbf, 0xdc, 0x4b, 0x39, 0xf9, 0x8d, 0xbc, 0xff, 0xc9, 0x1f, 0x57, 0x0d, + 0x8b, 0x03, 0xc9, 0x77, 0x75, 0xde, 0xe5, 0xe2, 0xd6, 0x0d, 0x8d, 0xeb, + 0xae, 0xe7, 0xb0, 0x8d, 0x4f, 0xae, 0xc3, 0xc2, 0x29, 0x74, 0x2e, 0x8a, + 0x6e, 0x96, 0x38, 0x78, 0x0f, 0x48, 0xa0, 0x1f, 0x37, 0x60, 0xb7, 0xe4, + 0x52, 0x1b, 0xa1, 0x36, 0x08, 0xd4, 0x34, 0xb8, 0xc0, 0xf2, 0xe1, 0x7f, + 0xf6, 0xe1, 0xae, 0xab, 0xdd, 0x0c, 0x9c, 0xba, 0x6e, 0xf2, 0xfd, 0xee, + 0x92, 0x22, 0x68, 0x8d, 0x78, 0xb4, 0xc3, 0x67, 0x97, 0xce, 0xae, 0xc5, + 0x3f, 0x9c, 0x41, 0x62, 0xbf, 0xf0, 0xab, 0x1d, 0xe9, 0x62, 0xf9, 0x2e, + 0x63, 0xa7, 0xd5, 0x2d, 0x49, 0xbe, 0x67, 0x4c, 0x76, 0xb6, 0x81, 0x63, + 0xb6, 0x94, 0x86, 0xa7, 0x6a, 0x5a, 0xd8, 0xe4, 0x85, 0xe3, 0x61, 0x0d, + 0xb3, 0x5a, 0x52, 0x5b, 0x6f, 0x59, 0x81, 0xc0, 0x8d, 0xd7, 0xee, 0x0c, + 0xa3, 0xa3, 0xe1, 0x95, 0x5a, 0x09, 0x89, 0x71, 0x4d, 0xe2, 0x97, 0xec, + 0x9b, 0x6a, 0x76, 0x5a, 0xc6, 0x92, 0x61, 0x4b, 0x1d, 0x42, 0xc1, 0x55, + 0x25, 0x29, 0x61, 0x84, 0x75, 0x06, 0xfd, 0x6f, 0xb0, 0xe2, 0xba, 0x8a, + 0xa3, 0x6c, 0x89, 0x6b, 0x57, 0xf6, 0x59, 0x35, 0x9c, 0xef, 0x1d, 0x0b, + 0xb6, 0xe0, 0x0e, 0xcc, 0x31, 0x7a, 0x99, 0x20, 0x6f, 0x4c, 0xa2, 0x9c, + 0xcc, 0x58, 0xc1, 0xb4, 0x65, 0x02, 0x81, 0x81, 0x00, 0xde, 0x2d, 0x72, + 0xf5, 0xad, 0x7b, 0x26, 0xec, 0x59, 0x28, 0x10, 0x87, 0x2c, 0xfe, 0xee, + 0x63, 0x2f, 0xe2, 0xa2, 0xc7, 0xa7, 0x1f, 0xcc, 0xa0, 0x8d, 0xf1, 0x27, + 0x6c, 0xd5, 0xfd, 0x98, 0xe1, 0x5f, 0x85, 0x5b, 0xc0, 0xd3, 0x5b, 0x6b, + 0xbf, 0x3e, 0xa6, 0x2a, 0x28, 0xa4, 0xbf, 0x17, 0xed, 0x68, 0xc1, 0x72, + 0xaa, 0xb2, 0x57, 0x4d, 0x33, 0x24, 0xf8, 0x3b, 0x92, 0x85, 0xa7, 0x6d, + 0xa5, 0x89, 0xfe, 0x32, 0x27, 0x8d, 0x9a, 0xbb, 0x47, 0xf6, 0xa4, 0x6c, + 0x07, 0x44, 0xb0, 0xd3, 0x04, 0x67, 0xae, 0x1d, 0x6e, 0x1a, 0x0e, 0xf3, + 0x4a, 0x3a, 0xe4, 0xae, 0x91, 0xf9, 0x1e, 0x90, 0xbc, 0x84, 0x61, 0x0e, + 0x39, 0x09, 0x92, 0xbf, 0x68, 0x6c, 0xb9, 0xee, 0x6e, 0xbf, 0x20, 0x16, + 0xe9, 0x7f, 0x3c, 0x33, 0x87, 0x4f, 0x1f, 0x7a, 0xcc, 0x93, 0x4e, 0x8f, + 0xea, 0xc2, 0xd1, 0xac, 0x7b, 0x02, 0x81, 0x81, 0x00, 0xc4, 0x06, 0x14, + 0xfb, 0x02, 0xa8, 0xf7, 0x8c, 0x92, 0x72, 0xde, 0xa8, 0x99, 0xf3, 0x62, + 0xb6, 0x09, 0x23, 0x08, 0x3a, 0x27, 0x07, 0xfe, 0x6d, 0x82, 0xa4, 0x74, + 0x10, 0xbc, 0x36, 0xaa, 0xa8, 0x65, 0x52, 0x50, 0x9f, 0xdb, 0x11, 0xa6, + 0xe1, 0xc5, 0xc6, 0x7f, 0xca, 0xb9, 0xc2, 0x56, 0xc0, 0x15, 0x54, 0x7c, + 0x53, 0x3e, 0x3c, 0x78, 0xaf, 0x75, 0x22, 0x0f, 0x65, 0xa2, 0xdd, 0x22, + 0x38, 0xb1, 0x0f, 0x40, 0xc1, 0x45, 0x30, 0x97, 0xf0, 0xc8, 0xc1, 0x32, + 0xde, 0x89, 0x80, 0x4c, 0xdc, 0xe5, 0x2f, 0x69, 0x2c, 0x73, 0xf3, 0xa7, + 0x52, 0x16, 0x50, 0xe2, 0xad, 0x2b, 0xc6, 0x9e, 0x6d, 0x53, 0x4f, 0xb3, + 0x56, 0x0e, 0x3d, 0x78, 0xbf, 0x19, 0xfa, 0x5f, 0x67, 0x91, 0xa5, 0xd8, + 0x2e, 0xd5, 0xb7, 0xd7, 0x3d, 0x6b, 0x06, 0x68, 0x6a, 0x23, 0x27, 0xae, + 0x3c, 0xac, 0x69, 0x0b, 0x3d, 0x02, 0x81, 0x81, 0x00, 0x8f, 0xbb, 0xdb, + 0x69, 0x71, 0x08, 0x01, 0x10, 0x5a, 0x45, 0x7f, 0x1b, 0xd4, 0x52, 0x40, + 0xaa, 0xce, 0x69, 0xd2, 0x61, 0x53, 0x8f, 0x50, 0xf4, 0x75, 0x9f, 0x93, + 0x9f, 0xe7, 0x78, 0x9e, 0x94, 0xff, 0x14, 0xe9, 0x5c, 0xff, 0xdf, 0x5e, + 0xff, 0x64, 0x6a, 0x5f, 0x4f, 0xd7, 0xf5, 0x00, 0x67, 0xc8, 0xa3, 0x8d, + 0xa9, 0x3c, 0xa3, 0x1a, 0x00, 0x82, 0x64, 0x4d, 0x35, 0xe7, 0x5d, 0x7f, + 0xa3, 0xde, 0x78, 0x22, 0xbe, 0x4f, 0xef, 0xd0, 0x45, 0x28, 0x1d, 0x0a, + 0xfe, 0x50, 0xc4, 0x0c, 0x60, 0x07, 0x2b, 0x2f, 0x42, 0xf1, 0x7c, 0xc6, + 0x8c, 0x39, 0x39, 0x84, 0x6e, 0x4f, 0x3a, 0x24, 0xec, 0xb0, 0xbf, 0x91, + 0x51, 0xf9, 0x0d, 0x84, 0xe2, 0xeb, 0xa4, 0x05, 0xca, 0x83, 0xbf, 0x20, + 0xd3, 0x82, 0x4a, 0xd2, 0x13, 0x31, 0x6e, 0xee, 0x24, 0xb7, 0x0f, 0xd6, + 0x2f, 0x4c, 0x46, 0x15, 0x4d, 0x02, 0x81, 0x81, 0x00, 0x8b, 0xa2, 0x39, + 0x77, 0xc4, 0xa1, 0x50, 0x15, 0x96, 0x8c, 0xb5, 0x07, 0x2d, 0x03, 0x2e, + 0xa1, 0xb5, 0x48, 0x7b, 0x27, 0xd1, 0x7d, 0xe4, 0x43, 0x65, 0xf8, 0x77, + 0xa5, 0x24, 0x2d, 0x5c, 0xcb, 0xaf, 0xc1, 0x3f, 0x25, 0x60, 0x0b, 0xe6, + 0xf0, 0x94, 0xcd, 0x9d, 0x62, 0x6f, 0x88, 0x7b, 0xfb, 0x40, 0x36, 0x7a, + 0x89, 0x61, 0x9f, 0xf9, 0xe8, 0x22, 0x6c, 0x2c, 0xc3, 0x9d, 0x8c, 0x20, + 0x40, 0x79, 0xff, 0xff, 0x84, 0xad, 0x20, 0xbc, 0x5b, 0x0c, 0xe6, 0x72, + 0xb2, 0x0b, 0x08, 0x95, 0xb8, 0x14, 0x99, 0xfd, 0x35, 0x69, 0x33, 0x7b, + 0x51, 0x02, 0x0c, 0x84, 0x2c, 0x0f, 0x2e, 0xe0, 0xd3, 0xc7, 0xb0, 0xd2, + 0x72, 0xce, 0x9a, 0x03, 0x55, 0x3d, 0xd0, 0x17, 0xfd, 0xd2, 0xc6, 0x6c, + 0x84, 0x90, 0x40, 0xf0, 0xd6, 0x13, 0x52, 0xf1, 0x36, 0x09, 0xec, 0xce, + 0x34, 0xf2, 0x2b, 0xb1, 0x91, 0x02, 0x81, 0x81, 0x00, 0xc5, 0xf8, 0xda, + 0xdb, 0x52, 0xa6, 0x7b, 0x9a, 0x38, 0x1d, 0xb6, 0x5f, 0x8f, 0x08, 0x54, + 0x17, 0x60, 0xe0, 0x99, 0x06, 0x6b, 0xf9, 0xac, 0xe9, 0x71, 0x38, 0x60, + 0x0d, 0x79, 0x12, 0xe7, 0xd4, 0x47, 0x48, 0xfc, 0x12, 0x5b, 0x73, 0x4a, + 0x9a, 0xca, 0xda, 0x54, 0xaa, 0xb7, 0x4e, 0xf4, 0x2d, 0x70, 0xd5, 0x22, + 0x9f, 0xa0, 0x51, 0x62, 0x2b, 0x7f, 0xa7, 0x14, 0x7d, 0xd4, 0x1e, 0x3e, + 0xfd, 0x26, 0x97, 0x71, 0xaf, 0x01, 0x9d, 0x3b, 0x7a, 0x0f, 0x4d, 0xab, + 0xfb, 0xe8, 0xff, 0xf4, 0x4d, 0xd0, 0xf3, 0x22, 0x5a, 0x37, 0x51, 0xe3, + 0x85, 0x3a, 0x3f, 0x78, 0x36, 0x66, 0xaa, 0x57, 0x69, 0x6a, 0xe9, 0x7a, + 0x55, 0x7c, 0x1c, 0xeb, 0x8c, 0x5f, 0x17, 0x15, 0x9a, 0xd2, 0xa1, 0x21, + 0xbe, 0xd5, 0x6d, 0xb1, 0xaa, 0x3f, 0xc7, 0xbc, 0x36, 0xf6, 0xea, 0x78, + 0x98, 0x26, 0x94, 0xb2, 0x58, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_rsa_4096 */ +const unsigned char test_rsa_4096[] = { + 0x30, 0x82, 0x09, 0x29, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, 0x01, 0x00, + 0xca, 0xd0, 0xd9, 0x1e, 0xae, 0x27, 0x25, 0x04, 0x53, 0xb5, 0x7f, 0x0a, + 0x56, 0x80, 0xd2, 0xf5, 0xd4, 0x9c, 0x59, 0x33, 0x0e, 0xae, 0x70, 0xe0, + 0x35, 0xb7, 0x65, 0x6b, 0x3a, 0xbf, 0x45, 0x65, 0x1f, 0xfb, 0x86, 0x6b, + 0x9c, 0x3e, 0x33, 0x6c, 0xff, 0xc2, 0x03, 0x3d, 0x25, 0x0a, 0x6b, 0xbe, + 0xd7, 0x03, 0x97, 0xdd, 0xea, 0x5b, 0x80, 0xb7, 0x8b, 0x3c, 0xad, 0xaf, + 0x88, 0x53, 0x64, 0x30, 0x90, 0xb3, 0xf3, 0x5e, 0x82, 0x8b, 0x0b, 0x59, + 0x29, 0x11, 0x32, 0xf1, 0x50, 0xce, 0xd1, 0x89, 0x4a, 0x88, 0xdb, 0x14, + 0x52, 0xbd, 0x5b, 0x67, 0x13, 0x1e, 0x60, 0x89, 0xd9, 0x53, 0xf4, 0x34, + 0x5e, 0xfe, 0x3d, 0xd4, 0xae, 0xf5, 0x97, 0x7a, 0xe4, 0x66, 0xd5, 0xb0, + 0x74, 0x72, 0xd9, 0x13, 0x02, 0x3a, 0x42, 0xc3, 0x91, 0xdb, 0xd1, 0x41, + 0x6f, 0x46, 0x06, 0x51, 0xd2, 0x0c, 0xb9, 0x6b, 0x8b, 0x72, 0xa0, 0x0e, + 0xcc, 0x05, 0x95, 0x5c, 0xa0, 0xbd, 0x57, 0xda, 0xb8, 0x33, 0x87, 0x85, + 0xc7, 0xee, 0xd1, 0x06, 0xcc, 0x78, 0x90, 0x39, 0xd4, 0x96, 0x24, 0x89, + 0xda, 0xff, 0xb0, 0xe4, 0xd2, 0x39, 0x58, 0x45, 0xf5, 0x2a, 0x45, 0x44, + 0xc3, 0xca, 0x54, 0xa7, 0xd7, 0x32, 0x8f, 0x3e, 0x56, 0x30, 0x14, 0xef, + 0x20, 0x3d, 0x96, 0xe1, 0xdf, 0x75, 0xa7, 0x99, 0x5c, 0xdd, 0x98, 0x21, + 0xf1, 0xac, 0x8f, 0x0c, 0x6b, 0xf0, 0x79, 0x55, 0x27, 0xc1, 0x00, 0xa3, + 0xec, 0x49, 0xb4, 0x0d, 0x02, 0x92, 0xba, 0xa0, 0x7f, 0x53, 0xaf, 0xd0, + 0x41, 0x33, 0x73, 0xb4, 0xc4, 0xfd, 0x1f, 0xf7, 0x54, 0xa5, 0xd2, 0x71, + 0xb1, 0x6c, 0x4c, 0x1f, 0x45, 0xce, 0xf0, 0xd0, 0x8d, 0xe2, 0xaa, 0x02, + 0xa6, 0xce, 0x4b, 0xac, 0xeb, 0xd0, 0xb7, 0x4a, 0x56, 0xf0, 0xc6, 0x0f, + 0x0f, 0x95, 0xcb, 0x11, 0xf3, 0x62, 0xee, 0x60, 0xcf, 0xca, 0x80, 0x24, + 0x11, 0xaa, 0x25, 0x04, 0xce, 0xa8, 0xae, 0x3d, 0x38, 0xec, 0xab, 0xa5, + 0x13, 0xd4, 0xca, 0xf7, 0x2d, 0x52, 0xfb, 0x16, 0x10, 0x88, 0xdf, 0x8f, + 0xa0, 0xcc, 0xf6, 0xa1, 0xb8, 0x4d, 0xaa, 0x18, 0x9c, 0x1f, 0xcf, 0x0a, + 0xe6, 0x13, 0xde, 0x21, 0x60, 0xee, 0xa4, 0x50, 0x97, 0x81, 0x28, 0x6f, + 0xc3, 0xc4, 0xdc, 0xe2, 0x73, 0xf4, 0x42, 0x40, 0x8b, 0x28, 0x79, 0xcc, + 0x5f, 0x9d, 0xe6, 0x3c, 0x42, 0xfb, 0x54, 0x5c, 0x9c, 0xb5, 0xad, 0xbd, + 0xc7, 0x6d, 0x04, 0xc3, 0x6e, 0xa3, 0x25, 0x90, 0x16, 0x79, 0xd0, 0x8a, + 0xa4, 0xe6, 0x6c, 0x9e, 0x63, 0x61, 0x20, 0xb9, 0x06, 0x1e, 0xc9, 0x3b, + 0x44, 0x61, 0x80, 0x9f, 0xb8, 0xbd, 0x78, 0xa5, 0x06, 0xfd, 0xec, 0x10, + 0x4a, 0xed, 0x31, 0xc5, 0xb6, 0x19, 0xff, 0xa2, 0xd6, 0xba, 0xb4, 0xd9, + 0x86, 0x40, 0x7f, 0x24, 0x47, 0x48, 0xf4, 0xa0, 0x66, 0x66, 0xe5, 0xa4, + 0x51, 0xc1, 0xa3, 0x25, 0x2e, 0x34, 0x58, 0x61, 0x85, 0x51, 0x75, 0x49, + 0x18, 0xf4, 0xa6, 0xd8, 0x83, 0x28, 0x7e, 0xcc, 0x56, 0x27, 0xc6, 0x79, + 0xda, 0x8e, 0x3e, 0x36, 0x23, 0xe2, 0xa7, 0x6d, 0x11, 0xcb, 0x91, 0x05, + 0x59, 0xdf, 0x0f, 0x40, 0x27, 0x25, 0x7c, 0x13, 0x8c, 0xbe, 0x1c, 0x9c, + 0x54, 0x0f, 0x57, 0xe3, 0x8f, 0x46, 0xcf, 0xa3, 0xfc, 0x4a, 0x31, 0xf8, + 0xe2, 0x32, 0x9a, 0x73, 0x21, 0x04, 0x44, 0x8a, 0xe8, 0x2d, 0x77, 0x2e, + 0xad, 0xa4, 0xbd, 0xc8, 0x14, 0x85, 0xb1, 0x8a, 0x72, 0x79, 0x69, 0x24, + 0x97, 0x04, 0x7b, 0x56, 0xf5, 0xc4, 0xd9, 0xdb, 0x4f, 0x91, 0x40, 0x60, + 0xf0, 0xda, 0x0a, 0xd7, 0x12, 0xf0, 0x09, 0x21, 0xbd, 0x7c, 0x2f, 0x01, + 0x73, 0x66, 0x69, 0xd7, 0x92, 0x6a, 0xa6, 0x1b, 0x02, 0x03, 0x01, 0x00, + 0x01, 0x02, 0x82, 0x02, 0x00, 0x38, 0xe9, 0x3d, 0xe3, 0xc4, 0x0e, 0xab, + 0xee, 0x78, 0xe6, 0xd7, 0x0d, 0x39, 0x94, 0xd0, 0x9d, 0xb6, 0xd9, 0x60, + 0x96, 0x59, 0x2a, 0x4d, 0xf6, 0x3c, 0x5c, 0x88, 0x12, 0xfc, 0xdb, 0x2b, + 0x47, 0xe3, 0x1f, 0x9b, 0x6a, 0x9a, 0xdf, 0x41, 0x62, 0xf6, 0xa9, 0xa4, + 0x6b, 0x05, 0xf7, 0xd4, 0xa0, 0x2a, 0x89, 0x91, 0x95, 0xed, 0xeb, 0x5b, + 0x45, 0x25, 0xc7, 0x13, 0x1d, 0xcc, 0x6d, 0x4a, 0x11, 0xee, 0xa8, 0xf0, + 0x43, 0xb6, 0xf1, 0xf9, 0x6f, 0x3d, 0x7c, 0xdc, 0x04, 0xa7, 0x1e, 0x41, + 0xe1, 0xfa, 0x8e, 0x48, 0x9b, 0x7d, 0x54, 0x31, 0x4f, 0xcd, 0x27, 0x9b, + 0x03, 0x53, 0x7e, 0xa1, 0x6a, 0x08, 0xb5, 0xe2, 0xf7, 0xc9, 0x58, 0x94, + 0xf7, 0x21, 0x1c, 0x52, 0x1e, 0x3f, 0xae, 0xf2, 0x86, 0xc8, 0xfb, 0x3c, + 0x3c, 0xd0, 0xb3, 0x14, 0x16, 0xfe, 0x78, 0x71, 0xd1, 0x87, 0xd5, 0x96, + 0x3a, 0x3d, 0x59, 0x1e, 0xdc, 0xc8, 0x17, 0x51, 0x00, 0x3b, 0x02, 0xa6, + 0xa2, 0x73, 0x49, 0xd2, 0x5f, 0x91, 0xe8, 0xcb, 0xb2, 0xd2, 0xb1, 0x8a, + 0x17, 0x10, 0x36, 0x49, 0x6e, 0x7d, 0x8b, 0x7e, 0x41, 0xd7, 0x53, 0xcc, + 0x17, 0x65, 0x62, 0x45, 0x29, 0xb4, 0x9f, 0x13, 0xfe, 0x3c, 0xfe, 0xac, + 0xff, 0x5b, 0x04, 0x06, 0xfb, 0xca, 0xda, 0x3d, 0x7a, 0x88, 0x4f, 0xe5, + 0x85, 0xbd, 0x6f, 0x58, 0xff, 0x3d, 0x67, 0xa4, 0x84, 0x61, 0xcd, 0x8a, + 0xde, 0x80, 0x57, 0x42, 0x2c, 0xbd, 0x63, 0x39, 0x28, 0xe5, 0x6d, 0xf2, + 0xfc, 0x92, 0x7e, 0x13, 0x39, 0xa6, 0xf2, 0x1f, 0x27, 0xbc, 0x97, 0x22, + 0xdf, 0x2e, 0x5b, 0x91, 0x9f, 0xe1, 0x9f, 0x78, 0x04, 0xd6, 0x7b, 0xe9, + 0x4b, 0x3c, 0x65, 0x3c, 0x3b, 0x9e, 0x3f, 0x09, 0x31, 0x2e, 0xc2, 0xd4, + 0x8c, 0x01, 0xb5, 0x72, 0x7e, 0x4b, 0x6b, 0x47, 0x1d, 0xf3, 0xb2, 0xaa, + 0x9c, 0xd0, 0x1a, 0x11, 0x24, 0xad, 0xeb, 0x0e, 0x9e, 0xe1, 0xa9, 0xfc, + 0x4c, 0xf0, 0xd0, 0xc5, 0x4d, 0xd0, 0xef, 0x45, 0xa2, 0x64, 0xce, 0x08, + 0x60, 0x55, 0xaf, 0x11, 0xbd, 0xad, 0xda, 0x20, 0x04, 0x97, 0x1f, 0x9f, + 0x99, 0x4a, 0x44, 0x6d, 0x94, 0x57, 0xd8, 0x4d, 0x80, 0xb0, 0x2a, 0xf3, + 0x32, 0xd8, 0x62, 0x2b, 0xbb, 0x28, 0xa5, 0x8e, 0x7f, 0x55, 0xfa, 0xe1, + 0xb6, 0x34, 0x27, 0x80, 0xa9, 0x63, 0x6b, 0xa7, 0x1b, 0x00, 0x6f, 0x47, + 0x51, 0xf2, 0x4d, 0x8a, 0xa2, 0x6b, 0xf8, 0x3f, 0xe0, 0x07, 0x06, 0x58, + 0x87, 0x8d, 0x42, 0x5b, 0x81, 0x2f, 0xba, 0x8b, 0xec, 0xfd, 0x5e, 0xad, + 0xd5, 0x22, 0xac, 0xb8, 0xb8, 0xa9, 0x51, 0x10, 0x1d, 0x08, 0x78, 0xf4, + 0xc8, 0xff, 0xfc, 0x25, 0x85, 0xe1, 0xe1, 0x5a, 0xb7, 0x9c, 0x53, 0xc1, + 0x50, 0x7b, 0xfa, 0x48, 0xf4, 0x84, 0x2c, 0x1b, 0x10, 0xd4, 0x31, 0x0b, + 0x6f, 0x0d, 0x35, 0x36, 0xf2, 0xbb, 0x70, 0xfb, 0x18, 0xf6, 0x22, 0x8e, + 0x87, 0x39, 0xd2, 0x5d, 0x8c, 0xef, 0x42, 0xe4, 0x36, 0x8b, 0x44, 0xac, + 0x3c, 0xab, 0x09, 0xf9, 0x26, 0xb3, 0x3d, 0x85, 0x57, 0x75, 0x0a, 0x76, + 0x69, 0x14, 0x53, 0x0c, 0x28, 0xd9, 0x28, 0x57, 0x4b, 0x60, 0xea, 0xcf, + 0x83, 0xac, 0x9a, 0x05, 0xd4, 0x54, 0x46, 0xd3, 0xfd, 0xb4, 0x5d, 0xcb, + 0x45, 0x5a, 0xda, 0x1b, 0xcf, 0x71, 0x03, 0xd9, 0xc7, 0x1b, 0xd8, 0xb6, + 0x45, 0x17, 0x45, 0x01, 0x3e, 0x75, 0xf1, 0x48, 0x5c, 0x7a, 0xec, 0x58, + 0xe3, 0x71, 0xfb, 0xfe, 0x66, 0xcf, 0x99, 0x1e, 0xf7, 0xa1, 0x79, 0x74, + 0xb0, 0x99, 0x9d, 0xe5, 0x93, 0x3f, 0xa3, 0x31, 0x06, 0xb3, 0x16, 0x71, + 0x27, 0x36, 0xb0, 0xc0, 0x64, 0xe8, 0x07, 0x5e, 0xf0, 0x4a, 0x76, 0x04, + 0x91, 0x02, 0x82, 0x01, 0x01, 0x00, 0xff, 0x09, 0x0d, 0x15, 0xda, 0xbd, + 0xa7, 0xe9, 0x79, 0x20, 0x59, 0x05, 0xc1, 0xea, 0x20, 0xa9, 0xb9, 0x47, + 0x16, 0x42, 0xeb, 0x3f, 0x26, 0xa4, 0x8b, 0xfd, 0x48, 0x4b, 0xdf, 0x06, + 0x35, 0x8b, 0x32, 0xe3, 0xf7, 0x1f, 0xb1, 0x92, 0x96, 0xbf, 0x48, 0x04, + 0x32, 0xb2, 0x4e, 0x83, 0x9a, 0x1f, 0x4b, 0x11, 0x75, 0xb8, 0xbf, 0x4d, + 0x2e, 0xe0, 0x8a, 0x22, 0xde, 0x94, 0xb1, 0x98, 0xc0, 0xec, 0x8a, 0x49, + 0x73, 0x07, 0xf5, 0x69, 0x4c, 0x9a, 0x2f, 0xab, 0xf6, 0xdd, 0x93, 0x26, + 0x6c, 0x79, 0x2c, 0xac, 0xbc, 0x7d, 0x67, 0xad, 0x3e, 0x46, 0xdd, 0xf2, + 0xef, 0x14, 0x8a, 0x10, 0x9c, 0x11, 0x9b, 0x4a, 0xd5, 0x27, 0x87, 0x52, + 0x79, 0x1a, 0xb3, 0x67, 0xe3, 0x29, 0x35, 0x97, 0x57, 0xa7, 0x7f, 0xab, + 0xed, 0xe2, 0xa4, 0xa8, 0x94, 0x01, 0x7c, 0x85, 0x5e, 0x47, 0x67, 0xb5, + 0xae, 0xf0, 0x2b, 0x9a, 0xa6, 0xb1, 0x4c, 0xd7, 0x84, 0xae, 0x24, 0x1e, + 0x28, 0x77, 0x63, 0x69, 0x38, 0x6b, 0xab, 0xe0, 0x4f, 0x90, 0x78, 0x4a, + 0x31, 0x30, 0xe8, 0x95, 0xbc, 0xcb, 0x95, 0x9c, 0xd5, 0x34, 0x7c, 0x4c, + 0x07, 0xa7, 0x23, 0x66, 0x6b, 0xd6, 0x59, 0x93, 0x69, 0x22, 0xb3, 0xda, + 0x47, 0x66, 0xf8, 0xee, 0x4a, 0x38, 0x5e, 0xab, 0x2d, 0xf7, 0xe0, 0xab, + 0x9f, 0x65, 0x1a, 0x90, 0x04, 0xaa, 0x71, 0xc5, 0x59, 0xf2, 0x0c, 0xb3, + 0xbe, 0xd5, 0xcf, 0x17, 0xcd, 0x70, 0x4c, 0xa6, 0xb7, 0xb5, 0x19, 0xc2, + 0x2b, 0xa8, 0x6b, 0x0c, 0x5f, 0x81, 0xb6, 0x18, 0x7b, 0x2e, 0x74, 0x6f, + 0xcb, 0x37, 0x15, 0x71, 0x4f, 0x7e, 0xac, 0xbf, 0x66, 0xf5, 0xb6, 0x72, + 0xf7, 0xe9, 0xc7, 0x99, 0xa5, 0x31, 0xf9, 0x27, 0x74, 0x4d, 0x68, 0xd6, + 0x60, 0xc7, 0x83, 0xe7, 0xd4, 0xa0, 0xc0, 0x09, 0x7a, 0x0f, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xcb, 0x95, 0x3b, 0xb3, 0x52, 0xf2, 0x44, 0x4c, 0x50, + 0xe0, 0xee, 0xaf, 0xf2, 0xec, 0x68, 0x73, 0x70, 0x16, 0x6c, 0x1d, 0x54, + 0xeb, 0xa2, 0xaf, 0x4e, 0xb9, 0x53, 0x5f, 0x73, 0x07, 0x72, 0x68, 0x70, + 0xce, 0xf0, 0xc5, 0x1b, 0x94, 0xb3, 0x48, 0xb5, 0x8e, 0x58, 0xb5, 0x81, + 0x96, 0x7b, 0xbb, 0x83, 0x33, 0x95, 0x06, 0x1a, 0x01, 0x69, 0xe1, 0x59, + 0xf9, 0x6d, 0x3d, 0x13, 0x5f, 0x52, 0xdf, 0xb6, 0x66, 0x68, 0x2b, 0xd8, + 0x06, 0x4a, 0xf8, 0xf9, 0x69, 0xed, 0xdd, 0x1e, 0x39, 0x93, 0x10, 0xe5, + 0x1b, 0x0b, 0xfe, 0x52, 0xd2, 0x9b, 0x64, 0x6c, 0xb3, 0xdc, 0x8a, 0x30, + 0x63, 0x56, 0x1c, 0x57, 0x39, 0x30, 0xfb, 0x89, 0x12, 0xd0, 0xbc, 0x00, + 0xd8, 0x4c, 0x0d, 0xcb, 0x17, 0x3e, 0x80, 0xad, 0x87, 0xc2, 0xd9, 0x28, + 0xe1, 0xbe, 0x69, 0x2b, 0x6b, 0x11, 0x7f, 0x8d, 0xb7, 0xc0, 0x2f, 0x9c, + 0x10, 0xe7, 0xd5, 0x12, 0xc0, 0x10, 0xec, 0x43, 0x9d, 0xe7, 0x30, 0x4b, + 0x5d, 0xec, 0x05, 0x22, 0xf3, 0x71, 0xab, 0x6e, 0xba, 0x99, 0x9a, 0xc7, + 0xe2, 0x95, 0x2b, 0xa4, 0xdc, 0xf0, 0x18, 0xa7, 0x91, 0x76, 0x5e, 0xf2, + 0x3b, 0x46, 0x51, 0xb9, 0xa2, 0x3e, 0xe1, 0xac, 0x7b, 0x18, 0x49, 0x15, + 0x2b, 0x01, 0xd6, 0xeb, 0x38, 0x90, 0xe4, 0x76, 0x1e, 0xc2, 0xd7, 0x7a, + 0x28, 0x0a, 0x05, 0x68, 0xbd, 0x59, 0xeb, 0xdf, 0x2b, 0x39, 0x58, 0x4b, + 0xa8, 0xf9, 0x92, 0x4c, 0xf2, 0xbf, 0xe6, 0x12, 0x6f, 0x13, 0x03, 0xa3, + 0xf5, 0xa1, 0xd2, 0x2b, 0x68, 0xf4, 0x8b, 0xac, 0x14, 0xb1, 0x3d, 0x05, + 0x4a, 0xea, 0x5a, 0x13, 0x29, 0x47, 0x36, 0x95, 0x7d, 0xf4, 0xed, 0x06, + 0x23, 0x3c, 0xf1, 0x4c, 0xf0, 0x95, 0xf9, 0xc7, 0x7e, 0x41, 0x85, 0x84, + 0xbf, 0x53, 0xfc, 0xa4, 0x5a, 0x8f, 0x35, 0x02, 0x82, 0x01, 0x00, 0x4e, + 0x64, 0xc8, 0xd9, 0xeb, 0xe8, 0x1a, 0x62, 0x20, 0xf2, 0x79, 0x8a, 0xd4, + 0x85, 0x94, 0x4e, 0xb7, 0x7e, 0x0b, 0x70, 0xbc, 0x81, 0x27, 0xee, 0xb2, + 0x7d, 0x43, 0xa8, 0xd6, 0xc0, 0x40, 0xdb, 0x2d, 0xe4, 0x77, 0x05, 0x0d, + 0xff, 0x62, 0x49, 0x1f, 0xe8, 0xf2, 0x70, 0x6e, 0xc3, 0xf3, 0x2f, 0x25, + 0x53, 0x13, 0x9d, 0x9b, 0x68, 0x2d, 0x3d, 0xa6, 0x18, 0x7b, 0xd4, 0xb7, + 0x16, 0x9e, 0x4e, 0xd7, 0x5f, 0x26, 0x75, 0xce, 0xd0, 0xf4, 0x53, 0xfc, + 0xcd, 0x5e, 0x4f, 0xd3, 0xb8, 0x9e, 0xe5, 0x4c, 0x7f, 0x38, 0x5d, 0x4f, + 0xee, 0x27, 0xd3, 0x7e, 0xcb, 0xfb, 0x03, 0x94, 0x40, 0xf0, 0xc8, 0x54, + 0xb4, 0xd6, 0xfa, 0x94, 0x95, 0x1c, 0x56, 0xc1, 0xc8, 0xf0, 0x41, 0xad, + 0x90, 0x7c, 0xc8, 0x26, 0xed, 0x81, 0x6d, 0x06, 0x72, 0x2f, 0x34, 0x99, + 0xc3, 0x21, 0x2c, 0xcf, 0xcb, 0x40, 0x1f, 0xe1, 0x37, 0x63, 0x7f, 0xe2, + 0x7f, 0xe8, 0xef, 0xe2, 0x78, 0x46, 0xb6, 0x14, 0x1f, 0xb6, 0xd1, 0x19, + 0xff, 0x14, 0x55, 0xf3, 0x33, 0xd3, 0x15, 0x16, 0x99, 0x58, 0x74, 0x37, + 0xe4, 0x02, 0x81, 0x64, 0xa7, 0xb6, 0x3e, 0x81, 0x1a, 0x2d, 0x91, 0xb0, + 0xed, 0x28, 0x07, 0x1b, 0xc3, 0xbf, 0xe8, 0xfe, 0x21, 0xb9, 0x3c, 0xc4, + 0x94, 0xd7, 0xc7, 0x77, 0x0f, 0x2a, 0x2a, 0xd8, 0xd4, 0x66, 0x2a, 0xc2, + 0x58, 0x08, 0x82, 0xe7, 0xb6, 0xa4, 0xb5, 0x72, 0x37, 0xfd, 0xd5, 0x44, + 0x2a, 0x87, 0x13, 0xaa, 0xfc, 0x4d, 0x91, 0x32, 0x7e, 0x96, 0x28, 0xf8, + 0x01, 0x64, 0x73, 0xee, 0x24, 0xa3, 0x11, 0xa6, 0x8c, 0xb3, 0x03, 0xdc, + 0x33, 0xe5, 0x81, 0x27, 0xf9, 0x05, 0x0d, 0x9e, 0x66, 0x33, 0x2a, 0x3e, + 0x4d, 0x0b, 0x69, 0xf4, 0x0c, 0xd9, 0xa8, 0xda, 0x79, 0xfb, 0x99, 0x02, + 0x0e, 0xa7, 0xaf, 0x02, 0x82, 0x01, 0x01, 0x00, 0x80, 0xff, 0xab, 0xd7, + 0xa2, 0x2c, 0x7f, 0x18, 0x78, 0x7b, 0x3e, 0xe3, 0x60, 0xa3, 0x6a, 0x40, + 0x13, 0x7b, 0x31, 0xc0, 0x98, 0x49, 0xc3, 0x49, 0x20, 0x32, 0x10, 0x61, + 0x3f, 0xeb, 0x2d, 0x14, 0x7e, 0xbe, 0xb2, 0x13, 0xc3, 0xb9, 0x42, 0xad, + 0x44, 0xd5, 0xd0, 0xe2, 0x1a, 0x1d, 0xf7, 0x83, 0x46, 0xcc, 0x8d, 0x96, + 0x53, 0x2e, 0x28, 0x20, 0x32, 0x39, 0xf9, 0x7d, 0x24, 0xe4, 0x57, 0x08, + 0x08, 0x74, 0xf5, 0x77, 0x2a, 0xa8, 0x3a, 0x23, 0x6f, 0x2f, 0x2f, 0x18, + 0xd8, 0x89, 0x14, 0xe6, 0x34, 0xb6, 0x21, 0xb0, 0x62, 0x5c, 0xaf, 0x38, + 0x40, 0x24, 0xec, 0x0e, 0xe8, 0x40, 0x59, 0x95, 0x15, 0xb3, 0xd8, 0x94, + 0xda, 0x33, 0x80, 0xee, 0x4f, 0xfe, 0xbe, 0x9a, 0x52, 0xe1, 0x04, 0xaa, + 0xd6, 0xca, 0x5a, 0xad, 0xed, 0xd8, 0xb5, 0x25, 0xc0, 0xec, 0x54, 0x27, + 0x25, 0xee, 0x94, 0x29, 0xd6, 0xd3, 0x63, 0x83, 0x41, 0x21, 0x50, 0xd7, + 0xd4, 0xb4, 0x9e, 0x84, 0x9c, 0x8d, 0x03, 0xfb, 0xf1, 0x3c, 0x9e, 0xff, + 0x48, 0xe7, 0x96, 0x63, 0x5c, 0x5a, 0xf7, 0xb8, 0xb2, 0xfb, 0x88, 0x6b, + 0xa6, 0xea, 0x66, 0x3e, 0x1d, 0x71, 0x6f, 0xca, 0x63, 0x3d, 0x2a, 0x69, + 0x27, 0x38, 0xcc, 0x97, 0xaa, 0x81, 0x18, 0xe6, 0x4d, 0x20, 0x07, 0xb7, + 0xac, 0x1d, 0x2b, 0xcb, 0x0b, 0xcd, 0x89, 0x24, 0x0a, 0x4d, 0x49, 0x48, + 0x4b, 0x9e, 0x00, 0xf5, 0x30, 0xe3, 0xfe, 0x58, 0x34, 0xc7, 0xf0, 0xce, + 0xe1, 0x49, 0x5e, 0x9c, 0x04, 0xed, 0xa5, 0x3f, 0x1e, 0x60, 0x9f, 0xec, + 0x4c, 0xfa, 0xc3, 0x9f, 0xed, 0xd5, 0x9d, 0x8f, 0xbb, 0xea, 0x81, 0x04, + 0x56, 0x4f, 0x7c, 0xbe, 0x20, 0x10, 0x7e, 0x12, 0x4c, 0x75, 0x7a, 0x22, + 0xce, 0xc4, 0xf2, 0xd1, 0x9e, 0xde, 0xf9, 0x61, 0xf1, 0xe6, 0xac, 0x2d, + 0x02, 0x82, 0x01, 0x01, 0x00, 0xd7, 0x32, 0x63, 0x0a, 0x84, 0xda, 0x7e, + 0x7e, 0xc5, 0xdf, 0xff, 0xbc, 0x82, 0x36, 0x8d, 0x83, 0x5b, 0x79, 0xa2, + 0x25, 0x88, 0xeb, 0xeb, 0x4e, 0xb8, 0xa1, 0x29, 0xbe, 0x9d, 0x81, 0x80, + 0x4b, 0x63, 0x67, 0xcc, 0x0a, 0x0d, 0xe9, 0xee, 0x84, 0x03, 0xf7, 0x2a, + 0x04, 0xe5, 0xa6, 0x0d, 0x8e, 0x0d, 0x34, 0x9f, 0x7c, 0xc1, 0xa0, 0xad, + 0x32, 0x59, 0xf8, 0x94, 0xb2, 0x4c, 0xca, 0x70, 0x68, 0xa3, 0x4b, 0xa8, + 0x58, 0xad, 0x46, 0x36, 0x08, 0xcd, 0x94, 0x10, 0x66, 0x5b, 0xbb, 0x38, + 0x16, 0x47, 0xb9, 0x2a, 0xe9, 0xe7, 0xf1, 0x4d, 0xb5, 0xb1, 0x77, 0x13, + 0xd7, 0x4f, 0xea, 0x53, 0x5f, 0xde, 0x8e, 0x0d, 0x6c, 0x88, 0x86, 0x79, + 0x0a, 0xa7, 0x2b, 0xaa, 0xe2, 0x3b, 0xb4, 0xa6, 0xd9, 0x2e, 0x57, 0xe4, + 0x76, 0x67, 0xa2, 0x4e, 0x24, 0x93, 0x2b, 0xfb, 0x7f, 0x30, 0x89, 0x66, + 0x16, 0x02, 0xe8, 0x6a, 0x2f, 0x75, 0x9e, 0xc1, 0xec, 0x7c, 0x72, 0x18, + 0xbe, 0xf1, 0x4a, 0x87, 0xc9, 0x8c, 0xcb, 0xb6, 0xa2, 0x02, 0x6e, 0x97, + 0x88, 0x4a, 0xba, 0x4a, 0xb2, 0xd8, 0x8c, 0x4a, 0xf5, 0x9c, 0x87, 0x2d, + 0x4b, 0x3d, 0x8c, 0x08, 0xdf, 0x31, 0xe7, 0x51, 0xc8, 0x4a, 0x3c, 0xf8, + 0x19, 0xb6, 0x3f, 0x6f, 0x6b, 0xe9, 0x8a, 0xed, 0x42, 0x54, 0x58, 0x96, + 0x2d, 0x00, 0x4a, 0x5f, 0xba, 0xf6, 0xf2, 0x87, 0x86, 0xc8, 0x11, 0xaf, + 0xc5, 0x31, 0x59, 0x24, 0x96, 0x76, 0xcc, 0xa0, 0xda, 0xe9, 0x3d, 0x40, + 0x0e, 0x2b, 0x64, 0xa4, 0xb2, 0x91, 0x0c, 0x04, 0x5e, 0xa9, 0x86, 0x3c, + 0xfc, 0x03, 0x8f, 0x07, 0x09, 0x52, 0x05, 0xb3, 0x9d, 0x08, 0xa7, 0xbf, + 0x1a, 0x47, 0xbb, 0x81, 0x39, 0xf1, 0xdf, 0x39, 0x65, 0x5e, 0x6b, 0x35, + 0x8d, 0x53, 0x67, 0x9f, 0x43, 0x59, 0x38, 0x45, 0xb4, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp192r1 */ +const unsigned char test_ec_secp192r1[] = { + 0x30, 0x5f, 0x02, 0x01, 0x01, 0x04, 0x18, 0xf2, 0xb2, 0x0b, 0x3a, 0xce, + 0x36, 0x72, 0xcd, 0xb2, 0xe2, 0x37, 0x80, 0x0a, 0x5e, 0x1a, 0x8e, 0x20, + 0xa4, 0x55, 0xe3, 0x53, 0xfc, 0x98, 0xeb, 0xa0, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x01, 0xa1, 0x34, 0x03, 0x32, 0x00, + 0x04, 0x32, 0x24, 0xf9, 0x2a, 0x4b, 0x53, 0x29, 0x16, 0x22, 0xa6, 0xd7, + 0x35, 0xb8, 0xc8, 0xd4, 0x16, 0x22, 0x5e, 0xfd, 0xce, 0x34, 0xf7, 0x1c, + 0xd3, 0x0c, 0xea, 0xf3, 0x71, 0xbe, 0x2e, 0x40, 0x61, 0x2b, 0x31, 0x85, + 0xcb, 0x6b, 0xec, 0x59, 0xfc, 0x19, 0x31, 0xb0, 0x45, 0x04, 0x41, 0xea, + 0xf9, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp224r1 */ +const unsigned char test_ec_secp224r1[] = { + 0x30, 0x68, 0x02, 0x01, 0x01, 0x04, 0x1c, 0x74, 0x02, 0x38, 0xee, 0x23, + 0x01, 0xa0, 0x11, 0x8c, 0xfe, 0xd1, 0xfb, 0x66, 0x6e, 0x04, 0x92, 0x9e, + 0xe9, 0x75, 0x9b, 0xaf, 0x5a, 0xf2, 0x9a, 0x64, 0x16, 0x83, 0x08, 0xa0, + 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x21, 0xa1, 0x3c, 0x03, 0x3a, + 0x00, 0x04, 0xd3, 0xe3, 0x0e, 0x63, 0x84, 0x9d, 0xbb, 0x5e, 0xb2, 0xb4, + 0x2d, 0x28, 0xe6, 0x45, 0x5d, 0xea, 0xae, 0x4e, 0x17, 0x8a, 0x88, 0xe8, + 0x68, 0xce, 0x44, 0xc5, 0xd2, 0xf9, 0xef, 0x10, 0x20, 0xe6, 0x07, 0x08, + 0x47, 0xde, 0xaa, 0xb4, 0xda, 0x38, 0x5e, 0xf2, 0x2e, 0xc4, 0x94, 0x01, + 0xba, 0xc4, 0x57, 0xf1, 0xee, 0x51, 0xba, 0x38, 0x13, 0x30, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp256r1 */ +const unsigned char test_ec_secp256r1[] = { + 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x9e, 0x24, 0x0a, 0x03, 0x94, + 0x40, 0x32, 0xf9, 0x9b, 0x41, 0xfd, 0x83, 0x4d, 0xa9, 0x31, 0x98, 0xaf, + 0xa3, 0x09, 0x6e, 0xc3, 0x05, 0x39, 0xb6, 0x67, 0xb0, 0x32, 0x83, 0x22, + 0xd1, 0xe2, 0x93, 0xa0, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, + 0x03, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x78, 0xfa, 0x74, + 0x37, 0x63, 0x6d, 0xda, 0x49, 0xa5, 0x6b, 0x33, 0x0d, 0x5b, 0xc1, 0x39, + 0x67, 0x83, 0x1a, 0x18, 0x9c, 0x31, 0xf4, 0x83, 0xc3, 0xfe, 0xc1, 0x96, + 0x7d, 0x22, 0x21, 0x51, 0x52, 0x78, 0x46, 0x50, 0xdc, 0x92, 0xb9, 0x0b, + 0xf0, 0xe5, 0x80, 0x00, 0xc4, 0x07, 0x7d, 0x16, 0xe0, 0x09, 0x55, 0x29, + 0x9d, 0x3c, 0x53, 0x42, 0xf4, 0x58, 0xff, 0x93, 0xc1, 0xaa, 0x23, 0xd5, + 0x3e, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp384r1 */ +const unsigned char test_ec_secp384r1[] = { + 0x30, 0x81, 0xa4, 0x02, 0x01, 0x01, 0x04, 0x30, 0x59, 0x92, 0x61, 0x10, + 0xdd, 0x83, 0x76, 0x99, 0xb5, 0xc4, 0x08, 0xe3, 0x3d, 0xb8, 0x8c, 0xac, + 0x5d, 0x46, 0x7f, 0x96, 0x9f, 0x7c, 0x40, 0xa0, 0xbf, 0xe8, 0xf0, 0x6b, + 0xcf, 0x1d, 0x2a, 0xe8, 0xb1, 0x90, 0xb1, 0x6c, 0xc3, 0xcf, 0x01, 0x9f, + 0xc4, 0x2c, 0x0e, 0x9b, 0x05, 0x07, 0xce, 0xed, 0xa0, 0x07, 0x06, 0x05, + 0x2b, 0x81, 0x04, 0x00, 0x22, 0xa1, 0x64, 0x03, 0x62, 0x00, 0x04, 0x90, + 0x73, 0x8b, 0xcc, 0x2a, 0x0d, 0x1e, 0xcc, 0x6e, 0x4e, 0x14, 0xbc, 0x51, + 0x2c, 0xb6, 0xce, 0xdb, 0xb2, 0xc2, 0xdd, 0x20, 0xf6, 0xf5, 0x20, 0xa7, + 0xff, 0x98, 0x37, 0x2a, 0x8c, 0x35, 0xe2, 0xf8, 0x3e, 0xf1, 0xd6, 0x5e, + 0x79, 0x84, 0xe8, 0x43, 0x04, 0x9c, 0xc3, 0xe0, 0xfe, 0x2f, 0x4f, 0x82, + 0xb1, 0xee, 0xec, 0x2b, 0x11, 0x49, 0x8f, 0xb4, 0x77, 0xce, 0x74, 0x11, + 0xbb, 0x16, 0x6b, 0x69, 0xd2, 0xee, 0x01, 0xff, 0x99, 0xd1, 0x0f, 0x57, + 0x46, 0x2d, 0x83, 0xfe, 0x17, 0x4d, 0xcc, 0x59, 0x7d, 0xa5, 0x4a, 0x52, + 0x39, 0x4f, 0x6a, 0xe1, 0xb6, 0x21, 0xbe, 0x74, 0x72, 0xd2, 0x51, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp521r1 */ +const unsigned char test_ec_secp521r1[] = { + 0x30, 0x81, 0xdc, 0x02, 0x01, 0x01, 0x04, 0x42, 0x00, 0x51, 0xcf, 0xff, + 0x6d, 0x27, 0x46, 0x89, 0x81, 0x7e, 0x9d, 0x99, 0x5a, 0x28, 0x6b, 0x2b, + 0x69, 0x55, 0xdb, 0x5b, 0xde, 0x1c, 0x47, 0x69, 0x05, 0x99, 0x9e, 0xa3, + 0x81, 0x5b, 0x5c, 0x4c, 0xe8, 0x7e, 0xde, 0x0a, 0x58, 0x52, 0x05, 0x0a, + 0x26, 0xac, 0x4b, 0xb0, 0x55, 0x2d, 0xdf, 0xab, 0x0e, 0x3e, 0x17, 0x27, + 0xca, 0x8c, 0xc1, 0x5b, 0x2b, 0xf1, 0x51, 0x5f, 0x33, 0xee, 0x91, 0xb8, + 0x68, 0x28, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0xa1, + 0x81, 0x89, 0x03, 0x81, 0x86, 0x00, 0x04, 0x01, 0xcf, 0xdb, 0xee, 0xaf, + 0xc1, 0x2a, 0xa1, 0x07, 0x67, 0x1d, 0x48, 0xea, 0x61, 0x17, 0xd0, 0x16, + 0x7e, 0x91, 0x41, 0x59, 0x67, 0x53, 0x86, 0x4d, 0xe5, 0xc8, 0xfe, 0xc5, + 0x0d, 0x17, 0xab, 0x8d, 0x30, 0xff, 0x00, 0xf9, 0x52, 0x2e, 0x87, 0x49, + 0xc2, 0xe1, 0x37, 0x10, 0x9a, 0xd5, 0x78, 0xbe, 0x41, 0x0f, 0x28, 0xbe, + 0x2b, 0x13, 0x69, 0x1f, 0xb2, 0xbc, 0xde, 0x26, 0x41, 0x58, 0xe7, 0x1b, + 0x23, 0x00, 0x37, 0xe9, 0x1d, 0x15, 0x23, 0x0b, 0x52, 0xfb, 0x4b, 0xb7, + 0x8e, 0xa7, 0x19, 0x5b, 0x0d, 0x63, 0x60, 0xaf, 0x55, 0xd5, 0xba, 0xed, + 0xe2, 0xfb, 0x06, 0x8b, 0xd5, 0x45, 0xd3, 0x1e, 0x40, 0x99, 0xba, 0x3a, + 0x2a, 0xa2, 0x54, 0x2a, 0x28, 0x6b, 0x7c, 0xe6, 0x4c, 0x61, 0xf6, 0x2c, + 0x3c, 0x3c, 0xda, 0xc4, 0x28, 0xf8, 0x1d, 0x99, 0x6e, 0xc3, 0x10, 0x25, + 0x23, 0xe5, 0x75, 0x57, 0x6e, 0x70, 0xff, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_bp256r1 */ +const unsigned char test_ec_bp256r1[] = { + 0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x20, 0x53, 0xd7, 0x10, 0x63, 0x7f, + 0x58, 0x46, 0x73, 0xcc, 0x4c, 0x8f, 0xdb, 0x43, 0xc5, 0xc5, 0x17, 0x9e, + 0x07, 0xe4, 0x87, 0xc6, 0x80, 0xd5, 0x9e, 0x5e, 0xc8, 0x38, 0x70, 0xc2, + 0x4c, 0xb4, 0xf7, 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, + 0x08, 0x01, 0x01, 0x07, 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x49, 0xcd, + 0x94, 0xf2, 0x2b, 0x12, 0xff, 0x6e, 0xdf, 0x5f, 0x1a, 0xab, 0xf1, 0x49, + 0xaa, 0x46, 0x1d, 0x18, 0xb5, 0xa1, 0x4e, 0xd3, 0x88, 0x62, 0x01, 0x42, + 0x9b, 0x9e, 0xa0, 0xc1, 0x38, 0x24, 0x3f, 0x64, 0x8c, 0xf6, 0x65, 0xd7, + 0x7c, 0x4a, 0xad, 0x86, 0xe4, 0x2f, 0xf8, 0x20, 0x21, 0xb7, 0x7b, 0x50, + 0x9e, 0xf6, 0xa2, 0x44, 0x41, 0x63, 0xae, 0xd9, 0xd3, 0xaf, 0x35, 0x97, + 0xc7, 0x02, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_bp384r1 */ +const unsigned char test_ec_bp384r1[] = { + 0x30, 0x81, 0xa8, 0x02, 0x01, 0x01, 0x04, 0x30, 0x4a, 0x28, 0x9c, 0xc2, + 0xf0, 0xfd, 0x7c, 0xdb, 0xe3, 0xd1, 0x03, 0xb9, 0xf1, 0x3c, 0xb5, 0xaa, + 0x8e, 0xb6, 0x4d, 0x93, 0xa3, 0xac, 0x1f, 0x4f, 0x1d, 0x67, 0x41, 0x75, + 0x8d, 0x86, 0xd5, 0xd8, 0x19, 0x9e, 0xb8, 0x6a, 0xf9, 0x29, 0x51, 0x26, + 0xbf, 0x70, 0xfc, 0x3e, 0x6f, 0xcf, 0x1e, 0xcc, 0xa0, 0x0b, 0x06, 0x09, + 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x0b, 0xa1, 0x64, 0x03, + 0x62, 0x00, 0x04, 0x3d, 0x98, 0x26, 0x32, 0x82, 0xbb, 0xc5, 0x0b, 0x3f, + 0x77, 0x76, 0x91, 0xeb, 0x63, 0xab, 0xa8, 0x4f, 0x13, 0x69, 0x6e, 0x73, + 0x0f, 0x86, 0x23, 0x19, 0x0d, 0xec, 0x85, 0xe9, 0xea, 0xe3, 0x30, 0xfd, + 0x53, 0xef, 0xd2, 0xa1, 0x9c, 0x4d, 0x23, 0xf7, 0x26, 0x02, 0x98, 0x01, + 0x99, 0x95, 0x53, 0x87, 0x16, 0x11, 0x09, 0x8c, 0x34, 0xa9, 0x11, 0xcb, + 0x75, 0x1a, 0x72, 0xa8, 0x82, 0xc5, 0xdb, 0x92, 0x17, 0x59, 0xa6, 0xc0, + 0x16, 0x97, 0xf5, 0xba, 0x6c, 0x5b, 0x87, 0x4d, 0xa4, 0xff, 0x59, 0xeb, + 0xe9, 0xf4, 0x3f, 0x78, 0x6e, 0x5e, 0xff, 0x18, 0x36, 0x4e, 0x06, 0x27, + 0x5b, 0x00, 0x6a, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_bp512r1 */ +const unsigned char test_ec_bp512r1[] = { + 0x30, 0x81, 0xda, 0x02, 0x01, 0x01, 0x04, 0x40, 0x35, 0x8e, 0xa9, 0xb9, + 0xe1, 0x55, 0xf3, 0x9e, 0x8a, 0x26, 0x8a, 0x9c, 0x29, 0xb1, 0x47, 0xc5, + 0x3e, 0x0e, 0x16, 0x7f, 0x6d, 0x3f, 0x8d, 0x5c, 0x05, 0xe9, 0xc1, 0x52, + 0x76, 0xa2, 0x47, 0x6a, 0x42, 0xd8, 0x30, 0xc2, 0x41, 0x14, 0xf9, 0x05, + 0x3e, 0x9c, 0xfa, 0xa6, 0x49, 0xfe, 0xb4, 0x9d, 0xfb, 0x9c, 0x45, 0x68, + 0x03, 0xb7, 0xae, 0x51, 0xcf, 0x61, 0x41, 0x10, 0x7f, 0xa7, 0xf4, 0x2b, + 0xa0, 0x0b, 0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, + 0x0d, 0xa1, 0x81, 0x85, 0x03, 0x81, 0x82, 0x00, 0x04, 0xa7, 0xbf, 0xf3, + 0xd0, 0xa8, 0x3d, 0xad, 0xfc, 0x50, 0x65, 0xbf, 0x30, 0x61, 0x79, 0x39, + 0x64, 0x36, 0xa9, 0x62, 0x74, 0x97, 0x82, 0xc8, 0xba, 0x1b, 0x6a, 0xaa, + 0x48, 0x0f, 0x7f, 0x56, 0x4c, 0xad, 0x47, 0x13, 0x5a, 0x14, 0x50, 0x60, + 0x54, 0xa8, 0x3e, 0x6d, 0xa7, 0x87, 0xfe, 0x1d, 0x41, 0x2b, 0x0a, 0x7e, + 0xaf, 0x0e, 0xe9, 0xcc, 0xce, 0x44, 0x5f, 0x51, 0x88, 0x22, 0x22, 0xf9, + 0x63, 0x6e, 0xdd, 0x99, 0xbb, 0xd5, 0x14, 0x9b, 0x10, 0x30, 0xa3, 0xe6, + 0x60, 0x9a, 0xa9, 0xa4, 0x42, 0x79, 0xa8, 0xd2, 0x74, 0x7e, 0xf9, 0x02, + 0x71, 0x8d, 0xd6, 0xed, 0x52, 0xb1, 0x1b, 0xdb, 0x0d, 0x6f, 0x49, 0xda, + 0x70, 0x5b, 0xf4, 0x70, 0x98, 0x11, 0xa4, 0xec, 0x4c, 0x9d, 0x67, 0x5f, + 0x3b, 0xea, 0x1c, 0x02, 0x46, 0x89, 0xff, 0xc2, 0x33, 0xa3, 0xa9, 0x57, + 0x36, 0xd8, 0x10, 0x0e, 0xf6, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_curve25519 */ +const unsigned char test_ec_curve25519[] = { + 0x30, 0x2e, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6e, + 0x04, 0x22, 0x04, 0x20, 0xd0, 0x40, 0x4f, 0x5d, 0xf9, 0x7e, 0x1c, 0x24, + 0xd6, 0x68, 0x08, 0x29, 0x5b, 0xfd, 0x49, 0xaa, 0xd0, 0x6f, 0x8e, 0x44, + 0x13, 0x52, 0x84, 0x07, 0x79, 0x8a, 0xda, 0x69, 0xa2, 0xa0, 0xf6, 0x52, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp192k1 */ +const unsigned char test_ec_secp192k1[] = { + 0x30, 0x5c, 0x02, 0x01, 0x01, 0x04, 0x18, 0xca, 0xa6, 0x5e, 0x57, 0x3d, + 0xb3, 0x0f, 0x12, 0x29, 0x4f, 0x5e, 0xc8, 0xb3, 0x3f, 0x6a, 0x1a, 0x8d, + 0x32, 0xb9, 0x9d, 0xbe, 0x0f, 0x7b, 0x95, 0xa0, 0x07, 0x06, 0x05, 0x2b, + 0x81, 0x04, 0x00, 0x1f, 0xa1, 0x34, 0x03, 0x32, 0x00, 0x04, 0x31, 0x24, + 0xcf, 0x44, 0xb3, 0x62, 0x5a, 0x1d, 0xb6, 0xfd, 0xf7, 0xee, 0x5c, 0x65, + 0x8c, 0x43, 0x6b, 0x05, 0x17, 0xe5, 0x12, 0x75, 0xf8, 0xe2, 0xbd, 0xb1, + 0xf2, 0x0e, 0x66, 0xae, 0x39, 0xad, 0xc6, 0x6d, 0xb8, 0x02, 0xb2, 0x72, + 0x4a, 0xd5, 0x37, 0xdc, 0x23, 0x00, 0x28, 0x6e, 0x1b, 0x98, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_secp256k1 */ +const unsigned char test_ec_secp256k1[] = { + 0x30, 0x74, 0x02, 0x01, 0x01, 0x04, 0x20, 0x3a, 0x18, 0xe9, 0x5c, 0x8e, + 0xde, 0xb5, 0x8e, 0x1b, 0xd5, 0x36, 0xa6, 0x01, 0xb6, 0x3d, 0x4c, 0xe1, + 0x86, 0x65, 0x3b, 0x77, 0xb5, 0xfd, 0x3c, 0xc8, 0x6f, 0x15, 0x16, 0x0b, + 0x16, 0x88, 0x80, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x0a, + 0xa1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x0f, 0x63, 0x3a, 0x58, 0xa9, 0xc1, + 0xbb, 0x56, 0x12, 0xe1, 0x3d, 0xff, 0x91, 0x27, 0x06, 0xca, 0x4e, 0x46, + 0xbb, 0xdb, 0x9b, 0xb8, 0x62, 0xec, 0xd9, 0x39, 0xa8, 0x02, 0x08, 0x1c, + 0x1c, 0xb8, 0x0d, 0xe1, 0x28, 0xeb, 0x06, 0xca, 0xb6, 0x50, 0x5e, 0x99, + 0xe0, 0x24, 0x20, 0xef, 0x72, 0xe6, 0x5d, 0x27, 0x96, 0x25, 0x7f, 0x6e, + 0xf6, 0x65, 0x43, 0xe1, 0xaf, 0x6c, 0x71, 0x86, 0x29, 0xb8, +}; +/* END FILE */ + +/* This macro was generated from tests/scripts/generate_test_keys.py */ +/* BEGIN FILE string macro test_ec_curve448 */ +const unsigned char test_ec_curve448[] = { + 0x30, 0x46, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2b, 0x65, 0x6f, + 0x04, 0x3a, 0x04, 0x38, 0x74, 0xe8, 0x0c, 0xd1, 0xf3, 0x1d, 0x38, 0xae, + 0x1d, 0x57, 0x6e, 0xfd, 0x8a, 0x5f, 0xc2, 0xf0, 0x48, 0x95, 0x41, 0xc9, + 0x75, 0x31, 0x6f, 0x80, 0xea, 0xc2, 0xdf, 0x0f, 0x86, 0xc6, 0xda, 0x0a, + 0x6f, 0x6e, 0xeb, 0x45, 0xc0, 0x03, 0xbf, 0x13, 0xb3, 0x43, 0xa1, 0xb2, + 0x57, 0x27, 0xd4, 0xc7, 0xc7, 0x7a, 0xf7, 0x29, 0xa7, 0x78, 0xe1, 0xe9, +}; +/* END FILE */ diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 67c06d4123..1bc12c207f 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -187,36 +187,46 @@ #if defined(MBEDTLS_PK_PARSE_C) #include <../src/test_keys.h> -static int get_predefined_key_data(int is_rsa, int curve_or_keybits, - unsigned char **outbuf, size_t *out_buf_size) +struct key_lut_element { + int curve_or_keybits; + const unsigned char *key; + size_t key_len; +}; + +struct key_lut_element keys_lut[] = { + { 1024, test_rsa_1024, sizeof(test_rsa_1024) }, + { 1026, test_rsa_1026, sizeof(test_rsa_1026) }, + { 1028, test_rsa_1028, sizeof(test_rsa_1028) }, + { 1030, test_rsa_1030, sizeof(test_rsa_1030) }, + { 2048, test_rsa_2048, sizeof(test_rsa_2048) }, + { 4096, test_rsa_4096, sizeof(test_rsa_4096) }, + { MBEDTLS_ECP_DP_SECP192R1, test_ec_secp192r1, sizeof(test_ec_secp192r1) }, + { MBEDTLS_ECP_DP_SECP224R1, test_ec_secp224r1, sizeof(test_ec_secp224r1) }, + { MBEDTLS_ECP_DP_SECP256R1, test_ec_secp256r1, sizeof(test_ec_secp256r1) }, + { MBEDTLS_ECP_DP_SECP384R1, test_ec_secp384r1, sizeof(test_ec_secp384r1) }, + { MBEDTLS_ECP_DP_SECP521R1, test_ec_secp521r1, sizeof(test_ec_secp521r1) }, + { MBEDTLS_ECP_DP_BP256R1, test_ec_bp256r1, sizeof(test_ec_bp256r1) }, + { MBEDTLS_ECP_DP_BP384R1, test_ec_bp384r1, sizeof(test_ec_bp384r1) }, + { MBEDTLS_ECP_DP_BP512R1, test_ec_bp512r1, sizeof(test_ec_bp512r1) }, + { MBEDTLS_ECP_DP_CURVE25519, test_ec_curve25519, sizeof(test_ec_curve25519) }, + { MBEDTLS_ECP_DP_SECP192K1, test_ec_secp192k1, sizeof(test_ec_secp192k1) }, + { MBEDTLS_ECP_DP_SECP256K1, test_ec_secp256k1, sizeof(test_ec_secp256k1) }, + { MBEDTLS_ECP_DP_CURVE448, test_ec_curve448, sizeof(test_ec_curve448) }, +}; + +static int get_predefined_key_data(int curve_or_keybits, + const unsigned char **key, size_t *key_len) { - const char *key_data_hex = NULL; - size_t out_buf_len = 0; - - if (is_rsa) { - size_t i; - for (i = 0; i < ARRAY_LENGTH(rsa_key_data_lut); i++) { - if (curve_or_keybits == rsa_key_data_lut[i].bits) { - key_data_hex = rsa_key_data_lut[i].key; - break; - } + size_t i; + for (i = 0; i < ARRAY_LENGTH(keys_lut); i++) { + if (curve_or_keybits == keys_lut[i].curve_or_keybits) { + *key = keys_lut[i].key; + *key_len = keys_lut[i].key_len; + return 0; } - } else { - key_data_hex = ec_key_data_lut[curve_or_keybits]; } - if (key_data_hex == NULL) { - return MBEDTLS_ERR_PK_BAD_INPUT_DATA; - } - - *out_buf_size = strlen(key_data_hex)/2; - *outbuf = mbedtls_calloc(*out_buf_size, sizeof(unsigned char)); - if (*outbuf == NULL) { - return MBEDTLS_ERR_PK_ALLOC_FAILED; - } - mbedtls_test_unhexify(*outbuf, *out_buf_size, key_data_hex, &out_buf_len); - - return 0; + return MBEDTLS_ERR_PK_BAD_INPUT_DATA; } /** Fill the provided PK context with a proper key. @@ -237,12 +247,11 @@ static int get_predefined_key_data(int is_rsa, int curve_or_keybits, */ static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, int curve_or_keybits) { - unsigned char *key_data = NULL; + const unsigned char *key_data = NULL; size_t key_data_len = 0; int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; - int is_rsa = (curve_or_keybits >= 1024); - TEST_EQUAL(get_predefined_key_data(is_rsa, curve_or_keybits, &key_data, &key_data_len), 0); + TEST_EQUAL(get_predefined_key_data(curve_or_keybits, &key_data, &key_data_len), 0); TEST_EQUAL(mbedtls_pk_parse_key(pk, key_data, key_data_len, NULL, 0, mbedtls_test_rnd_std_rand, NULL), 0); /* Override pk_info. */ @@ -250,7 +259,6 @@ static int pk_genkey(mbedtls_pk_context *pk, const mbedtls_pk_info_t *pk_info, i ret = 0; exit: - mbedtls_free(key_data); return ret; } @@ -278,11 +286,11 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, { psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; psa_status_t status = PSA_ERROR_GENERIC_ERROR; - unsigned char *key_data = NULL; + const unsigned char *key_data = NULL; size_t key_data_size = 0; /* Overall size of key_data in bytes. It includes leading * zeros (if any). */ size_t key_data_len = 0; /* Length of valid bytes in key_data. */ - unsigned char *key_data_start; + const unsigned char *key_data_start; /* Get the predefined key: * - RSA keys are already in a valid format to be imported into PSA. @@ -291,16 +299,16 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, * unrelevant data and go directly to the private key. */ if (PSA_KEY_TYPE_IS_RSA(type)) { - TEST_EQUAL(get_predefined_key_data(1, bits, &key_data, &key_data_size), 0); - key_data_start = key_data; + TEST_EQUAL(get_predefined_key_data(bits, &key_data, &key_data_size), 0); + key_data_start = (unsigned char *) key_data; key_data_len = key_data_size; } else { mbedtls_ecp_group_id grp_id; grp_id = mbedtls_ecc_group_from_psa(PSA_KEY_TYPE_ECC_GET_FAMILY(type), bits); - TEST_EQUAL(get_predefined_key_data(0, grp_id, &key_data, &key_data_size), 0); + TEST_EQUAL(get_predefined_key_data(grp_id, &key_data, &key_data_size), 0); - unsigned char *p = key_data; - unsigned char *end = key_data + key_data_size; + unsigned char *p = (unsigned char *) key_data; + unsigned char *end = (unsigned char *) key_data + key_data_size; size_t len; int version; @@ -325,7 +333,6 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, status = psa_import_key(&attributes, key_data_start, key_data_len, key); exit: - mbedtls_free(key_data); return status; } #endif /* MBEDTLS_PSA_CRYPTO_CLIENT */