Fixed TypeError and added documentation
diff --git a/docs/fernet.rst b/docs/fernet.rst
index f55a2d6..b75be77 100644
--- a/docs/fernet.rst
+++ b/docs/fernet.rst
@@ -34,12 +34,15 @@
         they'll also be able forge arbitrary messages that will be
         authenticated and decrypted.
 
-    .. method:: encrypt(plaintext)
+    .. method:: encrypt(data)
 
-        :param bytes plaintext: The message you would like to encrypt.
+        :param bytes data: The message you would like to encrypt.
         :returns bytes: A secure message that cannot be read or altered
                         without the key. It is URL-safe base64-encoded. This is
                         referred to as a "Fernet token".
+        :raises TypeError: This exception is raised if ``data`` is not a binary
+                           type. This is ``str`` in Python 2 and ``bytes`` in
+                           Python 3.
 
         .. note::
 
@@ -66,6 +69,9 @@
                                                   ``ttl``, it is malformed, or
                                                   it does not have a valid
                                                   signature.
+        :raises TypeError: This exception is raised if ``token`` is not a binary
+                           type. This is ``str`` in Python 2 and ``bytes`` in
+                           Python 3.
 
 
 .. class:: InvalidToken
diff --git a/docs/hazmat/primitives/constant-time.rst b/docs/hazmat/primitives/constant-time.rst
index c6fcb3a..3296dbd 100644
--- a/docs/hazmat/primitives/constant-time.rst
+++ b/docs/hazmat/primitives/constant-time.rst
@@ -36,6 +36,9 @@
     :param bytes b: The right-hand side.
     :returns bool: ``True`` if ``a`` has the same bytes as ``b``, otherwise
                    ``False``.
+    :raises TypeError: This exception is raised if ``a`` or ``b`` is not a
+                       binary type. This is ``str`` in Python 2 and ``bytes``
+                       in Python 3.
 
 
 .. _`Coda Hale's blog post`: http://codahale.com/a-lesson-in-timing-attacks/
diff --git a/docs/hazmat/primitives/cryptographic-hashes.rst b/docs/hazmat/primitives/cryptographic-hashes.rst
index 773d97f..43dee3f 100644
--- a/docs/hazmat/primitives/cryptographic-hashes.rst
+++ b/docs/hazmat/primitives/cryptographic-hashes.rst
@@ -54,6 +54,9 @@
 
         :param bytes data: The bytes to be hashed.
         :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`.
+        :raises TypeError: This exception is raised if ``data`` is not a binary
+                           type. This is ``str`` in Python 2 and ``bytes`` in
+                           Python 3.
 
     .. method:: copy()
 
diff --git a/docs/hazmat/primitives/key-derivation-functions.rst b/docs/hazmat/primitives/key-derivation-functions.rst
index de6bf5f..c9c0c3c 100644
--- a/docs/hazmat/primitives/key-derivation-functions.rst
+++ b/docs/hazmat/primitives/key-derivation-functions.rst
@@ -88,6 +88,10 @@
         provided ``backend`` does not implement
         :class:`~cryptography.hazmat.backends.interfaces.PBKDF2HMACBackend`
 
+    :raises TypeError: This exception is raised if ``salt`` is not a binary
+                       type. This is ``str`` in Python 2 and ``bytes`` in
+                       Python 3.
+
     .. method:: derive(key_material)
 
         :param bytes key_material: The input key material. For PBKDF2 this
@@ -99,6 +103,10 @@
                                                           called more than
                                                           once.
 
+        :raises TypeError: This exception is raised if ``key_material`` is not
+                           a binary type. This is ``str`` in Python 2 and
+                           ``bytes`` in Python 3.
+
         This generates and returns a new key from the supplied password.
 
     .. method:: verify(key_material, expected_key)
@@ -191,10 +199,17 @@
         provided ``backend`` does not implement
         :class:`~cryptography.hazmat.backends.interfaces.HMACBackend`
 
+    :raises TypeError: This exception is raised if ``salt`` or ``info`` is not
+                       a binary type. This is ``str`` in Python 2 and ``bytes``
+                       in Python 3.
+
     .. method:: derive(key_material)
 
         :param bytes key_material: The input key material.
         :return bytes: The derived key.
+        :raises TypeError: This exception is raised if ``key_material`` is not
+                           a binary type. This is ``str`` in Python 2 and
+                           ``bytes`` in Python 3.
 
         Derives a new key from the input key material by performing both the
         extract and expand operations.
@@ -277,6 +292,9 @@
         provided ``backend`` does not implement
         :class:`~cryptography.hazmat.backends.interfaces.HMACBackend`
     :raises TypeError: This is raised if the provided ``info`` is a unicode object
+    :raises TypeError: This exception is raised if ``info`` is not a binary
+                       type. This is ``str`` in Python 2 and ``bytes`` in
+                       Python 3.
 
     .. method:: derive(key_material)
 
@@ -285,6 +303,9 @@
 
         :raises TypeError: This is raised if the provided ``key_material`` is
             a unicode object
+        :raises TypeError: This exception is raised if ``key_material`` is not
+                           a binary type. This is ``str`` in Python 2 and
+                           ``bytes`` in Python 3.
 
         Derives a new key from the input key material by performing both the
         extract and expand operations.
diff --git a/docs/hazmat/primitives/mac/cmac.rst b/docs/hazmat/primitives/mac/cmac.rst
index 1fde139..86c3b6a 100644
--- a/docs/hazmat/primitives/mac/cmac.rst
+++ b/docs/hazmat/primitives/mac/cmac.rst
@@ -68,6 +68,9 @@
 
         :param bytes data: The bytes to hash and authenticate.
         :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`
+        :raises TypeError: This exception is raised if ``data`` is not a binary
+                           type. This is ``str`` in Python 2 and ``bytes`` in
+                           Python 3.
 
     .. method:: copy()
 
@@ -89,6 +92,9 @@
         :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`
         :raises cryptography.exceptions.InvalidSignature: If signature does not
                                                                   match digest
+        :raises TypeError: This exception is raised if ``signature`` is not a
+                           binary type. This is ``str`` in Python 2 and
+                           ``bytes`` in Python 3.
 
         .. method:: finalize()
 
diff --git a/docs/hazmat/primitives/mac/hmac.rst b/docs/hazmat/primitives/mac/hmac.rst
index e20a403..0fc4a19 100644
--- a/docs/hazmat/primitives/mac/hmac.rst
+++ b/docs/hazmat/primitives/mac/hmac.rst
@@ -69,6 +69,9 @@
 
         :param bytes msg: The bytes to hash and authenticate.
         :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`
+        :raises TypeError: This exception is raised if ``msg`` is not a binary
+                           type. This is ``str`` in Python 2 and ``bytes`` in
+                           Python 3.
 
     .. method:: copy()
 
@@ -90,6 +93,9 @@
         :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`
         :raises cryptography.exceptions.InvalidSignature: If signature does not
                                                           match digest
+        :raises TypeError: This exception is raised if ``signature`` is not a
+                           binary type. This is ``str`` in Python 2 and
+                           ``bytes`` in Python 3.
 
     .. method:: finalize()
 
diff --git a/docs/hazmat/primitives/padding.rst b/docs/hazmat/primitives/padding.rst
index 4092ac0..72378e1 100644
--- a/docs/hazmat/primitives/padding.rst
+++ b/docs/hazmat/primitives/padding.rst
@@ -70,6 +70,9 @@
         :return bytes: Returns the data that was padded or unpadded.
         :raises TypeError: Raised if data is not bytes.
         :raises cryptography.exceptions.AlreadyFinalized: See :meth:`finalize`.
+        :raises TypeError: This exception is raised if ``data`` is not a binary
+                           type. This is ``str`` in Python 2 and ``bytes`` in
+                           Python 3.
 
     .. method:: finalize()