Author: dsahlberg
Date: Sat Jun 21 13:29:19 2025
New Revision: 1926623
URL: http://svn.apache.org/viewvc?rev=1926623&view=rev
Log:
Make script compatible with Py3.
* test/certs/create_certs.py
(create_key): decode string when writing to file
(create_pkcs12): write file in binary mode
(create_crl): make sure arguments to crypto.Revoked().* are in ascii,
write the exported file in binary
(create_cert): crypto.X509Extension wants parameters in ascii,
decode the dumped certificate as utf-8 befor writing to file
(__main__): create_cert wants the passphrase as a byte array in ascii.
Patch by: Graham Leggett <minfrin>
Part of GitHub PR #7: https://github.com/apache/serf/pull/7
Modified:
serf/trunk/test/certs/create_certs.py
Modified: serf/trunk/test/certs/create_certs.py
URL:
http://svn.apache.org/viewvc/serf/trunk/test/certs/create_certs.py?rev=1926623&r1=1926622&r2=1926623&view=diff
==============================================================================
--- serf/trunk/test/certs/create_certs.py (original)
+++ serf/trunk/test/certs/create_certs.py Sat Jun 21 13:29:19 2025
@@ -49,10 +49,10 @@ def create_key(keyfile='', passphrase=No
if passphrase:
open(keyfile, "wt").write(crypto.dump_privatekey(crypto.FILETYPE_PEM,
key, KEY_CIPHER,
- passphrase))
+
passphrase).decode('utf-8'))
else:
open(keyfile, "wt").write(crypto.dump_privatekey(crypto.FILETYPE_PEM,
- key))
+ key).decode('utf-8'))
return key
@@ -62,7 +62,7 @@ def create_pkcs12(clientkey, clientcert,
pkcs12.set_certificate(clientcert)
pkcs12.set_privatekey(clientkey)
pkcs12.set_ca_certificates([issuer])
- open(pkcs12file, "wt").write(pkcs12.export(passphrase=passphrase,
+ open(pkcs12file, "wb").write(pkcs12.export(passphrase=passphrase,
iter=2048, maciter=2048))
def create_crl(revokedcert, cakey, cacert, crlfile, next_crl_days=VALID_DAYS):
@@ -73,9 +73,9 @@ def create_crl(revokedcert, cakey, cacer
now = datetime.utcnow()
now_str = now.strftime('%Y%m%d%H%M%SZ')
- revoked.set_serial(serial_number)
- revoked.set_reason('unspecified')
- revoked.set_rev_date(now_str) # revoked as of now
+ revoked.set_serial(serial_number.encode('ascii'))
+ revoked.set_reason(b'unspecified')
+ revoked.set_rev_date(now_str.encode('ascii')) # revoked as of now
crl.add_revoked(revoked)
try:
@@ -84,7 +84,7 @@ def create_crl(revokedcert, cakey, cacer
# Some very old versions of pyopenssl (such as the one on macOS)
# do not support the 'digest' keyword argument.
exported = crl.export(cacert, cakey, days=next_crl_days)
- open(crlfile, "wt").write(exported)
+ open(crlfile, "wb").write(exported)
# subjectAltName
def create_cert(subjectkey, certfile, issuer=None, issuerkey=None, country='',
@@ -122,41 +122,41 @@ def create_cert(subjectkey, certfile, is
if ca:
cert.add_extensions([
- crypto.X509Extension("basicConstraints", False,
- "CA:TRUE"),
- crypto.X509Extension("subjectKeyIdentifier", False, "hash",
+ crypto.X509Extension(b"basicConstraints", False,
+ b"CA:TRUE"),
+ crypto.X509Extension(b"subjectKeyIdentifier", False, b"hash",
subject=cert)
])
cert.add_extensions([
- crypto.X509Extension("authorityKeyIdentifier", False,
- "keyid:always", issuer=issuer)
+ crypto.X509Extension(b"authorityKeyIdentifier", False,
+ b"keyid:always", issuer=issuer)
])
if subjectAltName:
critical = True if not cn else False
cert.add_extensions([
- crypto.X509Extension('subjectAltName', critical, ",
".join(subjectAltName))])
+ crypto.X509Extension(b'subjectAltName', critical, ",
".join(subjectAltName).encode('ascii'))])
if ocsp_responder_url:
cert.add_extensions([
- crypto.X509Extension('authorityInfoAccess', False,
- 'OCSP;URI:' + ocsp_responder_url)])
+ crypto.X509Extension(b'authorityInfoAccess', False,
+ ('OCSP;URI:' +
ocsp_responder_url).encode('ascii'))])
if ocsp_signer:
cert.add_extensions([
- crypto.X509Extension('extendedKeyUsage', True, 'OCSPSigning')
+ crypto.X509Extension(b'extendedKeyUsage', True, b'OCSPSigning')
])
cert.sign(issuerkey, SIGN_ALGO)
open(certfile, "wt").write(crypto.dump_certificate(crypto.FILETYPE_PEM,
- cert))
+ cert).decode('utf-8'))
return cert
if __name__ == '__main__':
# root CA key pair and certificate.
# This key will be used to sign the intermediate CA certificate
- rootcakey = create_key('private/serfrootcakey.pem', 'serftest')
+ rootcakey = create_key('private/serfrootcakey.pem', b'serftest')
rootcacert = create_cert(subjectkey=rootcakey,
certfile='serfrootcacert.pem',
@@ -167,7 +167,7 @@ if __name__ == '__main__':
# intermediate CA key pair and certificate
# This key will be used to sign all server certificates
- cakey = create_key('private/serfcakey.pem', 'serftest')
+ cakey = create_key('private/serfcakey.pem', b'serftest')
cacert = create_cert(subjectkey=cakey, certfile='serfcacert.pem',
issuer=rootcacert, issuerkey=rootcakey,
@@ -178,7 +178,7 @@ if __name__ == '__main__':
# server key pair
# server certificate, no errors
- serverkey = create_key('private/serfserverkey.pem', 'serftest')
+ serverkey = create_key('private/serfserverkey.pem', b'serftest')
servercert = create_cert(subjectkey=serverkey,
certfile='serfservercert.pem',
@@ -243,7 +243,7 @@ if __name__ == '__main__':
ocsp_signer=True)
# client key pair and certificate
- clientkey = create_key('private/serfclientkey.pem', 'serftest')
+ clientkey = create_key('private/serfclientkey.pem', b'serftest')
clientcert = create_cert(subjectkey=clientkey,
certfile='serfclientcert.pem',
@@ -254,7 +254,7 @@ if __name__ == '__main__':
email='[email protected]')
clientpkcs12 = create_pkcs12(clientkey, clientcert, cacert,
- 'serfclientcert.p12', 'serftest')
+ 'serfclientcert.p12', b'serftest')
# Note that this creates a v1 CRL file without extensions set, and with
# MD5 hash. Not ideal, but pyOpenSSL doesn't support more than this.