aboutsummaryrefslogtreecommitdiffstats
path: root/src/cryptography/x509/name.py
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-08-09 20:40:48 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-08-09 20:40:48 -0500
commited036d25a60e4177c4e7f8fb5961d9048cdb3802 (patch)
treec783715fce017a0794b86e8cdc99dc2a64178978 /src/cryptography/x509/name.py
parenta1584fd8baf8d636e36321d5394b77bd0afa2529 (diff)
downloadcryptography-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.py70
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)