Made corrections as per suggestions in
https://github.com/pyca/pyopenssl/pull/22
diff --git a/OpenSSL/crypto.py b/OpenSSL/crypto.py
index a80d10b..71862da 100644
--- a/OpenSSL/crypto.py
+++ b/OpenSSL/crypto.py
@@ -698,18 +698,18 @@
def get_extensions(self):
- """
- Get extensions to the request.
+ """
+ Get extensions to the request.
- :return: A list of X509Extension objects.
- """
- exts = []
- _exts = _lib.X509_REQ_get_extensions(self._req)
- for i in range(0, _lib.sk_X509_EXTENSION_num(_exts)):
- ext = X509Extension.__new__(X509Extension)
- ext._extension = _lib.sk_X509_EXTENSION_value(_exts, i)
- exts.append(ext)
- return exts
+ :return: A list of X509Extension objects.
+ """
+ exts = []
+ _native_exts_obj = _lib.X509_REQ_get_extensions(self._req)
+ for i in range(0, _lib.sk_X509_EXTENSION_num(_native_exts_obj)):
+ ext = X509Extension.__new__(X509Extension)
+ ext._extension = _lib.sk_X509_EXTENSION_value(_native_exts_obj, i)
+ exts.append(ext)
+ return exts
def sign(self, pkey, digest):
diff --git a/OpenSSL/test/test_crypto.py b/OpenSSL/test/test_crypto.py
index 3a6fbb9..a3685a9 100644
--- a/OpenSSL/test/test_crypto.py
+++ b/OpenSSL/test/test_crypto.py
@@ -1109,10 +1109,31 @@
request.add_extensions([
X509Extension(b('basicConstraints'), True, b('CA:false'))])
exts = request.get_extensions()
- self.assertEquals(len(exts), 1)
- self.assertEquals(exts[0].get_short_name(), b('basicConstraints'))
- self.assertEquals(exts[0].get_critical(), 1)
- self.assertEquals(exts[0].get_data(), b('0\x00'))
+ self.assertEqual(len(exts), 1)
+ self.assertEqual(exts[0].get_short_name(), b('basicConstraints'))
+ self.assertEqual(exts[0].get_critical(), 1)
+ self.assertEqual(exts[0].get_data(), b('0\x00'))
+
+
+ def test_get_extensions(self):
+ """
+ :py:obj:`X509Req.get_extensions` returns a :py:obj:`list` of
+ extensions added to this X509 request.
+ """
+ request = X509Req()
+ exts = request.get_extensions()
+ self.assertEqual(exts, [])
+ request.add_extensions([
+ X509Extension(b('basicConstraints'), True, b('CA:true')),
+ X509Extension(b('keyUsage'), False, b('digitalSignature'))])
+ exts = request.get_extensions()
+ self.assertEqual(len(exts), 2)
+ self.assertEqual(exts[0].get_short_name(), b('basicConstraints'))
+ self.assertEqual(exts[0].get_critical(), 1)
+ self.assertEqual(exts[0].get_data(), b('0\x03\x01\x01\xff'))
+ self.assertEqual(exts[1].get_short_name(), b('keyUsage'))
+ self.assertEqual(exts[1].get_critical(), 0)
+ self.assertEqual(exts[1].get_data(), b('\x03\x02\x07\x80'))
def test_add_extensions_wrong_args(self):