Test a few more unusual TBS certificates I missed we had another field where the TBS cache is load-bearing: the critical bit is not parsed correctly. Bug: 442221114 Change-Id: I5a87c3af81805d82ee70c9688fe81ab3f949e900 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/81967 Reviewed-by: Adam Langley <agl@google.com> Auto-Submit: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/crypto/x509/test/make_unusual_tbs.go b/crypto/x509/test/make_unusual_tbs.go index 2ce33ed..8424ba5 100644 --- a/crypto/x509/test/make_unusual_tbs.go +++ b/crypto/x509/test/make_unusual_tbs.go
@@ -121,6 +121,8 @@ } paths := []string{ + "unusual_tbs_critical_ber.pem", + "unusual_tbs_critical_false_not_omitted.pem", "unusual_tbs_empty_extension_not_omitted.pem", "unusual_tbs_null_sigalg_param.pem", "unusual_tbs_uid_both.pem",
diff --git a/crypto/x509/test/unusual_tbs_critical_ber.pem b/crypto/x509/test/unusual_tbs_critical_ber.pem new file mode 100644 index 0000000..80b85bd --- /dev/null +++ b/crypto/x509/test/unusual_tbs_critical_ber.pem
@@ -0,0 +1,9 @@ +-----BEGIN CERTIFICATE----- +MIIBJjCBzqADAgECAgkAhl+3uPLdFykwCgYIKoZIzj0EAwIwDzENMAsGA1UEAwwE +VGVzdDAeFw0yNTA5MDIxODQzMTdaFw0yNTEwMDIxODQzMTdaMA8xDTALBgNVBAMM +BFRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATszjOipC1du8ay50pozmB3 +x6bHKTrwAVOMhhTg87UC2JhffDIvz2TBsePGC+aH/1oGDUs6PqR+wkjFQtSZSl3N +oxMwETAPBgNVHRMBAQEEBTADAQH/MAoGCCqGSM49BAMCA0cAMEQCIHsifHzBqZaB +miT+i/7bzfKSRBxGlETKtQ4Uk+970fQWAiAZDm/huJD42HnOi9q4OUHzAtsxVAml +NtUuQ1k4eJAh/A== +-----END CERTIFICATE-----
diff --git a/crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem b/crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem new file mode 100644 index 0000000..7e0bda4 --- /dev/null +++ b/crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem
@@ -0,0 +1,9 @@ +-----BEGIN CERTIFICATE----- +MIIBJjCBzqADAgECAgkAhl+3uPLdFykwCgYIKoZIzj0EAwIwDzENMAsGA1UEAwwE +VGVzdDAeFw0yNTA5MDIxODQzMTdaFw0yNTEwMDIxODQzMTdaMA8xDTALBgNVBAMM +BFRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATszjOipC1du8ay50pozmB3 +x6bHKTrwAVOMhhTg87UC2JhffDIvz2TBsePGC+aH/1oGDUs6PqR+wkjFQtSZSl3N +oxMwETAPBgNVHRMBAQAEBTADAQH/MAoGCCqGSM49BAMCA0cAMEQCIEWpqBLkyjns +J0B3yF1vBxYjctK0JlIcM7zaesbsiAMMAiAwm4T0zi2e72yk5NNuL1CJTqUeJ/OC +FCj5wnR6w2Si+A== +-----END CERTIFICATE-----
diff --git a/crypto/x509/x509_test.cc b/crypto/x509/x509_test.cc index 354955e..a452cc6 100644 --- a/crypto/x509/x509_test.cc +++ b/crypto/x509/x509_test.cc
@@ -8911,6 +8911,12 @@ // The TBSCertificates were made with https://github.com/google/der-ascii. // crypto/x509/test/make_unusual_tbs.go then filled in valid signatures. const char *kPaths[] = { + // Non-canonical encoding of TRUE in the critical bit. + // TODO(crbug.com/442221114): The parser should reject this. + "crypto/x509/test/unusual_tbs_critical_ber.pem", + // A FALSE critical bit is encoded instead of omitted as DEFAULT. + // TODO(crbug.com/442221114): The parser should reject this. + "crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem", // Empty extension instead of omitting the entire field. // TODO(crbug.com/442221114): The parser should reject this. "crypto/x509/test/unusual_tbs_empty_extension_not_omitted.pem", @@ -8918,8 +8924,7 @@ // omitted. We accept this due to b/167375496. "crypto/x509/test/unusual_tbs_null_sigalg_param.pem", // Deprecated subject and issuer unique IDs are present. This is valid, - // but - // rarely exercised. + // but rarely exercised. "crypto/x509/test/unusual_tbs_uid_both.pem", "crypto/x509/test/unusual_tbs_uid_issuer.pem", "crypto/x509/test/unusual_tbs_uid_subject.pem",
diff --git a/gen/sources.bzl b/gen/sources.bzl index edc4dca..cb6ded9 100644 --- a/gen/sources.bzl +++ b/gen/sources.bzl
@@ -1005,6 +1005,8 @@ "crypto/x509/test/trailing_data_leaf_name_constraints.pem", "crypto/x509/test/trailing_data_leaf_subject_alt_name.pem", "crypto/x509/test/trailing_data_leaf_subject_key_identifier.pem", + "crypto/x509/test/unusual_tbs_critical_ber.pem", + "crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem", "crypto/x509/test/unusual_tbs_empty_extension_not_omitted.pem", "crypto/x509/test/unusual_tbs_key.pem", "crypto/x509/test/unusual_tbs_null_sigalg_param.pem",
diff --git a/gen/sources.cmake b/gen/sources.cmake index 0a5e083..b0311e8 100644 --- a/gen/sources.cmake +++ b/gen/sources.cmake
@@ -1031,6 +1031,8 @@ crypto/x509/test/trailing_data_leaf_name_constraints.pem crypto/x509/test/trailing_data_leaf_subject_alt_name.pem crypto/x509/test/trailing_data_leaf_subject_key_identifier.pem + crypto/x509/test/unusual_tbs_critical_ber.pem + crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem crypto/x509/test/unusual_tbs_empty_extension_not_omitted.pem crypto/x509/test/unusual_tbs_key.pem crypto/x509/test/unusual_tbs_null_sigalg_param.pem
diff --git a/gen/sources.gni b/gen/sources.gni index 4807120..ece0757 100644 --- a/gen/sources.gni +++ b/gen/sources.gni
@@ -1005,6 +1005,8 @@ "crypto/x509/test/trailing_data_leaf_name_constraints.pem", "crypto/x509/test/trailing_data_leaf_subject_alt_name.pem", "crypto/x509/test/trailing_data_leaf_subject_key_identifier.pem", + "crypto/x509/test/unusual_tbs_critical_ber.pem", + "crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem", "crypto/x509/test/unusual_tbs_empty_extension_not_omitted.pem", "crypto/x509/test/unusual_tbs_key.pem", "crypto/x509/test/unusual_tbs_null_sigalg_param.pem",
diff --git a/gen/sources.json b/gen/sources.json index 29be1ce..3d59d7b 100644 --- a/gen/sources.json +++ b/gen/sources.json
@@ -985,6 +985,8 @@ "crypto/x509/test/trailing_data_leaf_name_constraints.pem", "crypto/x509/test/trailing_data_leaf_subject_alt_name.pem", "crypto/x509/test/trailing_data_leaf_subject_key_identifier.pem", + "crypto/x509/test/unusual_tbs_critical_ber.pem", + "crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem", "crypto/x509/test/unusual_tbs_empty_extension_not_omitted.pem", "crypto/x509/test/unusual_tbs_key.pem", "crypto/x509/test/unusual_tbs_null_sigalg_param.pem",
diff --git a/gen/sources.mk b/gen/sources.mk index de380cf..e58826e 100644 --- a/gen/sources.mk +++ b/gen/sources.mk
@@ -993,6 +993,8 @@ crypto/x509/test/trailing_data_leaf_name_constraints.pem \ crypto/x509/test/trailing_data_leaf_subject_alt_name.pem \ crypto/x509/test/trailing_data_leaf_subject_key_identifier.pem \ + crypto/x509/test/unusual_tbs_critical_ber.pem \ + crypto/x509/test/unusual_tbs_critical_false_not_omitted.pem \ crypto/x509/test/unusual_tbs_empty_extension_not_omitted.pem \ crypto/x509/test/unusual_tbs_key.pem \ crypto/x509/test/unusual_tbs_null_sigalg_param.pem \