diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-08-09 20:40:48 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-08-09 20:40:48 -0500 |
commit | ed036d25a60e4177c4e7f8fb5961d9048cdb3802 (patch) | |
tree | c783715fce017a0794b86e8cdc99dc2a64178978 /src/cryptography/x509/name.py | |
parent | a1584fd8baf8d636e36321d5394b77bd0afa2529 (diff) | |
download | cryptography-ed036d25a60e4177c4e7f8fb5961d9048cdb3802.tar.gz cryptography-ed036d25a60e4177c4e7f8fb5961d9048cdb3802.tar.bz2 cryptography-ed036d25a60e4177c4e7f8fb5961d9048cdb3802.zip |
split Name from x509 module
Diffstat (limited to 'src/cryptography/x509/name.py')
-rw-r--r-- | src/cryptography/x509/name.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/cryptography/x509/name.py b/src/cryptography/x509/name.py new file mode 100644 index 00000000..992786ef --- /dev/null +++ b/src/cryptography/x509/name.py @@ -0,0 +1,70 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from __future__ import absolute_import, division, print_function + +import six + +from cryptography import utils +from cryptography.x509.oid import ObjectIdentifier + + +class NameAttribute(object): + def __init__(self, oid, value): + if not isinstance(oid, ObjectIdentifier): + raise TypeError( + "oid argument must be an ObjectIdentifier instance." + ) + + if not isinstance(value, six.text_type): + raise TypeError( + "value argument must be a text type." + ) + + self._oid = oid + self._value = value + + oid = utils.read_only_property("_oid") + value = utils.read_only_property("_value") + + def __eq__(self, other): + if not isinstance(other, NameAttribute): + return NotImplemented + + return ( + self.oid == other.oid and + self.value == other.value + ) + + def __ne__(self, other): + return not self == other + + def __repr__(self): + return "<NameAttribute(oid={0.oid}, value={0.value!r})>".format(self) + + +class Name(object): + def __init__(self, attributes): + self._attributes = attributes + + def get_attributes_for_oid(self, oid): + return [i for i in self if i.oid == oid] + + def __eq__(self, other): + if not isinstance(other, Name): + return NotImplemented + + return self._attributes == other._attributes + + def __ne__(self, other): + return not self == other + + def __iter__(self): + return iter(self._attributes) + + def __len__(self): + return len(self._attributes) + + def __repr__(self): + return "<Name({0!r})>".format(self._attributes) |