Merge pull request #153 from reaperhulk/hash-ctx-copy-api

When copying a hash, pass the api through to the new object
diff --git a/.travis.yml b/.travis.yml
index 1c35b39..9710537 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,14 +20,11 @@
     # This is required because we need to get rid of the Travis installed PyPy
     # or it'll take precedence over the PPA installed one.
     - "[[ ${TOX_ENV} == pypy ]] && sudo rm -rf /usr/local/pypy/bin || true"
-    - pip install tox coveralls
+    - pip install tox
 
 script:
     - tox -e $TOX_ENV
 
-after_success:
-    - coveralls
-
 notifications:
     irc:
         channels:
diff --git a/README.rst b/README.rst
index a860713..fe9181e 100644
--- a/README.rst
+++ b/README.rst
@@ -4,9 +4,6 @@
 .. image:: https://travis-ci.org/pyca/cryptography.png?branch=master
    :target: https://travis-ci.org/pyca/cryptography
 
-.. image:: https://coveralls.io/repos/pyca/cryptography/badge.png?branch=master
-    :target: https://coveralls.io/r/pyca/cryptography?branch=master
-
 ``cryptography`` is a package designed to expose cryptographic primitives and
 recipes to Python developers.
 
@@ -15,14 +12,15 @@
 
 You can find more information in the `documentation`_.
 
-.. _`documentation`: https://cryptography.io/
-
 
 Discussion
 ~~~~~~~~~~
 
 We maintain a `cryptography-dev`_ mailing list for development discussion.
 
-You can also join #cryptography-dev on Freenode to ask questions or get involved.
+You can also join ``#cryptography-dev`` on Freenode to ask questions or get
+involved.
 
+
+.. _`documentation`: https://cryptography.io/
 .. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev
diff --git a/cryptography/bindings/openssl/evp.py b/cryptography/bindings/openssl/evp.py
index 41df105..80980c6 100644
--- a/cryptography/bindings/openssl/evp.py
+++ b/cryptography/bindings/openssl/evp.py
@@ -29,6 +29,9 @@
 } EVP_PKEY;
 static const int EVP_PKEY_RSA;
 static const int EVP_PKEY_DSA;
+static const int EVP_CTRL_GCM_SET_IVLEN;
+static const int EVP_CTRL_GCM_GET_TAG;
+static const int EVP_CTRL_GCM_SET_TAG;
 """
 
 FUNCTIONS = """
@@ -84,4 +87,5 @@
 int EVP_PKEY_assign_RSA(EVP_PKEY *, RSA *);
 int EVP_PKEY_assign_DSA(EVP_PKEY *, DSA *);
 int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *);
+int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *, int, int, void *);
 """
diff --git a/docs/conf.py b/docs/conf.py
index 16b1109..a368ac7 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -248,3 +248,7 @@
 
 # Example configuration for intersphinx: refer to the Python standard library.
 intersphinx_mapping = {'http://docs.python.org/': None}
+
+
+# Enable the new ReadTheDocs theme
+RTD_NEW_THEME = True
diff --git a/docs/primitives/cryptographic-hashes.rst b/docs/primitives/cryptographic-hashes.rst
index aeb30f4..abeb846 100644
--- a/docs/primitives/cryptographic-hashes.rst
+++ b/docs/primitives/cryptographic-hashes.rst
@@ -86,5 +86,5 @@
 
 .. class:: cryptography.primitives.hashes.MD5()
 
-    MD5 is a deprecated cryptographic hash function. It has a 160-bit message
+    MD5 is a deprecated cryptographic hash function. It has a 128-bit message
     digest and has practical known collision attacks.
diff --git a/docs/primitives/symmetric-encryption.rst b/docs/primitives/symmetric-encryption.rst
index 73d8ad3..9768246 100644
--- a/docs/primitives/symmetric-encryption.rst
+++ b/docs/primitives/symmetric-encryption.rst
@@ -33,11 +33,15 @@
 
     .. method:: encryptor()
 
-        :return :class:`CipherContext`: encryption instance
+        :return: An encrypting
+            :class:`~cryptography.primitives.interfaces.CipherContext`
+            provider.
 
     .. method:: decryptor()
 
-        :return :class:`CipherContext`: decryption instance
+        :return: A decrypting
+            :class:`~cryptography.primitives.interfaces.CipherContext`
+            provider.
 
 .. class:: cryptography.primitives.interfaces.CipherContext()