diff --git a/cryptography/exceptions.py b/cryptography/exceptions.py
index 1144cb9..b496259 100644
--- a/cryptography/exceptions.py
+++ b/cryptography/exceptions.py
@@ -48,5 +48,5 @@
     pass
 
 
-class UnsupportedAsymmetricPadding(Exception):
+class UnsupportedPadding(Exception):
     pass
diff --git a/cryptography/hazmat/primitives/asymmetric/padding.py b/cryptography/hazmat/primitives/asymmetric/padding.py
index ca00e94..6bafe31 100644
--- a/cryptography/hazmat/primitives/asymmetric/padding.py
+++ b/cryptography/hazmat/primitives/asymmetric/padding.py
@@ -18,5 +18,5 @@
 
 
 @utils.register_interface(interfaces.AsymmetricPadding)
-class PKCS1(object):
+class PKCS1v15(object):
     name = "EMSA-PKCS1-v1_5"
diff --git a/docs/exceptions.rst b/docs/exceptions.rst
index 38bd0e4..0982426 100644
--- a/docs/exceptions.rst
+++ b/docs/exceptions.rst
@@ -44,7 +44,6 @@
     computed token does not match the expected token.
 
 
-.. class:: UnsupportedAsymmetricPadding
+.. class:: UnsupportedPadding
 
-    This is raised when the chosen asymmetric padding is not supported by the
-    backend.
+    This is raised when the chosen padding is not supported by the backend.
diff --git a/docs/hazmat/primitives/asymmetric/padding.rst b/docs/hazmat/primitives/asymmetric/padding.rst
index d3f713a..7aec3bd 100644
--- a/docs/hazmat/primitives/asymmetric/padding.rst
+++ b/docs/hazmat/primitives/asymmetric/padding.rst
@@ -10,11 +10,11 @@
     correct padding signatures can be forged, messages decrypted, and private
     keys compromised.
 
-.. class:: PKCS1()
+.. class:: PKCS1v15()
 
     .. versionadded:: 0.3
 
-    PKCS1 (also known as PKCS1 v1.5) is a simple padding scheme developed for
-    use with RSA keys. It is also defined in :rfc:`3447`.
+    PKCS1 v1.5 (also known as simply PKCS1) is a simple padding scheme
+    developed for use with RSA keys. It is defined in :rfc:`3447`.
 
 .. _`Padding is critical`: http://rdist.root.org/2009/10/06/why-rsa-encryption-padding-is-critical/
diff --git a/docs/hazmat/primitives/asymmetric/rsa.rst b/docs/hazmat/primitives/asymmetric/rsa.rst
index 5e71c7c..6492887 100644
--- a/docs/hazmat/primitives/asymmetric/rsa.rst
+++ b/docs/hazmat/primitives/asymmetric/rsa.rst
@@ -79,7 +79,7 @@
             ...     key_size=2048,
             ...     backend=default_backend()
             ... )
-            >>> signer = private_key.signer(padding.PKCS1(), hashes.SHA256(), default_backend())
+            >>> signer = private_key.signer(padding.PKCS1v15(), hashes.SHA256(), default_backend())
             >>> signer.update(b"this is some data I'd like")
             >>> signer.update(b" to sign")
             >>> signature = signer.finalize()
diff --git a/tests/hazmat/primitives/test_rsa.py b/tests/hazmat/primitives/test_rsa.py
index d190ea9..c66a158 100644
--- a/tests/hazmat/primitives/test_rsa.py
+++ b/tests/hazmat/primitives/test_rsa.py
@@ -407,7 +407,7 @@
             public_exponent=private["public_exponent"],
             modulus=private["modulus"]
         )
-        signer = private_key.signer(padding.PKCS1(), hashes.SHA1(), backend)
+        signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1(), backend)
         signer.update(binascii.unhexlify(example["message"]))
         signature = signer.finalize()
         assert binascii.hexlify(signature) == example["signature"]
@@ -418,7 +418,7 @@
             key_size=512,
             backend=backend
         )
-        signer = private_key.signer(padding.PKCS1(), hashes.SHA1(), backend)
+        signer = private_key.signer(padding.PKCS1v15(), hashes.SHA1(), backend)
         signer.update(b"sign me")
         signer.finalize()
         with pytest.raises(exceptions.AlreadyFinalized):
@@ -432,7 +432,7 @@
             key_size=512,
             backend=backend
         )
-        with pytest.raises(exceptions.UnsupportedAsymmetricPadding):
+        with pytest.raises(exceptions.UnsupportedPadding):
             private_key.signer(DummyPadding(), hashes.SHA1(), backend)
 
     def test_padding_incorrect_type(self, backend):
