[Python-checkins] bpo-31659: Use simple slicing to format PEM cert (GH-3849)

INADA Naoki webhook-mailer at python.org
Mon Oct 2 03:33:47 EDT 2017


https://github.com/python/cpython/commit/b75a228af8c0553aef44e4e03763af90fbc8737f
commit: b75a228af8c0553aef44e4e03763af90fbc8737f
branch: master
author: INADA Naoki <methane at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2017-10-02T16:33:42+09:00
summary:

bpo-31659: Use simple slicing to format PEM cert (GH-3849)

DER_cert_to_PEM_cert() used textwrap.fill() to format PEM.
But it's library to wrap lines on word boundary, while PEM is
base64 encoded string.

Additionally, importing textwrap is little slow.

files:
M Lib/ssl.py

diff --git a/Lib/ssl.py b/Lib/ssl.py
index 24f24b17bf1..75caae0c440 100644
--- a/Lib/ssl.py
+++ b/Lib/ssl.py
@@ -91,7 +91,6 @@
 """
 
 import ipaddress
-import textwrap
 import re
 import sys
 import os
@@ -1201,9 +1200,10 @@ def DER_cert_to_PEM_cert(der_cert_bytes):
     PEM version of it as a string."""
 
     f = str(base64.standard_b64encode(der_cert_bytes), 'ASCII', 'strict')
-    return (PEM_HEADER + '\n' +
-            textwrap.fill(f, 64) + '\n' +
-            PEM_FOOTER + '\n')
+    ss = [PEM_HEADER]
+    ss += [f[i:i+64] for i in range(0, len(f), 64)]
+    ss.append(PEM_FOOTER + '\n')
+    return '\n'.join(ss)
 
 def PEM_cert_to_DER_cert(pem_cert_string):
     """Takes a certificate in ASCII PEM format and returns the



More information about the Python-checkins mailing list