From ab96a53bc9020a4d605d57dc972e45df5c8c4862 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Thu, 14 Sep 2017 07:42:33 +0800 Subject: implement __hash__ on CertificatePolicies and its child classes (#3914) --- src/cryptography/x509/extensions.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/cryptography/x509') diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py index 8880f744..9d6b3e79 100644 --- a/src/cryptography/x509/extensions.py +++ b/src/cryptography/x509/extensions.py @@ -597,6 +597,9 @@ class CertificatePolicies(object): def __getitem__(self, idx): return self._policies[idx] + def __hash__(self): + return hash(tuple(self._policies)) + class PolicyInformation(object): def __init__(self, policy_identifier, policy_qualifiers): @@ -636,6 +639,14 @@ class PolicyInformation(object): def __ne__(self, other): return not self == other + def __hash__(self): + if self.policy_qualifiers is not None: + pq = tuple(self.policy_qualifiers) + else: + pq = None + + return hash((self.policy_identifier, pq)) + policy_identifier = utils.read_only_property("_policy_identifier") policy_qualifiers = utils.read_only_property("_policy_qualifiers") @@ -670,6 +681,9 @@ class UserNotice(object): def __ne__(self, other): return not self == other + def __hash__(self): + return hash((self.notice_reference, self.explicit_text)) + notice_reference = utils.read_only_property("_notice_reference") explicit_text = utils.read_only_property("_explicit_text") @@ -703,6 +717,9 @@ class NoticeReference(object): def __ne__(self, other): return not self == other + def __hash__(self): + return hash((self.organization, tuple(self.notice_numbers))) + organization = utils.read_only_property("_organization") notice_numbers = utils.read_only_property("_notice_numbers") -- cgit v1.2.3