aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.rst5
-rw-r--r--src/cryptography/hazmat/backends/openssl/x509.py3
-rw-r--r--src/cryptography/x509.py6
-rw-r--r--tests/test_x509.py20
4 files changed, 34 insertions, 0 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 82a3e5b6..475a2a35 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -27,6 +27,11 @@ Changelog
* Add support for creating certificate signing requests with
:class:`~cryptography.x509.CertificateSigningRequestBuilder`.
+0.9.3 - 2015-07-09
+~~~~~~~~~~~~~~~~~~
+
+* Updated Windows wheels to be compiled against OpenSSL 1.0.2d.
+
0.9.2 - 2015-07-04
~~~~~~~~~~~~~~~~~~
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index 399e6a6e..d78c60fa 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -724,6 +724,9 @@ class _CertificateSigningRequest(object):
def __ne__(self, other):
return not self == other
+ def __hash__(self):
+ return hash(self.public_bytes(serialization.Encoding.DER))
+
def public_key(self):
pkey = self._backend._lib.X509_REQ_get_pubkey(self._x509_req)
assert pkey != self._backend._ffi.NULL
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index d9d6db4a..33c64168 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -1444,6 +1444,12 @@ class CertificateSigningRequest(object):
"""
@abc.abstractmethod
+ def __hash__(self):
+ """
+ Computes a hash.
+ """
+
+ @abc.abstractmethod
def public_key(self):
"""
Returns the public key
diff --git a/tests/test_x509.py b/tests/test_x509.py
index 00d36909..6ad891b1 100644
--- a/tests/test_x509.py
+++ b/tests/test_x509.py
@@ -746,6 +746,26 @@ class TestRSACertificateRequest(object):
assert request1 != request2
assert request1 != object()
+ def test_hash(self, backend):
+ request1 = _load_cert(
+ os.path.join("x509", "requests", "rsa_sha1.pem"),
+ x509.load_pem_x509_csr,
+ backend
+ )
+ request2 = _load_cert(
+ os.path.join("x509", "requests", "rsa_sha1.pem"),
+ x509.load_pem_x509_csr,
+ backend
+ )
+ request3 = _load_cert(
+ os.path.join("x509", "requests", "san_rsa_sha1.pem"),
+ x509.load_pem_x509_csr,
+ backend
+ )
+
+ assert hash(request1) == hash(request2)
+ assert hash(request1) != hash(request3)
+
@pytest.mark.requires_backend_interface(interface=X509Backend)
class TestCertificateSigningRequestBuilder(object):