On OS X at build time compile the CC bindings
diff --git a/cryptography/hazmat/backends/commoncrypto/backend.py b/cryptography/hazmat/backends/commoncrypto/backend.py
index 58e57ef..603edc4 100644
--- a/cryptography/hazmat/backends/commoncrypto/backend.py
+++ b/cryptography/hazmat/backends/commoncrypto/backend.py
@@ -81,16 +81,18 @@
     def hash_supported(self, algorithm):
         try:
             self._hash_mapping[algorithm.name]
-            return True
         except KeyError:
             return False
+        else:
+            return True
 
     def hmac_supported(self, algorithm):
         try:
             self._supported_hmac_algorithms[algorithm.name]
-            return True
         except KeyError:
             return False
+        else:
+            return True
 
     def create_hash_ctx(self, algorithm):
         return _HashContext(self, algorithm)
diff --git a/cryptography/hazmat/bindings/openssl/dh.py b/cryptography/hazmat/bindings/openssl/dh.py
index edbe0e3..ecc62e9 100644
--- a/cryptography/hazmat/bindings/openssl/dh.py
+++ b/cryptography/hazmat/bindings/openssl/dh.py
@@ -17,10 +17,14 @@
 
 TYPES = """
 typedef struct dh_st {
-    BIGNUM *p;              // prime number (shared)
-    BIGNUM *g;              // generator of Z_p (shared)
-    BIGNUM *priv_key;       // private DH value x
-    BIGNUM *pub_key;        // public DH value g^x
+    // prime number (shared)
+    BIGNUM *p;
+    // generator of Z_p (shared)
+    BIGNUM *g;
+    // private DH value x
+    BIGNUM *priv_key;
+    // public DH value g^x
+    BIGNUM *pub_key;
     ...;
 } DH;
 """
diff --git a/cryptography/hazmat/bindings/openssl/dsa.py b/cryptography/hazmat/bindings/openssl/dsa.py
index 9068e05..609a33b 100644
--- a/cryptography/hazmat/bindings/openssl/dsa.py
+++ b/cryptography/hazmat/bindings/openssl/dsa.py
@@ -17,11 +17,16 @@
 
 TYPES = """
 typedef struct dsa_st {
-    BIGNUM *p;              // prime number (public)
-    BIGNUM *q;              // 160-bit subprime, q | p-1 (public)
-    BIGNUM *g;              // generator of subgroup (public)
-    BIGNUM *priv_key;       // private key x
-    BIGNUM *pub_key;        // public key y = g^x
+    // prime number (public)
+    BIGNUM *p;
+    // 160-bit subprime, q | p-1 (public)
+    BIGNUM *q;
+    // generator of subgroup (public)
+    BIGNUM *g;
+    // private key x
+    BIGNUM *priv_key;
+    // public key y = g^x
+    BIGNUM *pub_key;
     ...;
 } DSA;
 """
diff --git a/setup.py b/setup.py
index e8bcc11..57a9575 100644
--- a/setup.py
+++ b/setup.py
@@ -43,14 +43,23 @@
     """
 
     def finalize_options(self):
-        from cryptography.hazmat.bindings.openssl.binding import Binding
+        from cryptography.hazmat.bindings.commoncrypto.binding import (
+            Binding as CommonCryptoBinding
+        )
+        from cryptography.hazmat.bindings.openssl.binding import (
+            Binding as OpenSSLBinding
+        )
         from cryptography.hazmat.primitives import constant_time, padding
 
         self.distribution.ext_modules = [
-            Binding().ffi.verifier.get_extension(),
+            OpenSSLBinding().ffi.verifier.get_extension(),
             constant_time._ffi.verifier.get_extension(),
             padding._ffi.verifier.get_extension()
         ]
+        if CommonCryptoBinding.is_available():
+            self.distribution.ext_modules.append(
+                CommonCryptoBinding().ffi.verifier.get_extension()
+            )
 
         build.finalize_options(self)