Skip to content

Commit c4efbda

Browse files
tiranmistotebe
authored andcommitted
Use regex to locate PEM body
1 parent 610b2ee commit c4efbda

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

Tests/t_ldapobject.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
44
See https://www.python-ldap.org/ for details.
55
"""
6+
import base64
67
import errno
78
import linecache
89
import os
10+
import re
911
import socket
1012
import unittest
1113
import pickle
@@ -20,10 +22,10 @@
2022
from slapdtest import requires_ldapi, requires_sasl, requires_tls
2123
from slapdtest import requires_init_fd
2224

23-
try:
24-
from ssl import PEM_cert_to_DER_cert
25-
except ImportError:
26-
PEM_cert_to_DER_cert = None
25+
PEM_CERT_RE = re.compile(
26+
b'-----BEGIN CERTIFICATE-----(.*?)-----END CERTIFICATE-----',
27+
re.DOTALL
28+
)
2729

2830

2931
LDIF_TEMPLATE = """dn: %(suffix)s
@@ -446,15 +448,12 @@ def test_get_tls_peercert(self):
446448
self.assertTrue(peercert)
447449
self.assertIsInstance(peercert, bytes)
448450

449-
if PEM_cert_to_DER_cert is not None:
450-
with open(self.server.servercert) as f:
451-
server_pem = f.read()
452-
# remove text
453-
begin = server_pem.find("-----BEGIN CERTIFICATE-----")
454-
server_pem = server_pem[begin:-1]
451+
with open(self.server.servercert, "rb") as f:
452+
server_cert = f.read()
453+
pem_body = PEM_CERT_RE.search(server_cert).group(1)
454+
server_der = base64.b64decode(pem_body)
455455

456-
server_der = PEM_cert_to_DER_cert(server_pem)
457-
self.assertEqual(server_der, peercert)
456+
self.assertEqual(server_der, peercert)
458457

459458
def test_dse(self):
460459
dse = self._ldap_conn.read_rootdse_s()

0 commit comments

Comments
 (0)