Skip to content

Commit 61abc47

Browse files
committed
Test each failure mode of pk_parse_key_pkcs1_der()
(Only the top-level ones, ie, for each call to eg asn1_get_mpi(), ensure there's at least one test case that makes this call fail in one way, but don't test the various ways to make asn1_get_mpi fail - that should be covered elsewhere.) - the new checks added by the previous commits needed exercising - existing tests sometimes had wrong descriptions or where passing for the wrong reason (eg with the "length mismatch" test, the function actually failed before reaching the length check) - while at it, add tests for the rest as well The valid minimal-size key was generated with: openssl genrsa 128 2>/dev/null | openssl rsa -outform der 2>/dev/null | xxd -p
1 parent b65370f commit 61abc47

File tree

1 file changed

+56
-5
lines changed

1 file changed

+56
-5
lines changed

tests/suites/test_suite_pkparse.data

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,9 +1072,12 @@ Parse EC Key #15 (SEC1 DER, secp256k1, SpecifiedECDomain)
10721072
depends_on:MBEDTLS_PEM_PARSE_C:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256K1_ENABLED:MBEDTLS_PK_PARSE_EC_EXTENDED
10731073
pk_parse_keyfile_ec:"data_files/ec_prv.specdom.der":"NULL":0
10741074

1075-
Key ASN1 (Incorrect first tag)
1075+
Key ASN1 (No data)
10761076
pk_parse_key:"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
10771077

1078+
Key ASN1 (First tag not Sequence)
1079+
pk_parse_key:"020100":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1080+
10781081
Key ASN1 (RSAPrivateKey, incorrect version tag)
10791082
depends_on:MBEDTLS_RSA_C
10801083
pk_parse_key:"300100":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
@@ -1091,13 +1094,61 @@ Key ASN1 (RSAPrivateKey, correct version, incorrect tag)
10911094
depends_on:MBEDTLS_RSA_C
10921095
pk_parse_key:"300402010000":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
10931096

1094-
Key ASN1 (RSAPrivateKey, values present, length mismatch)
1097+
Key ASN1 (RSAPrivateKey, correct format+values, minimal modulus size (128 bit))
1098+
depends_on:MBEDTLS_RSA_C
1099+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":0
1100+
1101+
Key ASN1 (RSAPrivateKey, correct format, modulus too small (127 bit))
1102+
depends_on:MBEDTLS_RSA_C
1103+
pk_parse_key:"30630201000211007c8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1104+
1105+
Key ASN1 (RSAPrivateKey, correct format, modulus even)
1106+
depends_on:MBEDTLS_RSA_C
1107+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857002030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1108+
1109+
Key ASN1 (RSAPrivateKey, correct format, d == 0)
1110+
depends_on:MBEDTLS_RSA_C
1111+
pk_parse_key:"30630201000211007c8ab070369ede72920e5a51523c8571020301000102110000000000000000000000000000000000020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1112+
1113+
Key ASN1 (RSAPrivateKey, correct format, d == p == q == 0)
1114+
depends_on:MBEDTLS_RSA_C
1115+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c8571020301000102110000000000000000000000000000000000020900000000000000000002090000000000000000000209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1116+
1117+
Key ASN1 (RSAPrivateKey, correct values, length mismatch)
1118+
depends_on:MBEDTLS_RSA_C
1119+
pk_parse_key:"3064020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c00":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1120+
1121+
Key ASN1 (RSAPrivateKey, correct values, n wrong tag)
1122+
depends_on:MBEDTLS_RSA_C
1123+
pk_parse_key:"3063020100FF1100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1124+
1125+
Key ASN1 (RSAPrivateKey, correct values, e wrong tag)
1126+
depends_on:MBEDTLS_RSA_C
1127+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c8571FF030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1128+
1129+
Key ASN1 (RSAPrivateKey, correct values, d wrong tag)
1130+
depends_on:MBEDTLS_RSA_C
1131+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c85710203010001FF11009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1132+
1133+
Key ASN1 (RSAPrivateKey, correct values, p wrong tag)
1134+
depends_on:MBEDTLS_RSA_C
1135+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201FF0900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1136+
1137+
Key ASN1 (RSAPrivateKey, correct values, q wrong tag)
1138+
depends_on:MBEDTLS_RSA_C
1139+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61FF0900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1140+
1141+
Key ASN1 (RSAPrivateKey, correct values, dp wrong tag)
1142+
depends_on:MBEDTLS_RSA_C
1143+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a211FF09009471f14c26428401020813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1144+
1145+
Key ASN1 (RSAPrivateKey, correct values, dq wrong tag)
10951146
depends_on:MBEDTLS_RSA_C
1096-
pk_parse_key:"301c02010002010102010102010102010102010102010102010102010100":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1147+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401FF0813425f060c4b72210208052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
10971148

1098-
Key ASN1 (RSAPrivateKey, values present, check_privkey fails)
1149+
Key ASN1 (RSAPrivateKey, correct values, qp wrong tag)
10991150
depends_on:MBEDTLS_RSA_C
1100-
pk_parse_key:"301b020100020102020101020101020101020101020101020101020101":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
1151+
pk_parse_key:"3063020100021100cc8ab070369ede72920e5a51523c857102030100010211009a6318982a7231de1894c54aa4909201020900f3058fd8dc484d61020900d7770dbd8b78a2110209009471f14c26428401020813425f060c4b7221FF08052b93d01747a87c":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
11011152

11021153
Key ASN1 (ECPrivateKey, empty parameters)
11031154
depends_on:MBEDTLS_ECP_C

0 commit comments

Comments
 (0)