]> granicus.if.org Git - python/commitdiff
bpo-31659: Use simple slicing to format PEM cert (GH-3849)
authorINADA Naoki <methane@users.noreply.github.com>
Mon, 2 Oct 2017 07:33:42 +0000 (16:33 +0900)
committerGitHub <noreply@github.com>
Mon, 2 Oct 2017 07:33:42 +0000 (16:33 +0900)
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.

Lib/ssl.py

index 24f24b17bf1f39f8cf73a3d134c003be4cf71a3c..75caae0c440566cc8dbe45b9fa36e8c97852d37d 100644 (file)
@@ -91,7 +91,6 @@ ALERT_DESCRIPTION_UNKNOWN_PSK_IDENTITY
 """
 
 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