@ -233,13 +233,6 @@ static const char kRSAKey[] =
" moZWgjHvB2W9Ckn7sDqsPB+U2tyX0joDdQEyuiMECDY8oQ== \n "
" moZWgjHvB2W9Ckn7sDqsPB+U2tyX0joDdQEyuiMECDY8oQ== \n "
" -----END RSA PRIVATE KEY----- \n " ;
" -----END RSA PRIVATE KEY----- \n " ;
static const char kP256Key [ ] =
" -----BEGIN PRIVATE KEY----- \n "
" MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgBw8IcnrUoEqc3VnJ \n "
" TYlodwi1b8ldMHcO6NHJzgqLtGqhRANCAATmK2niv2Wfl74vHg2UikzVl2u3qR4N \n "
" Rvvdqakendy6WgHn1peoChj5w8SjHlbifINI2xYaHPUdfvGULUvPciLB \n "
" -----END PRIVATE KEY----- \n " ;
// kCRLTestRoot is a test root certificate. It has private key:
// kCRLTestRoot is a test root certificate. It has private key:
//
//
// -----BEGIN RSA PRIVATE KEY-----
// -----BEGIN RSA PRIVATE KEY-----
@ -2452,112 +2445,3 @@ TEST(X509Test, InvalidVersion) {
EXPECT_FALSE ( CertFromPEM ( kV1WithIssuerUniqueIDPEM ) ) ;
EXPECT_FALSE ( CertFromPEM ( kV1WithIssuerUniqueIDPEM ) ) ;
EXPECT_FALSE ( CertFromPEM ( kV1WithSubjectUniqueIDPEM ) ) ;
EXPECT_FALSE ( CertFromPEM ( kV1WithSubjectUniqueIDPEM ) ) ;
}
}
// The following strings are test certificates signed by kP256Key and kRSAKey,
// with missing, NULL, or invalid algorithm parameters.
static const char kP256NoParam [ ] =
" -----BEGIN CERTIFICATE----- \n "
" MIIBIDCBxqADAgECAgIE0jAKBggqhkjOPQQDAjAPMQ0wCwYDVQQDEwRUZXN0MCAX \n "
" DTAwMDEwMTAwMDAwMFoYDzIxMDAwMTAxMDAwMDAwWjAPMQ0wCwYDVQQDEwRUZXN0 \n "
" MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5itp4r9ln5e+Lx4NlIpM1Zdrt6ke \n "
" DUb73ampHp3culoB59aXqAoY+cPEox5W4nyDSNsWGhz1HX7xlC1Lz3IiwaMQMA4w \n "
" DAYDVR0TBAUwAwEB/zAKBggqhkjOPQQDAgNJADBGAiEAqdIiF+bN9Cl44oUeICpy \n "
" aXd7HqhpVUaglYKw9ChmNUACIQCpMdL0fNkFNDbRww9dSl/y7kBdk/tp16HiqeSy \n "
" gGzFYg== \n "
" -----END CERTIFICATE----- \n " ;
static const char kP256NullParam [ ] =
" -----BEGIN CERTIFICATE----- \n "
" MIIBJDCByKADAgECAgIE0jAMBggqhkjOPQQDAgUAMA8xDTALBgNVBAMTBFRlc3Qw \n "
" IBcNMDAwMTAxMDAwMDAwWhgPMjEwMDAxMDEwMDAwMDBaMA8xDTALBgNVBAMTBFRl \n "
" c3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATmK2niv2Wfl74vHg2UikzVl2u3 \n "
" qR4NRvvdqakendy6WgHn1peoChj5w8SjHlbifINI2xYaHPUdfvGULUvPciLBoxAw \n "
" DjAMBgNVHRMEBTADAQH/MAwGCCqGSM49BAMCBQADSQAwRgIhAKILHmyo+F3Cn/VX \n "
" UUeSXOQQKX5aLzsQitwwmNF3ZgH3AiEAsYHcrVj/ftmoQIORARkQ/+PrqntXev8r \n "
" t6uPxHrmpUY= \n "
" -----END CERTIFICATE----- \n " ;
static const char kP256InvalidParam [ ] =
" -----BEGIN CERTIFICATE----- \n "
" MIIBMTCBz6ADAgECAgIE0jATBggqhkjOPQQDAgQHZ2FyYmFnZTAPMQ0wCwYDVQQD \n "
" EwRUZXN0MCAXDTAwMDEwMTAwMDAwMFoYDzIxMDAwMTAxMDAwMDAwWjAPMQ0wCwYD \n "
" VQQDEwRUZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5itp4r9ln5e+Lx4N \n "
" lIpM1Zdrt6keDUb73ampHp3culoB59aXqAoY+cPEox5W4nyDSNsWGhz1HX7xlC1L \n "
" z3IiwaMQMA4wDAYDVR0TBAUwAwEB/zATBggqhkjOPQQDAgQHZ2FyYmFnZQNIADBF \n "
" AiAglpDf/YhN89LeJ2WAs/F0SJIrsuhS4uoInIz6WXUiuQIhAIu5Pwhp5E3Pbo8y \n "
" fLULTZnynuQUULQkRcF7S7T2WpIL \n "
" -----END CERTIFICATE----- \n " ;
static const char kRSANoParam [ ] =
" -----BEGIN CERTIFICATE----- \n "
" MIIBWzCBx6ADAgECAgIE0jALBgkqhkiG9w0BAQswDzENMAsGA1UEAxMEVGVzdDAg \n "
" Fw0wMDAxMDEwMDAwMDBaGA8yMTAwMDEwMTAwMDAwMFowDzENMAsGA1UEAxMEVGVz \n "
" dDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOYraeK/ZZ+Xvi8eDZSKTNWXa7ep \n "
" Hg1G+92pqR6d3LpaAefWl6gKGPnDxKMeVuJ8g0jbFhoc9R1+8ZQtS89yIsGjEDAO \n "
" MAwGA1UdEwQFMAMBAf8wCwYJKoZIhvcNAQELA4GBAC1f8W3W0Ao7CPfIBQYDSbPh \n "
" brZpbxdBU5x27JOS7iSa+Lc9pEH5VCX9vIypHVHXLPEfZ38yIt11eiyrmZB6w62N \n "
" l9kIeZ6FVPmC30d3sXx70Jjs+ZX9yt7kD1gLyNAQQfeYfa4rORAZT1n2YitD74NY \n "
" TWUH2ieFP3l+ecj1SeQR \n "
" -----END CERTIFICATE----- \n " ;
static const char kRSANullParam [ ] =
" -----BEGIN CERTIFICATE----- \n "
" MIIBXzCByaADAgECAgIE0jANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDEwRUZXN0 \n "
" MCAXDTAwMDEwMTAwMDAwMFoYDzIxMDAwMTAxMDAwMDAwWjAPMQ0wCwYDVQQDEwRU \n "
" ZXN0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5itp4r9ln5e+Lx4NlIpM1Zdr \n "
" t6keDUb73ampHp3culoB59aXqAoY+cPEox5W4nyDSNsWGhz1HX7xlC1Lz3IiwaMQ \n "
" MA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOBgQAzVcfIv+Rq1KrMXqIL \n "
" fPq/cWZjgqFZA1RGaGElNaqp+rkJfamq5tDGzckWpebrK+jjRN7yIlcWDtPpy3Gy \n "
" seZfvtBDR0TwJm0S/pQl8prKB4wgALcwe3bmi56Rq85nzY5ZLNcP16LQxL+jAAua \n "
" SwmQUz4bRpckRBj+sIyp1We+pg== \n "
" -----END CERTIFICATE----- \n " ;
static const char kRSAInvalidParam [ ] =
" -----BEGIN CERTIFICATE----- \n "
" MIIBbTCB0KADAgECAgIE0jAUBgkqhkiG9w0BAQsEB2dhcmJhZ2UwDzENMAsGA1UE \n "
" AxMEVGVzdDAgFw0wMDAxMDEwMDAwMDBaGA8yMTAwMDEwMTAwMDAwMFowDzENMAsG \n "
" A1UEAxMEVGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOYraeK/ZZ+Xvi8e \n "
" DZSKTNWXa7epHg1G+92pqR6d3LpaAefWl6gKGPnDxKMeVuJ8g0jbFhoc9R1+8ZQt \n "
" S89yIsGjEDAOMAwGA1UdEwQFMAMBAf8wFAYJKoZIhvcNAQELBAdnYXJiYWdlA4GB \n "
" AHTJ6cWWjCNrZhqiWWVI3jdK+h5xpRG8jGMXxR4JnjtoYRRusJLOXhmapwCB6fA0 \n "
" 4vc+66O27v36yDmQX+tIc/hDrTpKNJptU8q3n2VagREvoHhkOTYkcCeS8vmnMtn8 \n "
" 5OMNZ/ajVwOssw61GcAlScRqEHkZFBoGp7e+QpgB2tf9 \n "
" -----END CERTIFICATE----- \n " ;
TEST ( X509Test , AlgorithmParameters ) {
// P-256 requires the parameter be omitted.
bssl : : UniquePtr < EVP_PKEY > key = PrivateKeyFromPEM ( kP256Key ) ;
ASSERT_TRUE ( key ) ;
bssl : : UniquePtr < X509 > cert = CertFromPEM ( kP256NoParam ) ;
ASSERT_TRUE ( cert ) ;
EXPECT_TRUE ( X509_verify ( cert . get ( ) , key . get ( ) ) ) ;
cert = CertFromPEM ( kP256NullParam ) ;
ASSERT_TRUE ( cert ) ;
EXPECT_FALSE ( X509_verify ( cert . get ( ) , key . get ( ) ) ) ;
uint32_t err = ERR_get_error ( ) ;
EXPECT_EQ ( ERR_LIB_X509 , ERR_GET_LIB ( err ) ) ;
EXPECT_EQ ( X509_R_INVALID_PARAMETER , ERR_GET_REASON ( err ) ) ;
cert = CertFromPEM ( kP256InvalidParam ) ;
ASSERT_TRUE ( cert ) ;
EXPECT_FALSE ( X509_verify ( cert . get ( ) , key . get ( ) ) ) ;
err = ERR_get_error ( ) ;
EXPECT_EQ ( ERR_LIB_X509 , ERR_GET_LIB ( err ) ) ;
EXPECT_EQ ( X509_R_INVALID_PARAMETER , ERR_GET_REASON ( err ) ) ;
// RSA parameters should be NULL, but we accept omitted ones.
key = PrivateKeyFromPEM ( kRSAKey ) ;
ASSERT_TRUE ( key ) ;
cert = CertFromPEM ( kRSANoParam ) ;
ASSERT_TRUE ( cert ) ;
EXPECT_TRUE ( X509_verify ( cert . get ( ) , key . get ( ) ) ) ;
cert = CertFromPEM ( kRSANullParam ) ;
ASSERT_TRUE ( cert ) ;
EXPECT_TRUE ( X509_verify ( cert . get ( ) , key . get ( ) ) ) ;
cert = CertFromPEM ( kRSAInvalidParam ) ;
ASSERT_TRUE ( cert ) ;
EXPECT_FALSE ( X509_verify ( cert . get ( ) , key . get ( ) ) ) ;
err = ERR_get_error ( ) ;
EXPECT_EQ ( ERR_LIB_X509 , ERR_GET_LIB ( err ) ) ;
EXPECT_EQ ( X509_R_INVALID_PARAMETER , ERR_GET_REASON ( err ) ) ;
}