Ben Reser <b...@reser.org> writes:

> I think we should get this merged to trunk.
>
> The original email asking to start this merge happened back in August here:
> https://mail-archives.apache.org/mod_mbox/subversion-dev/201408.mbox/%3C53E1C1D7.2040005%40reser.org%3E
>
> Since that email the checksum formatting code was removed and there have been
> some API changes to make the API more capable of fully representing the
> certificates.  As well as quite a few bug fixes.
>
> You can get a diff with:
> svn diff ^/subversion/trunk@1655188 ^/subversion/branches/svn-auth-x509
>
> Per the decision in Berlin 2013, I'm asking for a vote to bring this branch
> into trunk.  This is currently holding up 1.9 branch, so I'd like to get this
> on trunk.
>
> There are some further fixes I'd like to make but I'm going to hold off on
> doing that for now and do so on trunk.

Here is a couple of findings I would like to share.

I took the certificates from a regression suite in [1] and fed them to the new
X509 parser, svn_x509_parse_cert().  The parser currently fails to parse 20 of
the test certificates, mostly with an SVN_ERR_ASN1_LENGTH_MISMATCH.

Please see the attached fails log.  I think that the only expected failure is
the last one, google.pem_cert.p7b, which happens with a deliberately broken
PEM certificate stored in a file with a .p7b extension.  Other failures look
quite unexpected to me.  Failing certificates are a bit special — for instance,
one of them has the EKU set to Code Signing (1.3.6.1.5.5.7.3.3), and the other
ones are using 768-bit RSA, but I would not say this is a reason for the parser
to break on them.  Other existing parsers, like the one provided within the
CryptoAPI [2], do not error out when parsing them.

I might be missing something, because I did not examine the root cause of this
behavior.  Also, I did not review the branch itself, so, no comments on merging
it to trunk.

[1] http://src.chromium.org/svn/trunk/src/net/data/ssl/certificates
[2] https://msdn.microsoft.com/en-us/library/windows/desktop/aa376033


Regards,
Evgeny Kotkov
multivalue_rdn.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1118,
..\..\..\subversion\libsvn_subr\x509parse.c:318: 
(apr_err=SVN_ERR_X509_CERT_INVALID_NAME)
E240011: Found invalid name in certificate
..\..\..\subversion\libsvn_subr\x509parse.c:317: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

2048-rsa-ee-by-prime256v1-ecdsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

prime256v1-ecdsa-ee-by-prime256v1-ecdsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

crit-codeSigning-chain.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

768-rsa-ee-by-768-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

1024-rsa-ee-by-1024-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

1024-rsa-ee-by-2048-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

prime256v1-ecdsa-ee-by-768-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

768-rsa-ee-by-prime256v1-ecdsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

2048-rsa-ee-by-1024-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

2048-rsa-ee-by-2048-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

prime256v1-ecdsa-ee-by-1024-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

prime256v1-ecdsa-ee-by-2048-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

1024-rsa-ee-by-768-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

768-rsa-ee-by-1024-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

768-rsa-ee-by-2048-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

2048-rsa-ee-by-768-rsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

non-crit-codeSigning-chain.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

1024-rsa-ee-by-prime256v1-ecdsa-intermediate.pem - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1173: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:1172: 
(apr_err=SVN_ERR_ASN1_LENGTH_MISMATCH)
E240003: ASN1 length mismatch

google.pem_cert.p7b - FAIL
..\..\..\subversion\libsvn_subr\x509parse.c:1091: 
(apr_err=SVN_ERR_X509_CERT_INVALID_FORMAT)
E240007: Invalid certificate format
..\..\..\subversion\libsvn_subr\x509parse.c:114: 
(apr_err=SVN_ERR_ASN1_UNEXPECTED_TAG)
E240001: Unexpected ASN1 tag
-----BEGIN CERTIFICATE-----
MIIDTDCCAjQCAgDsMA0GCSqGSIb3DQEBBQUAMCAxHjAcBgNVBAMMFTIwNDggUlNB
IFRlc3QgUm9vdCBDQTAeFw0xMzAxMjMyMzUxMDVaFw0yMzAxMjEyMzUxMDVaMGAx
CzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3Vu
dGFpbiBWaWV3MRAwDgYDVQQKDAdUZXN0IENBMRIwEAYDVQQDDAkxMjcuMC4wLjEw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD2qoTHe0DamF56TtpVv/Xo
Vjg3K6ZnR+HJefrTGaFQ+RERJtHQkZQ19YSTUomAZkcv9+TBFbiEI9AyYHMF0AWM
JRH9XZAZRW7h0Rw0UeuEax0WItujZP71riaqa1hJFkWoekGoG/xTLR5zgS38XMMA
IsrcJjtS34ENb6pwEtgS9djHeglQZBbvXIHte4GAWN3lHfKrekddBdKtlujPaEZ3
dp1hTrFEWJYASDE6UybgKYuCpdbfLARbhcCZ/3eMPGNE8KJCqNQUUq7472AUgqM2
r5qmJ+5VkDkNcjwOasl/E1CTiDWIkVmnoXN/JSv94JXmIeOSN9WlYOvrrfLLjEBD
AgMBAAGjVTBTMA8GA1UdEQQIMAaHBH8AAAEwDAYDVR0TAQH/BAIwADAdBgNVHQ4E
FgQU8c9WYIYie1/jAH7Yc6LyxB2p60MwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDQYJ
KoZIhvcNAQEFBQADggEBAJNwLkjpGVUi6MQYnCrLTzzliAiojoxJ1T5qvHfXjSID
eJofAUOF5uzT7JAFR6Mj6ATkbXrvRa+xbBd84T6+EL3BBRKYxzyHSZ55MMqKRJXO
AL6BJg6Eg6sWkfMzMO8JUD5Le/hbbJBH+VX2TMu+UC3xwZbAwk8s7suLqtbC3SiJ
vLPR3NHswP6/uXsKq6qWzgiJ2MdQXbAW6pAV8CDT5rs7GIcScbe4Vuuchb6CfFNL
iCIIWWPudUJ8EGnpTP6wd1KBF/NCtWDlKhsDIaDfu6shRmv7eHasgOzDnVinJ6+K
sGChx4z549b5G+hEZz+8Q+Yy4dnKKXggjEVCDHY5wsA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICsDCCAhmgAwIBAgIJAO9sL1fZ/VoPMA0GCSqGSIb3DQEBBQUAMHExbzAJBgNV
BAYTAlVTMA8GA1UECgwIQ2hyb21pdW0wFgYKCZImiZPyLGQBGRYIQ2hyb21pdW0w
GgYDVQQDDBNNdWx0aXZhbHVlIFJETiBUZXN0MB0GA1UECwwWQ2hyb21pdW0gbmV0
X3VuaXR0ZXN0czAeFw0xMTEyMDIwMzQ3MzlaFw0xMjAxMDEwMzQ3MzlaMHExbzAJ
BgNVBAYTAlVTMA8GA1UECgwIQ2hyb21pdW0wFgYKCZImiZPyLGQBGRYIQ2hyb21p
dW0wGgYDVQQDDBNNdWx0aXZhbHVlIFJETiBUZXN0MB0GA1UECwwWQ2hyb21pdW0g
bmV0X3VuaXR0ZXN0czCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnSMQ7YeC
sOuk+0n128F7TfDtG/X48sG10oTe65SC8N6LBLfo7YYiQZlWVHEzjsFpaiv0dx4k
cIFbVghXAky/r5qgM1XiAGuzzFw7R27cBTC9DPlRwHArP3CiEKO3iz8i+qu9x0il
/9N70LcSSAu/kGLxikDbHRoM9d2SKhy2LGsCAwEAAaNQME4wHQYDVR0OBBYEFI1e
cfoqc7qfjmMyHF2rh9CrR6u3MB8GA1UdIwQYMBaAFI1ecfoqc7qfjmMyHF2rh9Cr
R6u3MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAGKwN01A47nxVHOkw
wFdbT8t9FFkY3pIg5meoqO3aATNaSEzkZoUljWtWgWfzr+n4ElwZBxeYv9cPurVk
a+wXygzWzsOzCUMKBI/aS8ijRervyvh6LpGojPGn1HttnXNLmhy+BLECs7cq6f0Z
hvImrEWhD5uZGlOxaZk+bFEjQHA=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIBxzCCAVECAgDsMA0GCSqGSIb3DQEBBQUAMCcxJTAjBgNVBAMMHDc2OCByc2Eg
VGVzdCBpbnRlcm1lZGlhdGUgQ0EwHhcNMTExMjEyMjI0NzUzWhcNMjExMjA5MjI0
NzUzWjBgMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UE
BwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHVGVzdCBDQTESMBAGA1UEAwwJMTI3
LjAuMC4xMHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAKJyIS5u+tBObBO4fMTke8jp
q9O4zvWf9sIlOQjEoMipMEPU4/rxI1eak1HsAH2hhSItz3W3xGD34OltrEXl6xWl
J1z2qT2He4LcWjllA4vuMlX3KlL6qAdeMd7XAnS8AQIDAQABoxMwETAPBgNVHREE
CDAGhwR/AAABMA0GCSqGSIb3DQEBBQUAA2EAcGouErg+SWr0W8FXVLj9Wwog0cdx
NS9hOmQln5/yiNAQ9gilDxmxuu6iIf/aytEeQVSK5MJLU6rcX0aqZhNvPmXF8wXq
o3z86Ymzmo3B6ZhhMxxeZOOq4iUD+3BYm4GZ
-----END CERTIFICATE-----

Reply via email to