aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-07-05 11:19:38 -0400
committerAlex Gaynor <alex.gaynor@gmail.com>2015-07-05 11:19:38 -0400
commitd5f718c19c09f529ff34b319a1e2e0e7f1862a9a (patch)
treee96284a62f24d00ef19c02e219f196fdc607b203 /src
parent230989fe958bedbe4be3aef3761d452f28bb45ea (diff)
downloadcryptography-d5f718c19c09f529ff34b319a1e2e0e7f1862a9a.tar.gz
cryptography-d5f718c19c09f529ff34b319a1e2e0e7f1862a9a.tar.bz2
cryptography-d5f718c19c09f529ff34b319a1e2e0e7f1862a9a.zip
Organize code a bit better
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/openssl/backend.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py
index f05b0515..753cb50d 100644
--- a/src/cryptography/hazmat/backends/openssl/backend.py
+++ b/src/cryptography/hazmat/backends/openssl/backend.py
@@ -139,20 +139,25 @@ def _encode_basic_constraints(backend, basic_constraints):
def _encode_subject_alt_name(backend, san):
general_names = backend._lib.GENERAL_NAMES_new()
assert general_names != backend._ffi.NULL
- # TODO: GC
+ general_names = backend._ffi.gc(
+ general_names, backend._lib.GENERAL_NAMES_free
+ )
for alt_name in san:
- assert isinstance(alt_name, x509.DNSName)
gn = backend._lib.GENERAL_NAME_new()
assert gn != backend._ffi.NULL
- gn.type = backend._lib.GEN_DNS
- ia5 = backend._lib.ASN1_IA5STRING_new()
- assert ia5 != backend._ffi.NULL
- gn.d.dNSName = ia5
- # TODO: idna
- value = alt_name.value.encode("ascii")
- res = backend._lib.ASN1_STRING_set(gn.d.dNSName, value, len(value))
- assert res == 1
+ # TODO: GC?
+ if isinstance(alt_name, x509.DNSName):
+ gn.type = backend._lib.GEN_DNS
+ ia5 = backend._lib.ASN1_IA5STRING_new()
+ assert ia5 != backend._ffi.NULL
+ # TODO: idna
+ value = alt_name.value.encode("ascii")
+ res = backend._lib.ASN1_STRING_set(ia5, value, len(value))
+ assert res == 1
+ gn.d.dNSName = ia5
+ else:
+ raise NotImplementedError("Only DNSNames are supported right now")
res = backend._lib.sk_GENERAL_NAME_push(general_names, gn)
assert res == 1