diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2016-02-27 14:56:08 -0600 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2016-02-27 14:56:08 -0600 |
commit | a69f925a501d6e079f89188f131bc2f4866aee0c (patch) | |
tree | 61e1c5f00b175046f4f674dffb2c9036050a5edb /src | |
parent | ae16b479987b3cf0f187ce32919f2879fc058663 (diff) | |
parent | ebb7fa14094ac39443f246885a02487fa529506b (diff) | |
download | cryptography-a69f925a501d6e079f89188f131bc2f4866aee0c.tar.gz cryptography-a69f925a501d6e079f89188f131bc2f4866aee0c.tar.bz2 cryptography-a69f925a501d6e079f89188f131bc2f4866aee0c.zip |
Merge pull request #2739 from alex/policy-constraints-parse
Fixed #2732 -- added support for x.509 policy constraints extension
Diffstat (limited to 'src')
-rw-r--r-- | src/cryptography/hazmat/backends/openssl/decode_asn1.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/decode_asn1.py b/src/cryptography/hazmat/backends/openssl/decode_asn1.py index 42d6c858..24fbef86 100644 --- a/src/cryptography/hazmat/backends/openssl/decode_asn1.py +++ b/src/cryptography/hazmat/backends/openssl/decode_asn1.py @@ -452,6 +452,29 @@ def _decode_general_subtrees(backend, stack_subtrees): return subtrees +def _decode_policy_constraints(backend, pc): + pc = backend._ffi.cast("POLICY_CONSTRAINTS *", pc) + pc = backend._ffi.gc(pc, backend._lib.POLICY_CONSTRAINTS_free) + + if pc.requireExplicitPolicy == backend._ffi.NULL: + require_explicit_policy = None + else: + require_explicit_policy = _asn1_integer_to_int( + backend, pc.requireExplicitPolicy + ) + + if pc.inhibitPolicyMapping == backend._ffi.NULL: + inhibit_policy_mapping = None + else: + inhibit_policy_mapping = _asn1_integer_to_int( + backend, pc.inhibitPolicyMapping + ) + + return x509.PolicyConstraints( + require_explicit_policy, inhibit_policy_mapping + ) + + def _decode_extended_key_usage(backend, sk): sk = backend._ffi.cast("Cryptography_STACK_OF_ASN1_OBJECT *", sk) sk = backend._ffi.gc(sk, backend._lib.sk_ASN1_OBJECT_free) @@ -729,6 +752,7 @@ _EXTENSION_HANDLERS = { ExtensionOID.INHIBIT_ANY_POLICY: _decode_inhibit_any_policy, ExtensionOID.ISSUER_ALTERNATIVE_NAME: _decode_issuer_alt_name, ExtensionOID.NAME_CONSTRAINTS: _decode_name_constraints, + ExtensionOID.POLICY_CONSTRAINTS: _decode_policy_constraints, } _REVOKED_EXTENSION_HANDLERS = { |