aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-05-12 15:22:31 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-05-12 15:22:31 -0500
commitfbc64d3527acd9f70e1d3e7dc404c798f42f3a44 (patch)
treee65737887d020b479c2d2de0d6d83550e98ebd38 /src
parent75f4118e61a050e3e9f562a4de00a9dd68e1f5c0 (diff)
downloadcryptography-fbc64d3527acd9f70e1d3e7dc404c798f42f3a44.tar.gz
cryptography-fbc64d3527acd9f70e1d3e7dc404c798f42f3a44.tar.bz2
cryptography-fbc64d3527acd9f70e1d3e7dc404c798f42f3a44.zip
refactor asn1string->utf8 conversion into a separate function
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/openssl/x509.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index 25b7c8c1..8b5f3920 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -45,6 +45,17 @@ def _asn1_integer_to_int(backend, asn1_int):
return backend._bn_to_int(bn)
+def _asn1_string_to_utf8(backend, asn1_string):
+ buf = backend._ffi.new("unsigned char **")
+ res = backend._lib.ASN1_STRING_to_UTF8(buf, asn1_string)
+ assert res >= 0
+ assert buf[0] != backend._ffi.NULL
+ buf = backend._ffi.gc(
+ buf, lambda buffer: backend._lib.OPENSSL_free(buffer[0])
+ )
+ return backend._ffi.buffer(buf[0], res)[:].decode('utf8')
+
+
def _build_x509_name(backend, x509_name):
count = backend._lib.X509_NAME_entry_count(x509_name)
attributes = []
@@ -54,14 +65,7 @@ def _build_x509_name(backend, x509_name):
assert obj != backend._ffi.NULL
data = backend._lib.X509_NAME_ENTRY_get_data(entry)
assert data != backend._ffi.NULL
- buf = backend._ffi.new("unsigned char **")
- res = backend._lib.ASN1_STRING_to_UTF8(buf, data)
- assert res >= 0
- assert buf[0] != backend._ffi.NULL
- buf = backend._ffi.gc(
- buf, lambda buffer: backend._lib.OPENSSL_free(buffer[0])
- )
- value = backend._ffi.buffer(buf[0], res)[:].decode('utf8')
+ value = _asn1_string_to_utf8(backend, data)
oid = _obj2txt(backend, obj)
attributes.append(
x509.NameAttribute(