diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-07-02 20:52:29 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-07-02 20:52:29 -0500 |
commit | 23cafe861f4da2d7261a41bc57801b226e6b8c1b (patch) | |
tree | 6ac541f7d394a75a5b593737935f7f731d08a798 /src | |
parent | 7dbd626b5b32855ed4b8b19c7bd00cd9d31090f4 (diff) | |
parent | c2818e4f3291bfa80843f185fb0c7659b6204783 (diff) | |
download | cryptography-23cafe861f4da2d7261a41bc57801b226e6b8c1b.tar.gz cryptography-23cafe861f4da2d7261a41bc57801b226e6b8c1b.tar.bz2 cryptography-23cafe861f4da2d7261a41bc57801b226e6b8c1b.zip |
Merge pull request #2100 from alex/x509-cleanup
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.py | 32 |
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) |