Refactor openssl launching code
diff --git a/test/test_crypto.py b/test/test_crypto.py
index 71fa08e..b4ae964 100644
--- a/test/test_crypto.py
+++ b/test/test_crypto.py
@@ -5,14 +5,14 @@
"""
from unittest import TestCase, main
-from subprocess import Popen, PIPE
+from subprocess import Popen, PIPE
from OpenSSL.crypto import TYPE_RSA, TYPE_DSA, Error, PKey, PKeyType
from OpenSSL.crypto import X509, X509Type, X509Name, X509NameType
from OpenSSL.crypto import X509Req, X509ReqType
from OpenSSL.crypto import X509Extension, X509ExtensionType
from OpenSSL.crypto import load_certificate, load_privatekey
-from OpenSSL.crypto import FILETYPE_PEM, FILETYPE_ASN1, FILETYPE_TEXT
+from OpenSSL.crypto import FILETYPE_PEM, FILETYPE_ASN1, FILETYPE_TEXT
from OpenSSL.crypto import dump_certificate, load_certificate_request
from OpenSSL.crypto import dump_certificate_request, dump_privatekey
@@ -726,24 +726,34 @@
self.assertEqual(loadedKey.type(), key.type())
self.assertEqual(loadedKey.bits(), key.bits())
+
+ def _runopenssl(self, pem, *args):
+ """
+ Run the command line openssl tool with the given arguments and write
+ the given PEM to its stdin.
+ """
+ process = Popen(
+ ("openssl",) + args,
+ stdin=PIPE, stdout=PIPE)
+ return process.communicate(input=str(pem))[0]
+
+
def test_dump_certificate(self):
"""
L{dump_certificate} writes PEM, DER, and text.
"""
- pemData = cleartextCertificatePEM + cleartextPrivateKeyPEM
+ pemData = cleartextCertificatePEM + cleartextPrivateKeyPEM
cert = load_certificate(FILETYPE_PEM, pemData)
dumped_pem = dump_certificate(FILETYPE_PEM, cert)
self.assertEqual(dumped_pem, cleartextCertificatePEM)
dumped_der = dump_certificate(FILETYPE_ASN1, cert)
- good_der = Popen(["openssl", "x509", "-outform", "DER"], \
- stdin=PIPE, stdout=PIPE).communicate(input=str(dumped_pem))[0]
+ good_der = self._runopenssl(dumped_pem, "x509", "-outform", "DER")
self.assertEqual(dumped_der, good_der)
cert2 = load_certificate(FILETYPE_ASN1, dumped_der)
dumped_pem2 = dump_certificate(FILETYPE_PEM, cert2)
self.assertEqual(dumped_pem2, cleartextCertificatePEM)
dumped_text = dump_certificate(FILETYPE_TEXT, cert)
- good_text = Popen(["openssl", "x509", "-noout", "-text"], \
- stdin=PIPE, stdout=PIPE).communicate(input=str(dumped_pem))[0]
+ good_text = self._runopenssl(dumped_pem, "x509", "-noout", "-text")
self.assertEqual(dumped_text, good_text)
@@ -755,17 +765,17 @@
dumped_pem = dump_privatekey(FILETYPE_PEM, key)
self.assertEqual(dumped_pem, cleartextPrivateKeyPEM)
dumped_der = dump_privatekey(FILETYPE_ASN1, key)
- good_der = Popen(["openssl", "rsa", "-outform", "DER"], \
- stdin=PIPE, stdout=PIPE).communicate(input=str(dumped_pem))[0]
+ # XXX This OpenSSL call writes "writing RSA key" to standard out. Sad.
+ good_der = self._runopenssl(dumped_pem, "rsa", "-outform", "DER")
self.assertEqual(dumped_der, good_der)
key2 = load_privatekey(FILETYPE_ASN1, dumped_der)
dumped_pem2 = dump_privatekey(FILETYPE_PEM, key2)
self.assertEqual(dumped_pem2, cleartextPrivateKeyPEM)
dumped_text = dump_privatekey(FILETYPE_TEXT, key)
- good_text = Popen(["openssl", "rsa", "-noout", "-text"], \
- stdin=PIPE, stdout=PIPE).communicate(input=str(dumped_pem))[0]
+ good_text = self._runopenssl(dumped_pem, "rsa", "-noout", "-text")
self.assertEqual(dumped_text, good_text)
+
def test_dump_certificate_request(self):
"""
L{dump_certificate_request} writes a PEM, DER, and text.
@@ -774,15 +784,13 @@
dumped_pem = dump_certificate_request(FILETYPE_PEM, req)
self.assertEqual(dumped_pem, cleartextCertificateRequestPEM)
dumped_der = dump_certificate_request(FILETYPE_ASN1, req)
- good_der = Popen(["openssl", "req", "-outform", "DER"], \
- stdin=PIPE, stdout=PIPE).communicate(input=str(dumped_pem))[0]
+ good_der = self._runopenssl(dumped_pem, "req", "-outform", "DER")
self.assertEqual(dumped_der, good_der)
req2 = load_certificate_request(FILETYPE_ASN1, dumped_der)
dumped_pem2 = dump_certificate_request(FILETYPE_PEM, req2)
self.assertEqual(dumped_pem2, cleartextCertificateRequestPEM)
dumped_text = dump_certificate_request(FILETYPE_TEXT, req)
- good_text = Popen(["openssl", "req", "-noout", "-text"], \
- stdin=PIPE, stdout=PIPE).communicate(input=str(dumped_pem))[0]
+ good_text = self._runopenssl(dumped_pem, "req", "-noout", "-text")
self.assertEqual(dumped_text, good_text)
@@ -808,4 +816,3 @@
if __name__ == '__main__':
main()
-