diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-03-22 13:19:31 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-03-22 13:19:31 -0500 |
commit | 8589466c0a12835cda03bf91043cf51b657d9e46 (patch) | |
tree | e85adc517329f5ea0dfb0330cf840973310d9fc8 /src | |
parent | fd1444cfa97bb897eaee6ceca35175357317623b (diff) | |
download | cryptography-8589466c0a12835cda03bf91043cf51b657d9e46.tar.gz cryptography-8589466c0a12835cda03bf91043cf51b657d9e46.tar.bz2 cryptography-8589466c0a12835cda03bf91043cf51b657d9e46.zip |
rework BasicConstraints and Extension.
Diffstat (limited to 'src')
-rw-r--r-- | src/cryptography/x509.py | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py index 510e9c6f..d64d61f0 100644 --- a/src/cryptography/x509.py +++ b/src/cryptography/x509.py @@ -42,6 +42,7 @@ _OID_NAMES = { "1.2.840.10040.4.3": "dsa-with-sha1", "2.16.840.1.101.3.4.3.1": "dsa-with-sha224", "2.16.840.1.101.3.4.3.2": "dsa-with-sha256", + "2.5.29.19": "basicConstraints", } @@ -144,26 +145,36 @@ class Name(object): OID_BASIC_CONSTRAINTS = ObjectIdentifier("2.5.29.19") -@six.add_metaclass(abc.ABCMeta) class Extension(object): - @abc.abstractproperty - def critical(self): - """ - Returns the boolean value of the critical extension field. - """ + def __init__(self, oid, critical, value): + if not isinstance(oid, ObjectIdentifier): + raise TypeError( + "oid argument must be an ObjectIdentifier instance." + ) + if not isinstance(critical, bool): + raise TypeError("critical must be a boolean value") -@utils.register_interface(Extension) -class BasicConstraints(object): - oid = OID_BASIC_CONSTRAINTS + self._oid = oid + self._critical = critical + self._value = value - def __init__(self, ca, path_length, critical): + oid = utils.read_only_property("_oid") + critical = utils.read_only_property("_critical") + value = utils.read_only_property("_value") + + def __repr__(self): + return ("<Extension(oid={oid}, " + "critical={critical}, value={value})>").format( + oid=self.oid, critical=self.critical, value=self.value + ) + + +class BasicConstraints(object): + def __init__(self, ca, path_length): if not isinstance(ca, bool): raise TypeError("ca must be a boolean value") - if not isinstance(critical, bool): - raise TypeError("critical must be a boolean value") - if path_length is not None and ca is False: raise ValueError("path_length must be None when ca is False") @@ -175,17 +186,14 @@ class BasicConstraints(object): self._ca = ca self._path_length = path_length - self._critical = critical ca = utils.read_only_property("_ca") path_length = utils.read_only_property("_path_length") - critical = utils.read_only_property("_critical") def __repr__(self): return ("<BasicConstraints(ca={ca}, " - "path_length={path_length}, " - "critical={critical})>").format( - ca=self.ca, path_length=self.path_length, critical=self.critical + "path_length={path_length})>").format( + ca=self.ca, path_length=self.path_length ) |