aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-07-02 19:07:00 -0400
committerAlex Gaynor <alex.gaynor@gmail.com>2015-07-02 19:07:00 -0400
commitc2818e4f3291bfa80843f185fb0c7659b6204783 (patch)
tree6ac541f7d394a75a5b593737935f7f731d08a798 /src
parent7dbd626b5b32855ed4b8b19c7bd00cd9d31090f4 (diff)
downloadcryptography-c2818e4f3291bfa80843f185fb0c7659b6204783.tar.gz
cryptography-c2818e4f3291bfa80843f185fb0c7659b6204783.tar.bz2
cryptography-c2818e4f3291bfa80843f185fb0c7659b6204783.zip
Shift around the x509 code, all the extensions are going to have the same thing
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py32
1 files changed, 12 insertions, 20 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index 91bc304f..73a58637 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -115,9 +115,7 @@ def _txt2obj(backend, name):
return obj
-def _encode_basic_constraints(backend, basic_constraints, critical):
- obj = _txt2obj(backend, x509.OID_BASIC_CONSTRAINTS.dotted_string)
- assert obj is not None
+def _encode_basic_constraints(backend, basic_constraints):
constraints = backend._lib.BASIC_CONSTRAINTS_new()
constraints = backend._ffi.gc(
constraints, backend._lib.BASIC_CONSTRAINTS_free
@@ -135,18 +133,7 @@ def _encode_basic_constraints(backend, basic_constraints, critical):
pp = backend._ffi.gc(
pp, lambda pointer: backend._lib.OPENSSL_free(pointer[0])
)
-
- # Wrap that in an X509 extension object.
- extension = backend._lib.X509_EXTENSION_create_by_OBJ(
- backend._ffi.NULL,
- obj,
- 1 if critical else 0,
- _encode_asn1_str(backend, pp[0], r),
- )
- assert extension != backend._ffi.NULL
-
- # Return the wrapped extension.
- return extension
+ return pp, r
@utils.register_interface(CipherBackend)
@@ -854,14 +841,19 @@ class Backend(object):
self._lib.sk_X509_EXTENSION_free,
)
for extension in builder._extensions:
+ obj = _txt2obj(self, extension.oid.dotted_string)
if isinstance(extension.value, x509.BasicConstraints):
- extension = _encode_basic_constraints(
- self,
- extension.value,
- extension.critical
- )
+ pp, r = _encode_basic_constraints(self, extension.value)
else:
raise NotImplementedError('Extension not yet supported.')
+
+ extension = self._lib.X509_EXTENSION_create_by_OBJ(
+ self._ffi.NULL,
+ obj,
+ 1 if extension.critical else 0,
+ _encode_asn1_str(self, pp[0], r),
+ )
+ assert extension != self._ffi.NULL
res = self._lib.sk_X509_EXTENSION_push(extensions, extension)
assert res == 1
res = self._lib.X509_REQ_add_extensions(x509_req, extensions)