aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-04-02 23:07:10 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-04-02 23:07:10 -0500
commitac3e5bbf3eb6278973c7f417c56d69bfe2074920 (patch)
tree8ba39ea1648ae100a9e473ccac0e923122d7bc9f
parentc053129791404f5f03df2c2243878f08352fb88d (diff)
downloadcryptography-ac3e5bbf3eb6278973c7f417c56d69bfe2074920.tar.gz
cryptography-ac3e5bbf3eb6278973c7f417c56d69bfe2074920.tar.bz2
cryptography-ac3e5bbf3eb6278973c7f417c56d69bfe2074920.zip
add repr to KeyUsage
-rw-r--r--src/cryptography/x509.py17
-rw-r--r--tests/test_x509_ext.py38
2 files changed, 55 insertions, 0 deletions
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index 63c8767d..17ef6ddd 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -312,6 +312,23 @@ class KeyUsage(object):
else:
return self._decipher_only
+ def __repr__(self):
+ try:
+ encipher_only = self.encipher_only
+ decipher_only = self.decipher_only
+ except ValueError:
+ encipher_only = "N/A"
+ decipher_only = "N/A"
+
+ return ("<KeyUsage(digital_signature={0.digital_signature}, "
+ "content_commitment={0.content_commitment}, "
+ "key_encipherment={0.key_encipherment}, "
+ "data_encipherment={0.data_encipherment}, "
+ "key_agreement={0.key_agreement}, "
+ "key_cert_sign={0.key_cert_sign}, crl_sign={0.crl_sign}, "
+ "encipher_only={1}, decipher_only={2})>").format(
+ self, encipher_only, decipher_only)
+
OID_COMMON_NAME = ObjectIdentifier("2.5.4.3")
OID_COUNTRY_NAME = ObjectIdentifier("2.5.4.6")
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 7447ac4b..7fccaba6 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -131,6 +131,44 @@ class TestKeyUsage(object):
with pytest.raises(ValueError):
ku.decipher_only
+ def test_repr_key_agreement_false(self):
+ ku = x509.KeyUsage(
+ digital_signature=True,
+ content_commitment=True,
+ key_encipherment=False,
+ data_encipherment=False,
+ key_agreement=False,
+ key_cert_sign=True,
+ crl_sign=False,
+ encipher_only=False,
+ decipher_only=False
+ )
+ assert repr(ku) == (
+ "<KeyUsage(digital_signature=True, content_commitment=True, key_en"
+ "cipherment=False, data_encipherment=False, key_agreement=False, k"
+ "ey_cert_sign=True, crl_sign=False, encipher_only=N/A, decipher_on"
+ "ly=N/A)>"
+ )
+
+ def test_repr_key_agreement_true(self):
+ ku = x509.KeyUsage(
+ digital_signature=True,
+ content_commitment=True,
+ key_encipherment=False,
+ data_encipherment=False,
+ key_agreement=True,
+ key_cert_sign=True,
+ crl_sign=False,
+ encipher_only=False,
+ decipher_only=False
+ )
+ assert repr(ku) == (
+ "<KeyUsage(digital_signature=True, content_commitment=True, key_en"
+ "cipherment=False, data_encipherment=False, key_agreement=True, k"
+ "ey_cert_sign=True, crl_sign=False, encipher_only=False, decipher_"
+ "only=False)>"
+ )
+
class TestBasicConstraints(object):
def test_ca_not_boolean(self):