From d37c5375d5612b170daf8e20c23d0b71bd9af717 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Sun, 10 May 2015 16:54:51 -0500 Subject: extract some duplicate logic into a function --- src/cryptography/hazmat/backends/openssl/x509.py | 33 +++++++++++------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py index 42ca138d..44ad2d6d 100644 --- a/src/cryptography/hazmat/backends/openssl/x509.py +++ b/src/cryptography/hazmat/backends/openssl/x509.py @@ -65,6 +65,17 @@ def _build_x509_name(backend, x509_name): return x509.Name(attributes) +def _build_general_names(backend, gns): + num = backend._lib.sk_GENERAL_NAME_num(gns) + names = [] + for i in range(num): + gn = backend._lib.sk_GENERAL_NAME_value(gns, i) + assert gn != backend._ffi.NULL + names.append(_build_general_name(backend, gn)) + + return names + + def _build_general_name(backend, gn): if gn.type == backend._lib.GEN_DNS: data = backend._ffi.buffer(gn.d.dNSName.data, gn.d.dNSName.length)[:] @@ -342,15 +353,9 @@ class _Certificate(object): )[:] if akid.issuer != self._backend._ffi.NULL: - authority_cert_issuer = [] - - num = self._backend._lib.sk_GENERAL_NAME_num(akid.issuer) - for i in range(num): - gn = self._backend._lib.sk_GENERAL_NAME_value(akid.issuer, i) - assert gn != self._backend._ffi.NULL - value = _build_general_name(self._backend, gn) - - authority_cert_issuer.append(value) + authority_cert_issuer = _build_general_names( + self._backend, akid.issuer + ) if akid.serial != self._backend._ffi.NULL: bn = self._backend._lib.ASN1_INTEGER_to_BN( @@ -420,15 +425,7 @@ class _Certificate(object): ) assert gns != self._backend._ffi.NULL gns = self._backend._ffi.gc(gns, self._backend._lib.GENERAL_NAMES_free) - num = self._backend._lib.sk_GENERAL_NAME_num(gns) - general_names = [] - - for i in range(num): - gn = self._backend._lib.sk_GENERAL_NAME_value(gns, i) - assert gn != self._backend._ffi.NULL - value = _build_general_name(self._backend, gn) - - general_names.append(value) + general_names = _build_general_names(self._backend, gns) return x509.SubjectAlternativeName(general_names) -- cgit v1.2.3