From: INADA Naoki Date: Mon, 2 Oct 2017 07:33:42 +0000 (+0900) Subject: bpo-31659: Use simple slicing to format PEM cert (GH-3849) X-Git-Tag: v3.7.0a2~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b75a228af8c0553aef44e4e03763af90fbc8737f;p=python 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. --- diff --git a/Lib/ssl.py b/Lib/ssl.py index 24f24b17bf..75caae0c44 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