| Viewing file:  _oid.py (2.38 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
# 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
 
 from cryptography import utils
 
 
 class ObjectIdentifier(object):
 def __init__(self, dotted_string):
 self._dotted_string = dotted_string
 
 nodes = self._dotted_string.split(".")
 intnodes = []
 
 # There must be at least 2 nodes, the first node must be 0..2, and
 # if less than 2, the second node cannot have a value outside the
 # range 0..39.  All nodes must be integers.
 for node in nodes:
 try:
 node_value = int(node, 10)
 except ValueError:
 raise ValueError(
 "Malformed OID: %s (non-integer nodes)"
 % (self._dotted_string)
 )
 if node_value < 0:
 raise ValueError(
 "Malformed OID: %s (negative-integer nodes)"
 % (self._dotted_string)
 )
 intnodes.append(node_value)
 
 if len(nodes) < 2:
 raise ValueError(
 "Malformed OID: %s (insufficient number of nodes)"
 % (self._dotted_string)
 )
 
 if intnodes[0] > 2:
 raise ValueError(
 "Malformed OID: %s (first node outside valid range)"
 % (self._dotted_string)
 )
 
 if intnodes[0] < 2 and intnodes[1] >= 40:
 raise ValueError(
 "Malformed OID: %s (second node outside valid range)"
 % (self._dotted_string)
 )
 
 def __eq__(self, other):
 if not isinstance(other, ObjectIdentifier):
 return NotImplemented
 
 return self.dotted_string == other.dotted_string
 
 def __ne__(self, other):
 return not self == other
 
 def __repr__(self):
 return "<ObjectIdentifier(oid={}, name={})>".format(
 self.dotted_string, self._name
 )
 
 def __hash__(self):
 return hash(self.dotted_string)
 
 @property
 def _name(self):
 # Lazy import to avoid an import cycle
 from cryptography.x509.oid import _OID_NAMES
 
 return _OID_NAMES.get(self, "Unknown OID")
 
 dotted_string = utils.read_only_property("_dotted_string")
 
 |