summaryrefslogtreecommitdiff
path: root/src/cryptography
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2018-12-01 22:05:07 +0800
committerAlex Gaynor <alex.gaynor@gmail.com>2018-12-01 09:05:07 -0500
commit76e92e6bc6ff83c952f6e9a22cbd8cb59b64b247 (patch)
tree64673aa8e1d5062d3dbf886aab6ef0015b82e208 /src/cryptography
parenta84c5cdab80730bfe708379d29a2e357541cc00b (diff)
downloadcryptography-76e92e6bc6ff83c952f6e9a22cbd8cb59b64b247.tar.gz
refactor some code into separate functions in asn1 encode (#4617)
* refactor some code into separate functions in asn1 encode this will be useful in IDP encoding * review feedback
Diffstat (limited to 'src/cryptography')
-rw-r--r--src/cryptography/hazmat/backends/openssl/encode_asn1.py51
1 files changed, 31 insertions, 20 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/encode_asn1.py b/src/cryptography/hazmat/backends/openssl/encode_asn1.py
index 0e92bfce2..8bc8cb4b7 100644
--- a/src/cryptography/hazmat/backends/openssl/encode_asn1.py
+++ b/src/cryptography/hazmat/backends/openssl/encode_asn1.py
@@ -482,6 +482,34 @@ _CRLREASONFLAGS = {
}
+def _encode_reasonflags(backend, reasons):
+ bitmask = backend._lib.ASN1_BIT_STRING_new()
+ backend.openssl_assert(bitmask != backend._ffi.NULL)
+ for reason in reasons:
+ res = backend._lib.ASN1_BIT_STRING_set_bit(
+ bitmask, _CRLREASONFLAGS[reason], 1
+ )
+ backend.openssl_assert(res == 1)
+
+ return bitmask
+
+
+def _encode_full_name(backend, full_name):
+ dpn = backend._lib.DIST_POINT_NAME_new()
+ backend.openssl_assert(dpn != backend._ffi.NULL)
+ dpn.type = _DISTPOINT_TYPE_FULLNAME
+ dpn.name.fullname = _encode_general_names(backend, full_name)
+ return dpn
+
+
+def _encode_relative_name(backend, relative_name):
+ dpn = backend._lib.DIST_POINT_NAME_new()
+ backend.openssl_assert(dpn != backend._ffi.NULL)
+ dpn.type = _DISTPOINT_TYPE_RELATIVENAME
+ dpn.name.relativename = _encode_sk_name_entry(backend, relative_name)
+ return dpn
+
+
def _encode_cdps_freshest_crl(backend, cdps):
cdp = backend._lib.sk_DIST_POINT_new_null()
cdp = backend._ffi.gc(cdp, backend._lib.sk_DIST_POINT_free)
@@ -490,30 +518,13 @@ def _encode_cdps_freshest_crl(backend, cdps):
backend.openssl_assert(dp != backend._ffi.NULL)
if point.reasons:
- bitmask = backend._lib.ASN1_BIT_STRING_new()
- backend.openssl_assert(bitmask != backend._ffi.NULL)
- dp.reasons = bitmask
- for reason in point.reasons:
- res = backend._lib.ASN1_BIT_STRING_set_bit(
- bitmask, _CRLREASONFLAGS[reason], 1
- )
- backend.openssl_assert(res == 1)
+ dp.reasons = _encode_reasonflags(backend, point.reasons)
if point.full_name:
- dpn = backend._lib.DIST_POINT_NAME_new()
- backend.openssl_assert(dpn != backend._ffi.NULL)
- dpn.type = _DISTPOINT_TYPE_FULLNAME
- dpn.name.fullname = _encode_general_names(backend, point.full_name)
- dp.distpoint = dpn
+ dp.distpoint = _encode_full_name(backend, point.full_name)
if point.relative_name:
- dpn = backend._lib.DIST_POINT_NAME_new()
- backend.openssl_assert(dpn != backend._ffi.NULL)
- dpn.type = _DISTPOINT_TYPE_RELATIVENAME
- relativename = _encode_sk_name_entry(backend, point.relative_name)
- backend.openssl_assert(relativename != backend._ffi.NULL)
- dpn.name.relativename = relativename
- dp.distpoint = dpn
+ dp.distpoint = _encode_relative_name(backend, point.relative_name)
if point.crl_issuer:
dp.CRLissuer = _encode_general_names(backend, point.crl_issuer)