diff --git a/tests/data_files/ec_prv.pk8.der b/tests/data_files/ec_prv.pk8.der new file mode 100644 index 000000000..f2bd2a927 Binary files /dev/null and b/tests/data_files/ec_prv.pk8.der differ 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 000000000..efcd809ab Binary files /dev/null and b/tests/data_files/ec_prv.pk8.pw.der differ 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 000000000..fe336b710 Binary files /dev/null and b/tests/data_files/ec_prv.sec1.der differ 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 {