diff --git a/tests/data_files/Makefile b/tests/data_files/Makefile index db568ad5ba..01d2379d1e 100644 --- a/tests/data_files/Makefile +++ b/tests/data_files/Makefile @@ -17,7 +17,6 @@ FAKETIME ?= faketime TOP_DIR = ../.. MBEDTLS_CERT_WRITE ?= $(TOP_DIR)/programs/x509/cert_write MBEDTLS_CERT_REQ ?= $(TOP_DIR)/programs/x509/cert_req -MBEDTLS_GEN_KEY ?= $(TOP_DIR)/programs/pkey/gen_key ## Build the generated test data. Note that since the final outputs @@ -719,21 +718,6 @@ rsa_pkcs1_4096_clear.pem: $(OPENSSL) genrsa -out $@ 4096 all_final += rsa_pkcs1_4096_clear.pem -### RSA keys in DER format used in test_suite_pk. -rsa_1024.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1024 format=der filename="$@" -rsa_1026.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1026 format=der filename="$@" -rsa_1028.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1028 format=der filename="$@" -rsa_1030.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=1030 format=der filename="$@" -rsa_2048.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=2048 format=der filename="$@" -rsa_4096.der: $(MBEDTLS_GEN_KEY) - $(MBEDTLS_GEN_KEY) type=rsa rsa_keysize=4096 format=der filename="$@" -all_final += rsa_1024.der rsa_1026.der rsa_1028.der rsa_1030.der rsa_2048.der rsa_4096.der - ### ### PKCS1-encoded, encrypted RSA keys ### @@ -1205,41 +1189,6 @@ keys_rsa_all: keys_rsa_unenc keys_rsa_enc_basic keys_rsa_enc_pkcs8_v1 keys_rsa_e #### Generate various EC keys ################################################################ -### EC keys in DER format to be used in test_suite_pk. -seedfile: - ln -s $(TOP_DIR)/seedfile ./seedfile - -ec_brainpoolP256r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP256r1 format=der filename="$@" -ec_brainpoolP384r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP384r1 format=der filename="$@" -ec_brainpoolP512r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=brainpoolP512r1 format=der filename="$@" -ec_secp192k1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp192k1 format=der filename="$@" -ec_secp192r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp192r1 format=der filename="$@" -ec_secp224k1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp224k1 format=der filename="$@" -ec_secp224r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp224r1 format=der filename="$@" -ec_secp256k1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp256k1 format=der filename="$@" -ec_secp256r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp256r1 format=der filename="$@" -ec_secp384r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp384r1 format=der filename="$@" -ec_secp521r1.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=secp521r1 format=der filename="$@" -ec_x25519.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=x25519 format=der filename="$@" -ec_x448.der: seedfile - $(MBEDTLS_GEN_KEY) type=ec ec_curve=x448 format=der filename="$@" -all_final += ec_brainpoolP256r1.der ec_brainpoolP384r1.der ec_brainpoolP512r1.der \ - ec_secp192k1.der ec_secp192r1.der ec_secp224k1.der ec_secp224r1.der \ - ec_secp256k1.der ec_secp256r1.der ec_secp384r1.der ec_secp521r1.der \ - ec_x25519.der ec_x448.der - ### ### PKCS8 encoded ### diff --git a/tests/data_files/ec_brainpoolP256r1.der b/tests/data_files/ec_brainpoolP256r1.der deleted file mode 100644 index 5c9ce38a13..0000000000 Binary files a/tests/data_files/ec_brainpoolP256r1.der and /dev/null differ diff --git a/tests/data_files/ec_brainpoolP384r1.der b/tests/data_files/ec_brainpoolP384r1.der deleted file mode 100644 index 11e393d0a7..0000000000 Binary files a/tests/data_files/ec_brainpoolP384r1.der and /dev/null differ diff --git a/tests/data_files/ec_brainpoolP512r1.der b/tests/data_files/ec_brainpoolP512r1.der deleted file mode 100644 index 84fce0aa88..0000000000 Binary files a/tests/data_files/ec_brainpoolP512r1.der and /dev/null differ diff --git a/tests/data_files/ec_secp192k1.der b/tests/data_files/ec_secp192k1.der deleted file mode 100644 index 2d7c72848b..0000000000 Binary files a/tests/data_files/ec_secp192k1.der and /dev/null differ diff --git a/tests/data_files/ec_secp192r1.der b/tests/data_files/ec_secp192r1.der deleted file mode 100644 index 173258130a..0000000000 Binary files a/tests/data_files/ec_secp192r1.der and /dev/null differ diff --git a/tests/data_files/ec_secp224k1.der b/tests/data_files/ec_secp224k1.der deleted file mode 100644 index 108b52bc13..0000000000 Binary files a/tests/data_files/ec_secp224k1.der and /dev/null differ diff --git a/tests/data_files/ec_secp224r1.der b/tests/data_files/ec_secp224r1.der deleted file mode 100644 index 1ee94d7705..0000000000 Binary files a/tests/data_files/ec_secp224r1.der and /dev/null differ diff --git a/tests/data_files/ec_secp256k1.der b/tests/data_files/ec_secp256k1.der deleted file mode 100644 index 4b11a2e7dd..0000000000 Binary files a/tests/data_files/ec_secp256k1.der and /dev/null differ diff --git a/tests/data_files/ec_secp256r1.der b/tests/data_files/ec_secp256r1.der deleted file mode 100644 index d2cf8743ce..0000000000 Binary files a/tests/data_files/ec_secp256r1.der and /dev/null differ diff --git a/tests/data_files/ec_secp384r1.der b/tests/data_files/ec_secp384r1.der deleted file mode 100644 index 29860a463b..0000000000 Binary files a/tests/data_files/ec_secp384r1.der and /dev/null differ diff --git a/tests/data_files/ec_secp521r1.der b/tests/data_files/ec_secp521r1.der deleted file mode 100644 index 4f19fe48fc..0000000000 Binary files a/tests/data_files/ec_secp521r1.der and /dev/null differ diff --git a/tests/data_files/ec_x25519.der b/tests/data_files/ec_x25519.der deleted file mode 100644 index 5c1c32d6b4..0000000000 Binary files a/tests/data_files/ec_x25519.der and /dev/null differ diff --git a/tests/data_files/ec_x448.der b/tests/data_files/ec_x448.der deleted file mode 100644 index 849d4b83ad..0000000000 Binary files a/tests/data_files/ec_x448.der and /dev/null differ diff --git a/tests/data_files/rsa_1024.der b/tests/data_files/rsa_1024.der deleted file mode 100644 index 4f68112fa0..0000000000 Binary files a/tests/data_files/rsa_1024.der and /dev/null differ diff --git a/tests/data_files/rsa_1026.der b/tests/data_files/rsa_1026.der deleted file mode 100644 index 2c3d938b92..0000000000 Binary files a/tests/data_files/rsa_1026.der and /dev/null differ diff --git a/tests/data_files/rsa_1028.der b/tests/data_files/rsa_1028.der deleted file mode 100644 index 97c658c54e..0000000000 Binary files a/tests/data_files/rsa_1028.der and /dev/null differ diff --git a/tests/data_files/rsa_1030.der b/tests/data_files/rsa_1030.der deleted file mode 100644 index 754109d80f..0000000000 Binary files a/tests/data_files/rsa_1030.der and /dev/null differ diff --git a/tests/data_files/rsa_2048.der b/tests/data_files/rsa_2048.der deleted file mode 100644 index 4003161db9..0000000000 Binary files a/tests/data_files/rsa_2048.der and /dev/null differ diff --git a/tests/data_files/rsa_4096.der b/tests/data_files/rsa_4096.der deleted file mode 100644 index 875e47b555..0000000000 Binary files a/tests/data_files/rsa_4096.der and /dev/null differ diff --git a/tests/src/test_keys.h b/tests/src/test_keys.h new file mode 100644 index 0000000000..21737b247a --- /dev/null +++ b/tests/src/test_keys.h @@ -0,0 +1,311 @@ +/** + * 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; +}; + +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" }, +}; + +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", +}; diff --git a/tests/suites/test_suite_pk.function b/tests/suites/test_suite_pk.function index 535c13b958..4f490a18b5 100644 --- a/tests/suites/test_suite_pk.function +++ b/tests/suites/test_suite_pk.function @@ -184,22 +184,41 @@ #define MBEDTLS_MD_ALG_FOR_TEST MBEDTLS_MD_SHA512 #endif -const char *curve_names_lut[] = { - [MBEDTLS_ECP_DP_SECP192R1] = "secp192r1", - [MBEDTLS_ECP_DP_SECP224R1] = "secp224r1", - [MBEDTLS_ECP_DP_SECP256R1] = "secp256r1", - [MBEDTLS_ECP_DP_SECP384R1] = "secp384r1", - [MBEDTLS_ECP_DP_SECP521R1] = "secp521r1", - [MBEDTLS_ECP_DP_BP256R1] = "brainpoolP256r1", - [MBEDTLS_ECP_DP_BP384R1] = "brainpoolP384r1", - [MBEDTLS_ECP_DP_BP512R1] = "brainpoolP512r1", - [MBEDTLS_ECP_DP_CURVE25519] = "x25519", - [MBEDTLS_ECP_DP_SECP192K1] = "secp192k1", - [MBEDTLS_ECP_DP_SECP256K1] = "secp256k1", - [MBEDTLS_ECP_DP_CURVE448] = "x448", -}; - #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) +{ + 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; + } + } + } 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; +} + /** Fill the provided PK context with a proper key. * * This is a fake implementation of key generation because instead of generating @@ -217,26 +236,27 @@ const char *curve_names_lut[] = { */ static int pk_genkey(mbedtls_pk_context *pk, int curve_or_keybits) { - char file_name[128] = { 0 }; - int ret; + unsigned char *key_data = NULL; + size_t key_data_len = 0; + int ret = MBEDTLS_ERR_PK_BAD_INPUT_DATA; + int is_rsa = (mbedtls_pk_get_type(pk) == MBEDTLS_PK_RSA); + /* Dump pk_info since this is overridden by mbedtls_pk_parse_keyfile(). */ const mbedtls_pk_info_t *original_pk_info = pk->pk_info; - if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_RSA) { - sprintf(file_name, "data_files/rsa_%d.der", curve_or_keybits); - } else if (mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY || - mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECKEY_DH || - mbedtls_pk_get_type(pk) == MBEDTLS_PK_ECDSA) { - sprintf(file_name, "data_files/ec_%s.der", curve_names_lut[curve_or_keybits]); - } - - ret = mbedtls_pk_parse_keyfile(pk, file_name, NULL, mbedtls_test_rnd_std_rand, NULL); + TEST_EQUAL(get_predefined_key_data(is_rsa, 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); /* Restore pk_info. */ pk->pk_info = original_pk_info; + ret = 0; +exit: + mbedtls_free(key_data); return ret; } +#if defined(MBEDTLS_PSA_CRYPTO_CLIENT) /** Create a PSA key of the desired type and properties. * * This is similar to pk_genkey() above in the sense that it does not really @@ -261,51 +281,61 @@ 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; mbedtls_pk_context pk; - char file_name[128] = { 0 }; - unsigned char key_data[MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE] = { 0 }; - size_t key_data_len; + 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; int ret; mbedtls_pk_init(&pk); - /* Get the name of the key file to load. */ + /* Get the predefined key (in DER format) and parse it. */ if (PSA_KEY_TYPE_IS_RSA(type)) { - sprintf(file_name, "data_files/rsa_%lu.der", bits); - } else if (PSA_KEY_TYPE_IS_ECC(type)) { - psa_ecc_family_t ec_family = PSA_KEY_TYPE_ECC_GET_FAMILY(type); - mbedtls_ecp_group_id grp_id = mbedtls_ecc_group_from_psa(ec_family, bits); - sprintf(file_name, "data_files/ec_%s.der", curve_names_lut[grp_id]); + TEST_EQUAL(get_predefined_key_data(1, bits, &key_data, &key_data_size), 0); } else { - TEST_FAIL("Only EC or RSA key type is supported."); + 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); } - /* Parse the key file and write the key material to the key_data buffer. */ - TEST_EQUAL(mbedtls_pk_parse_keyfile(&pk, file_name, NULL, mbedtls_test_rnd_std_rand, NULL), 0); + TEST_EQUAL(mbedtls_pk_parse_key(&pk, key_data, key_data_size, NULL, 0, + mbedtls_test_rnd_std_rand, NULL), 0); + /* Resize key_data buffer. */ + mbedtls_free(key_data); + key_data = NULL; + TEST_CALLOC(key_data, MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE); + key_data_size = MBEDTLS_PK_WRITE_PUBKEY_MAX_SIZE; + + /* Export only the key data material in a PSA friendly format. + * + * Note: mbedtls_pk_write_key_der() and mbedtls_mpi_write_binary() write + * key data at the end of the provided buffer, whereas psa_export_key() + * writes the key at the beginning. + */ if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_RSA) { #if defined(MBEDTLS_PK_WRITE_C) - ret = mbedtls_pk_write_key_der(&pk, key_data, sizeof(key_data)); + ret = mbedtls_pk_write_key_der(&pk, key_data, key_data_size); TEST_ASSERT(ret > 0); key_data_len = (size_t) ret; + key_data_start = key_data + key_data_size - key_data_len; #else TEST_FAIL("RSA is unsupported"); #endif /* MBEDTLS_PK_WRITE_C */ } else if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_ECKEY) { -#if defined(MBEDTLS_PK_USE_EC_DATA) - PSA_ASSERT(psa_export_key(pk->priv_id, key_data, sizeof(key_data), &key_data_len)); +#if defined(MBEDTLS_PK_USE_PSA_EC_DATA) + PSA_ASSERT(psa_export_key(pk.priv_id, key_data, key_data_size, &key_data_len)); + key_data_start = key_data; #elif defined(MBEDTLS_PK_HAVE_ECC_KEYS) const mbedtls_ecp_keypair *ec_ctx = mbedtls_pk_ec_ro(pk); - TEST_EQUAL(mbedtls_mpi_write_binary(&(ec_ctx->d), key_data, sizeof(key_data)), 0); + TEST_EQUAL(mbedtls_mpi_write_binary(&(ec_ctx->d), key_data, key_data_size), 0); key_data_len = PSA_BITS_TO_BYTES(mbedtls_mpi_bitlen(&(ec_ctx->d))); + key_data_start = key_data + key_data_size - key_data_len; #else /* !MBEDTLS_PK_USE_EC_DATA && !MBEDTLS_PK_HAVE_ECC_KEYS */ TEST_FAIL("EC is unsupported"); #endif /* */ } else { TEST_FAIL("Unknown key type"); } - /* Data was written to the end of the key_data buffer so we shift that to - * the beginnig. */ - key_data_start = key_data + sizeof(key_data) - key_data_len; - memmove(key_data, key_data_start, key_data_len); /* Import the key into PSA. */ *key = MBEDTLS_SVC_KEY_ID_INIT; @@ -317,12 +347,14 @@ psa_status_t pk_psa_genkey(psa_key_type_t type, size_t bits, if (!mbedtls_svc_key_id_is_null(persistent_key_id)) { psa_set_key_id(&attributes, persistent_key_id); } - status = psa_import_key(&attributes, key_data, key_data_len, key); + status = psa_import_key(&attributes, key_data_start, key_data_len, key); exit: + mbedtls_free(key_data); mbedtls_pk_free(&pk); return status; } +#endif /* MBEDTLS_PSA_CRYPTO_CLIENT */ #endif /* MBEDTLS_PK_PARSE_C */ #if defined(MBEDTLS_PSA_CRYPTO_C) @@ -2563,6 +2595,7 @@ void pk_copy_from_psa_builtin_fail() PSA_VENDOR_RSA_GENERATE_MIN_KEY_BITS, PSA_KEY_USAGE_SIGN_HASH | PSA_KEY_USAGE_EXPORT, PSA_ALG_RSA_PKCS1V15_SIGN(PSA_ALG_SHA_256), + PSA_ALG_NONE, PSA_KEY_ID_NULL, &key_id)); TEST_EQUAL(mbedtls_pk_copy_from_psa(key_id, &pk_ctx), MBEDTLS_ERR_PK_BAD_INPUT_DATA); exit: