aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-05-12 20:17:21 -0400
committerAlex Gaynor <alex.gaynor@gmail.com>2015-05-12 20:17:21 -0400
commitcb73b224c1982370fb6be39c2eafbe676c92a99a (patch)
tree94989fce2ffd6b4040806bd3060b11a981f79440
parentc1ae7516c7e2727b926f12692c05461e6471a4b0 (diff)
parentfbc64d3527acd9f70e1d3e7dc404c798f42f3a44 (diff)
downloadcryptography-cb73b224c1982370fb6be39c2eafbe676c92a99a.tar.gz
cryptography-cb73b224c1982370fb6be39c2eafbe676c92a99a.tar.bz2
cryptography-cb73b224c1982370fb6be39c2eafbe676c92a99a.zip
Merge pull request #1934 from reaperhulk/asn1string-to-utf8
refactor asn1string->utf8 conversion into a separate function
-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(