Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d8c347a

Browse files
committed
Issue #13034: When decoding some SSL certificates, the subjectAltName extension could be unreported.
1 parent 5a4a109 commit d8c347a

4 files changed

Lines changed: 61 additions & 1 deletion

File tree

Lib/test/nokia.pem

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Certificate for projects.developer.nokia.com:443 (see issue 13034)
2+
-----BEGIN CERTIFICATE-----
3+
MIIFLDCCBBSgAwIBAgIQLubqdkCgdc7lAF9NfHlUmjANBgkqhkiG9w0BAQUFADCB
4+
vDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
5+
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug
6+
YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDE2MDQGA1UEAxMt
7+
VmVyaVNpZ24gQ2xhc3MgMyBJbnRlcm5hdGlvbmFsIFNlcnZlciBDQSAtIEczMB4X
8+
DTExMDkyMTAwMDAwMFoXDTEyMDkyMDIzNTk1OVowcTELMAkGA1UEBhMCRkkxDjAM
9+
BgNVBAgTBUVzcG9vMQ4wDAYDVQQHFAVFc3BvbzEOMAwGA1UEChQFTm9raWExCzAJ
10+
BgNVBAsUAkJJMSUwIwYDVQQDFBxwcm9qZWN0cy5kZXZlbG9wZXIubm9raWEuY29t
11+
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCr92w1bpHYSYxUEx8N/8Iddda2
12+
lYi+aXNtQfV/l2Fw9Ykv3Ipw4nLeGTj18FFlAZgMdPRlgrzF/NNXGw/9l3/qKdow
13+
CypkQf8lLaxb9Ze1E/KKmkRJa48QTOqvo6GqKuTI6HCeGlG1RxDb8YSKcQWLiytn
14+
yj3Wp4MgRQO266xmMQIDAQABo4IB9jCCAfIwQQYDVR0RBDowOIIccHJvamVjdHMu
15+
ZGV2ZWxvcGVyLm5va2lhLmNvbYIYcHJvamVjdHMuZm9ydW0ubm9raWEuY29tMAkG
16+
A1UdEwQCMAAwCwYDVR0PBAQDAgWgMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHA6Ly9T
17+
VlJJbnRsLUczLWNybC52ZXJpc2lnbi5jb20vU1ZSSW50bEczLmNybDBEBgNVHSAE
18+
PTA7MDkGC2CGSAGG+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZl
19+
cmlzaWduLmNvbS9ycGEwKAYDVR0lBCEwHwYJYIZIAYb4QgQBBggrBgEFBQcDAQYI
20+
KwYBBQUHAwIwcgYIKwYBBQUHAQEEZjBkMCQGCCsGAQUFBzABhhhodHRwOi8vb2Nz
21+
cC52ZXJpc2lnbi5jb20wPAYIKwYBBQUHMAKGMGh0dHA6Ly9TVlJJbnRsLUczLWFp
22+
YS52ZXJpc2lnbi5jb20vU1ZSSW50bEczLmNlcjBuBggrBgEFBQcBDARiMGChXqBc
23+
MFowWDBWFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7kolgYMu9BSOJsprEsH
24+
iyEFGDAmFiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYwDQYJ
25+
KoZIhvcNAQEFBQADggEBACQuPyIJqXwUyFRWw9x5yDXgMW4zYFopQYOw/ItRY522
26+
O5BsySTh56BWS6mQB07XVfxmYUGAvRQDA5QHpmY8jIlNwSmN3s8RKo+fAtiNRlcL
27+
x/mWSfuMs3D/S6ev3D6+dpEMZtjrhOdctsarMKp8n/hPbwhAbg5hVjpkW5n8vz2y
28+
0KxvvkA1AxpLwpVv7OlK17ttzIHw8bp9HTlHBU5s8bKz4a565V/a5HI0CSEv/+0y
29+
ko4/ghTnZc1CkmUngKKeFMSah/mT/xAh8XnE2l1AazFa8UKuYki1e+ArHaGZc4ix
30+
UYOtiRphwfuYQhRZ7qX9q2MMkCMI65XNK/SaFrAbbG0=
31+
-----END CERTIFICATE-----

Lib/test/test_ssl.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
BADCERT = data_file("badcert.pem")
5252
WRONGCERT = data_file("XXXnonexisting.pem")
5353
BADKEY = data_file("badkey.pem")
54+
NOKIACERT = data_file("nokia.pem")
5455

5556

5657
def handle_error(prefix):
@@ -117,6 +118,31 @@ def test_parse_cert(self):
117118
p = ssl._ssl._test_decode_cert(CERTFILE)
118119
if support.verbose:
119120
sys.stdout.write("\n" + pprint.pformat(p) + "\n")
121+
self.assertEqual(p['issuer'],
122+
((('countryName', 'XY'),),
123+
(('localityName', 'Castle Anthrax'),),
124+
(('organizationName', 'Python Software Foundation'),),
125+
(('commonName', 'localhost'),))
126+
)
127+
self.assertEqual(p['notAfter'], 'Oct 5 23:01:56 2020 GMT')
128+
self.assertEqual(p['notBefore'], 'Oct 8 23:01:56 2010 GMT')
129+
self.assertEqual(p['serialNumber'], 'D7C7381919AFC24E')
130+
self.assertEqual(p['subject'],
131+
((('countryName', 'XY'),),
132+
(('localityName', 'Castle Anthrax'),),
133+
(('organizationName', 'Python Software Foundation'),),
134+
(('commonName', 'localhost'),))
135+
)
136+
self.assertEqual(p['subjectAltName'], (('DNS', 'localhost'),))
137+
# Issue #13034: the subjectAltName in some certificates
138+
# (notably projects.developer.nokia.com:443) wasn't parsed
139+
p = ssl._ssl._test_decode_cert(NOKIACERT)
140+
if support.verbose:
141+
sys.stdout.write("\n" + pprint.pformat(p) + "\n")
142+
self.assertEqual(p['subjectAltName'],
143+
(('DNS', 'projects.developer.nokia.com'),
144+
('DNS', 'projects.forum.nokia.com'))
145+
)
120146

121147
def test_DER_to_PEM(self):
122148
with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ Core and Builtins
3636
Library
3737
-------
3838

39+
- Issue #13034: When decoding some SSL certificates, the subjectAltName
40+
extension could be unreported.
41+
3942
- Issue #9871: Prevent IDLE 3 crash when given byte stings
4043
with invalid hex escape sequences, like b'\x0'.
4144
(Original patch by Claudiu Popa.)

Modules/_ssl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ _get_peer_alt_names (X509 *certificate) {
578578
/* get a memory buffer */
579579
biobuf = BIO_new(BIO_s_mem());
580580

581-
i = 0;
581+
i = -1;
582582
while ((i = X509_get_ext_by_NID(
583583
certificate, NID_subject_alt_name, i)) >= 0) {
584584

0 commit comments

Comments
 (0)