add repr to KeyUsage
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index 63c8767..17ef6dd 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -312,6 +312,23 @@
         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 7447ac4..7fccaba 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -131,6 +131,44 @@
         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):