diff options
author | lovetox <philipp@hoerist.com> | 2022-01-30 19:29:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-30 13:29:44 -0500 |
commit | c3cdcfdecd9110d10e4105637b33c3000b6c60a9 (patch) | |
tree | f167f7522fdf5f73b2ea91eecfe47ab186ae5e75 /src | |
parent | d259e1d5ae2d71c2c8d8a9ea6317dc1de785dbad (diff) | |
download | pyopenssl-git-c3cdcfdecd9110d10e4105637b33c3000b6c60a9.tar.gz |
X509Name: Use functools.totalordering for comparisons (#1086)
* X509Name: Use functools.totalordering for comparisons
- Reduce the magic
- Make it more readable
- Make it easier to add type annotations in the future
* Correctly return NotImplemented
* Add new comparison test case
Diffstat (limited to 'src')
-rw-r--r-- | src/OpenSSL/crypto.py | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/OpenSSL/crypto.py b/src/OpenSSL/crypto.py index 77b2c6c..894d5fa 100644 --- a/src/OpenSSL/crypto.py +++ b/src/OpenSSL/crypto.py @@ -1,9 +1,8 @@ import calendar import datetime - from base64 import b16encode +import functools from functools import partial -from operator import __eq__, __ne__, __lt__, __le__, __gt__, __ge__ from cryptography import utils, x509 from cryptography.hazmat.primitives.asymmetric import dsa, rsa @@ -528,6 +527,7 @@ def get_elliptic_curve(name): raise ValueError("unknown curve name", name) +@functools.total_ordering class X509Name: """ An X.509 Distinguished Name. @@ -642,23 +642,17 @@ class X509Name: _lib.OPENSSL_free(result_buffer[0]) return result - def _cmp(op): - def f(self, other): - if not isinstance(other, X509Name): - return NotImplemented - result = _lib.X509_NAME_cmp(self._name, other._name) - return op(result, 0) - - return f + def __eq__(self, other): + if not isinstance(other, X509Name): + return NotImplemented - __eq__ = _cmp(__eq__) - __ne__ = _cmp(__ne__) + return _lib.X509_NAME_cmp(self._name, other._name) == 0 - __lt__ = _cmp(__lt__) - __le__ = _cmp(__le__) + def __lt__(self, other): + if not isinstance(other, X509Name): + return NotImplemented - __gt__ = _cmp(__gt__) - __ge__ = _cmp(__ge__) + return _lib.X509_NAME_cmp(self._name, other._name) < 0 def __repr__(self): """ |