diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2015-04-19 11:06:54 -0400 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2015-04-19 11:06:54 -0400 |
commit | 941afb370677019323c6d335c2f529a3994a600a (patch) | |
tree | 1824f127523a0c4dcd1c5b20e737404b67447fea /src | |
parent | 7476b13b4953fd750d0484b0227e5de7b6cfeea8 (diff) | |
parent | c7c9a43d39c0018b0e32e43f9c523dc768b462e9 (diff) | |
download | cryptography-941afb370677019323c6d335c2f529a3994a600a.tar.gz cryptography-941afb370677019323c6d335c2f529a3994a600a.tar.bz2 cryptography-941afb370677019323c6d335c2f529a3994a600a.zip |
Merge pull request #1835 from reaperhulk/x509-aki
AuthorityKeyIdentifier support
Diffstat (limited to 'src')
-rw-r--r-- | src/cryptography/x509.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py index 55b17460..cdc0e430 100644 --- a/src/cryptography/x509.py +++ b/src/cryptography/x509.py @@ -557,6 +557,43 @@ class SubjectAlternativeName(object): return "<SubjectAlternativeName({0})>".format(self._general_names) +class AuthorityKeyIdentifier(object): + def __init__(self, key_identifier, authority_cert_issuer, + authority_cert_serial_number): + if authority_cert_issuer or authority_cert_serial_number: + if not authority_cert_issuer or not authority_cert_serial_number: + raise ValueError( + "authority_cert_issuer and authority_cert_serial_number " + "must both be present or both None" + ) + + if not isinstance(authority_cert_issuer, Name): + raise TypeError("authority_cert_issuer must be a Name") + + if not isinstance(authority_cert_serial_number, six.integer_types): + raise TypeError( + "authority_cert_serial_number must be an integer" + ) + + self._key_identifier = key_identifier + self._authority_cert_issuer = authority_cert_issuer + self._authority_cert_serial_number = authority_cert_serial_number + + def __repr__(self): + return ( + "<AuthorityKeyIdentifier(key_identifier={0.key_identifier!r}, " + "authority_cert_issuer={0.authority_cert_issuer}, " + "authority_cert_serial_number={0.authority_cert_serial_number}" + ")>".format(self) + ) + + key_identifier = utils.read_only_property("_key_identifier") + authority_cert_issuer = utils.read_only_property("_authority_cert_issuer") + authority_cert_serial_number = utils.read_only_property( + "_authority_cert_serial_number" + ) + + OID_COMMON_NAME = ObjectIdentifier("2.5.4.3") OID_COUNTRY_NAME = ObjectIdentifier("2.5.4.6") OID_LOCALITY_NAME = ObjectIdentifier("2.5.4.7") |