From b75a228af8c0553aef44e4e03763af90fbc8737f Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Mon, 2 Oct 2017 16:33:42 +0900 Subject: [PATCH] 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. --- Lib/ssl.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 @@ 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