From 2b9252cd8f3d480ab3f0fa756aed47d39f7ba7d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20P=C3=A9gouri=C3=A9-Gonnard?= Date: Wed, 3 Jul 2013 12:13:56 +0200 Subject: [PATCH] Add tests for x509parse_key_ec() Test files were generated as follows: openssl ecparam -name prime192v1 -genkey > key.pem openssl ec -in key.pem -pubout -outform PEM > pub.pem openssl ec -in key.pem -pubout -outform DER > pub.der openssl ec -in key.pem -outform pem > prv.sec1.pem openssl ec -in key.pem -outform der > prv.sec1.der openssl ec -in key.pem -des -passout pass:polar -outform pem > prv.sec1.pw.pem openssl pkcs8 -topk8 -in key.pem -nocrypt -outform pem > prv.pk8.pem openssl pkcs8 -topk8 -in key.pem -nocrypt -outform der > prv.pk8.der openssl pkcs8 -topk8 -in key.pem -passout pass:polar -outform der \ > prv.pk8.pw.der openssl pkcs8 -topk8 -in key.pem -passout pass:polar -outform pem \ > prv.pk8.pw.pem --- tests/data_files/ec_prv.pk8.der | Bin 0 -> 113 bytes tests/data_files/ec_prv.pk8.pem | 5 ++++ tests/data_files/ec_prv.pk8.pw.der | Bin 0 -> 154 bytes tests/data_files/ec_prv.pk8.pw.pem | 6 +++++ tests/data_files/ec_prv.sec1.der | Bin 0 -> 97 bytes tests/data_files/ec_prv.sec1.pem | 5 ++++ tests/data_files/ec_prv.sec1.pw.pem | 8 ++++++ tests/suites/test_suite_x509parse.data | 28 +++++++++++++++++++++ tests/suites/test_suite_x509parse.function | 21 ++++++++++++++++ 9 files changed, 73 insertions(+) create mode 100644 tests/data_files/ec_prv.pk8.der create mode 100644 tests/data_files/ec_prv.pk8.pem create mode 100644 tests/data_files/ec_prv.pk8.pw.der create mode 100644 tests/data_files/ec_prv.pk8.pw.pem create mode 100644 tests/data_files/ec_prv.sec1.der create mode 100644 tests/data_files/ec_prv.sec1.pem create mode 100644 tests/data_files/ec_prv.sec1.pw.pem diff --git a/tests/data_files/ec_prv.pk8.der b/tests/data_files/ec_prv.pk8.der new file mode 100644 index 0000000000000000000000000000000000000000..f2bd2a9271ffd2601625ab95996180139b18b5b3 GIT binary patch literal 113 zcmXrWXJTY95N2c7YV$Z}%f!gW0cJ2WGO~mk1Tz6C3FE%D6^)N9zIyJ>XASoBE`EGX z(BSW}ler5`n2i`%0!#PYH&|Tod2aCJXF^3CHyG2me%Z3U>{!Y7W1mB|Us7Syk?*IS* literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_prv.pk8.pem b/tests/data_files/ec_prv.pk8.pem new file mode 100644 index 000000000..dbeab7c2f --- /dev/null +++ b/tests/data_files/ec_prv.pk8.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MG8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQEEVTBTAgEBBBgzjoaogeI49Um9bwVT +SUtz49YRMP3GyW2hNAMyAARRdbzfMKNw851Tk+YScojYAWe19LS3dsZ098bzVLfS +JAYsH2hUtaevD+V46vJY8Cc= +-----END PRIVATE KEY----- diff --git a/tests/data_files/ec_prv.pk8.pw.der b/tests/data_files/ec_prv.pk8.pw.der new file mode 100644 index 0000000000000000000000000000000000000000..efcd809ab35e77ac406ba51efaf9b63353679f97 GIT binary patch literal 154 zcmV;L0A>F$ftN5F1_>&LNQU5$Zk+N00tf&Ec+#97{g|(I5l0|{ zyBiBVy|MkoobG;Ew0OHu32#4nbX3cP6Ig(S4CuKX%z>5HUK>cW;;H}|-t9#)hxi3r zEn{}y9_S$cazhjHd!n%W{+IQq!FfBZgnR8KYK#PF>`}L}^IenZyt$Vf0iY7vvIJs7 IValeP+&SDv^#A|> literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_prv.pk8.pw.pem b/tests/data_files/ec_prv.pk8.pw.pem new file mode 100644 index 000000000..0b50cd7b0 --- /dev/null +++ b/tests/data_files/ec_prv.pk8.pw.pem @@ -0,0 +1,6 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIGXMBsGCSqGSIb3DQEFAzAOBAiO5a+OuKjOdwICCAAEeGEBv8oxHZy3GvR28QHJ +Xq1Fq/UZrWklH6RI8VTx4WS6UK88PzJSmLMxO3pl4L/CUNfJ4RI9+YHFRZyf8Tcr +5di4xMQaEqh08PXwyErqOerBGc9DsFpcpFAsn6Sa9KLG5aritGrSkPyDACloHyKR +lJyTE6fTVwG5xQ== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/tests/data_files/ec_prv.sec1.der b/tests/data_files/ec_prv.sec1.der new file mode 100644 index 0000000000000000000000000000000000000000..fe336b71055afccfda17798c806c7b94a5cabbea GIT binary patch literal 97 zcmV-n0G|IaUjhLE1Q;`phNyw!IQ2=rZv|6HOLODa5itG6$!(wt1_&yKNX|V20Rf>j z12O;vQFXlEFr#quol}$M5^{*x0cW-Jw6}J~boa*dRJYP31}quXE DZeJ@@ literal 0 HcmV?d00001 diff --git a/tests/data_files/ec_prv.sec1.pem b/tests/data_files/ec_prv.sec1.pem new file mode 100644 index 000000000..a8a7990fd --- /dev/null +++ b/tests/data_files/ec_prv.sec1.pem @@ -0,0 +1,5 @@ +-----BEGIN EC PRIVATE KEY----- +MF8CAQEEGDOOhqiB4jj1Sb1vBVNJS3Pj1hEw/cbJbaAKBggqhkjOPQMBAaE0AzIA +BFF1vN8wo3DznVOT5hJyiNgBZ7X0tLd2xnT3xvNUt9IkBiwfaFS1p68P5Xjq8ljw +Jw== +-----END EC PRIVATE KEY----- diff --git a/tests/data_files/ec_prv.sec1.pw.pem b/tests/data_files/ec_prv.sec1.pw.pem new file mode 100644 index 000000000..62a0860bd --- /dev/null +++ b/tests/data_files/ec_prv.sec1.pw.pem @@ -0,0 +1,8 @@ +-----BEGIN EC PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-CBC,AA94892A169FA426 + +gSkFuUENNke5MvkWHc11/w1NQWBxaIxGT+d5oRcqs44D3tltVOwtdnYexoD9uSIL +wMFFRLL6I5ii1Naa38nPOMaa7kLU2J3jY8SeIH1rQ43X6tlpv9WFGqDn/m6X7oKo +RMMfGdicPZg= +-----END EC PRIVATE KEY----- diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data index 824d92828..def0021d4 100644 --- a/tests/suites/test_suite_x509parse.data +++ b/tests/suites/test_suite_x509parse.data @@ -194,6 +194,34 @@ X509 Parse Public EC Key #2 (RFC 5480, PEM) depends_on:POLARSSL_PEM_C:POLARSSL_ECP_C:POLARSSL_FS_IO x509parse_public_keyfile_ec:"data_files/ec_pub.pem":0 +X509 Parse EC Key #1 (SEC1 DER) +depends_on:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.sec1.der":NULL:0 + +X509 Parse EC Key #2 (SEC1 PEM) +depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.sec1.pem":NULL:0 + +X509 Parse EC Key #3 (SEC1 PEM encrypted) +depends_on:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.sec1.pw.pem":"polar":0 + +X509 Parse EC Key #4 (PKCS8 DER) +depends_on:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.pk8.der":NULL:0 + +X509 Parse EC Key #5 (PKCS8 PEM) +depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.pk8.pem":NULL:0 + +X509 Parse EC Key #6 (PKCS8 encrypted DER) +depends_on:POLARSSL_DES_C:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.pk8.pw.der":"polar":0 + +X509 Parse EC Key #7 (PKCS8 encrypted PEM) +depends_on:POLARSSL_DES_C:POLARSSL_PEM_C:POLARSSL_FS_IO:POLARSSL_ECP_C +x509parse_keyfile_ec:"data_files/ec_prv.pk8.pw.pem":"polar":0 + X509 Get Distinguished Name #1 depends_on:POLARSSL_PEM_C:POLARSSL_FS_IO x509_dn_gets:"data_files/server1.crt":subject:"C=NL, O=PolarSSL, CN=PolarSSL Server 1" diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function index ebb534a50..57653f798 100644 --- a/tests/suites/test_suite_x509parse.function +++ b/tests/suites/test_suite_x509parse.function @@ -200,6 +200,27 @@ x509parse_public_keyfile_ec:key_file:result } END_CASE +BEGIN_CASE +x509parse_keyfile_ec:key_file:password:result +{ + ecp_keypair eckey; + int res; + + ecp_keypair_init( &eckey ); + + res = x509parse_keyfile_ec( &eckey, {key_file}, {password} ); + + TEST_ASSERT( res == {result} ); + + if( res == 0 ) + { + TEST_ASSERT( ecp_check_prvkey( &eckey.grp, &eckey.d ) == 0 ); + } + + ecp_keypair_free( &eckey ); +} +END_CASE + BEGIN_CASE x509parse_crt:crt_data:result_str:result {