diff --git a/Network/TLS/Credentials.hs b/Network/TLS/Credentials.hs
--- a/Network/TLS/Credentials.hs
+++ b/Network/TLS/Credentials.hs
@@ -59,13 +59,13 @@
 credentialCanDecrypt :: Credential -> Maybe ()
 credentialCanDecrypt (chain, priv) =
     case extensionGet (certExtensions cert) of
-        Nothing    -> Nothing
+        Nothing    -> Just ()
         Just (ExtKeyUsage flags)
             | KeyUsage_keyEncipherment `elem` flags ->
                 case (pub, priv) of
                     (PubKeyRSA _, PrivKeyRSA _) -> Just ()
                     _                           -> Nothing
-            | otherwise                             -> Nothing
+            | otherwise                         -> Nothing
     where cert   = signedObject $ getSigned signed
           pub    = certPubKey cert
           signed = getCertificateChainLeaf chain
@@ -73,7 +73,7 @@
 credentialCanSign :: Credential -> Maybe SignatureAlgorithm
 credentialCanSign (chain, priv) =
     case extensionGet (certExtensions cert) of
-        Nothing    -> Nothing
+        Nothing    -> getSignatureAlg pub priv
         Just (ExtKeyUsage flags)
             | KeyUsage_digitalSignature `elem` flags -> getSignatureAlg pub priv
             | otherwise                              -> Nothing
diff --git a/tls.cabal b/tls.cabal
--- a/tls.cabal
+++ b/tls.cabal
@@ -1,5 +1,5 @@
 Name:                tls
-Version:             1.2.0
+Version:             1.2.1
 Description:
    Native Haskell TLS and SSL protocol implementation for server and client.
    .
