diff --git a/src/Certificate.hs b/src/Certificate.hs
--- a/src/Certificate.hs
+++ b/src/Certificate.hs
@@ -62,18 +62,19 @@
 showExts es@(Extensions (Just exts)) = do
     mapM_ showExt exts
     putStrLn "known extensions decoded: "
-    showKnownExtension (X509.extensionGet es :: Maybe X509.ExtBasicConstraints)
-    showKnownExtension (X509.extensionGet es :: Maybe X509.ExtKeyUsage)
-    showKnownExtension (X509.extensionGet es :: Maybe X509.ExtExtendedKeyUsage)
-    showKnownExtension (X509.extensionGet es :: Maybe X509.ExtSubjectKeyId)
-    showKnownExtension (X509.extensionGet es :: Maybe X509.ExtSubjectAltName)
-    showKnownExtension (X509.extensionGet es :: Maybe X509.ExtAuthorityKeyId)
+    showKnownExtension "basic-constraint" (X509.extensionGetE es :: Maybe (Either String X509.ExtBasicConstraints))
+    showKnownExtension "key-usage" (X509.extensionGetE es :: Maybe (Either String X509.ExtKeyUsage))
+    showKnownExtension "extended-key-usage" (X509.extensionGetE es :: Maybe (Either String X509.ExtExtendedKeyUsage))
+    showKnownExtension "subject-key-id" (X509.extensionGetE es :: Maybe (Either String X509.ExtSubjectKeyId))
+    showKnownExtension "subject-alt-name" (X509.extensionGetE es :: Maybe (Either String X509.ExtSubjectAltName))
+    showKnownExtension "authority-key-id" (X509.extensionGetE es :: Maybe (Either String X509.ExtAuthorityKeyId))
     where
         showExt (ExtensionRaw oid critical asn1) = do
             putStrLn ("  OID:  " ++ show oid ++ " critical: " ++ show critical)
-            putStrLn ("        " ++ show asn1)
-        showKnownExtension Nothing  = return ()
-        showKnownExtension (Just e) = putStrLn ("  " ++ show e)
+            showASN1 8 asn1
+        showKnownExtension _ Nothing  = return ()
+        showKnownExtension n (Just (Left e)) = putStrLn ("  " ++ n ++ ": ERROR: " ++ show e)
+        showKnownExtension _ (Just (Right e)) = putStrLn ("  " ++ show e)
 
 showCert :: SignedCertificate -> IO ()
 showCert signedCert = do
@@ -119,8 +120,8 @@
 showRSAKey (RSA.KeyPair privkey) = unlines
     [ "len-modulus:      " ++ (show $ RSA.public_size pubkey)
     , "modulus:          " ++ (show $ RSA.public_n pubkey)
-    , "public exponant:  " ++ (show $ RSA.public_e pubkey)
-    , "private exponant: " ++ (show $ RSA.private_d privkey)
+    , "public exponent:  " ++ (show $ RSA.public_e pubkey)
+    , "private exponent: " ++ (show $ RSA.private_d privkey)
     , "p1:               " ++ (show $ RSA.private_p privkey)
     , "p2:               " ++ (show $ RSA.private_q privkey)
     , "exp1:             " ++ (show $ RSA.private_dP privkey)
@@ -155,12 +156,12 @@
     p (OID is)               = putStr ("OID: " ++ show is)
     p (Real d)               = putStr "real"
     p (Enumerated _)         = putStr "enum"
-    p (Start Sequence)       = putStr "sequence"
-    p (End Sequence)         = putStr "end-sequence"
-    p (Start Set)            = putStr "set"
-    p (End Set)              = putStr "end-set"
-    p (Start _)              = putStr "container"
-    p (End _)                = putStr "end-container"
+    p (Start Sequence)       = putStr "{"
+    p (End Sequence)         = putStr "}"
+    p (Start Set)            = putStr "["
+    p (End Set)              = putStr "]"
+    p (Start (Container x y)) = putStr ("< " ++ show x ++ " " ++ show y)
+    p (End (Container x y))   = putStr ("> " ++ show x ++ " " ++ show y)
     p (ASN1String cs)        = putCS cs
     p (ASN1Time TimeUTC time tz)      = putStr ("utctime: " ++ show time)
     p (ASN1Time TimeGeneralized time tz) = putStr ("generalizedtime: " ++ show time)
@@ -169,9 +170,9 @@
     putCS (ASN1CharacterString UTF8 t)         = putStr ("utf8string:" ++ show t)
     putCS (ASN1CharacterString Numeric bs)     = putStr "numericstring:"
     putCS (ASN1CharacterString Printable t)    = putStr ("printablestring: " ++ show t)
-    putCS (ASN1CharacterString T61 bs)         = putStr "t61string:"
+    putCS (ASN1CharacterString T61 bs)         = putStr ("t61string:" ++ show bs)
     putCS (ASN1CharacterString VideoTex bs)    = putStr "videotexstring:"
-    putCS (ASN1CharacterString IA5 bs)         = putStr "ia5string:"
+    putCS (ASN1CharacterString IA5 bs)         = putStr ("ia5string:" ++ show bs)
     putCS (ASN1CharacterString Graphic bs)     = putStr "graphicstring:"
     putCS (ASN1CharacterString Visible bs)     = putStr "visiblestring:"
     putCS (ASN1CharacterString General bs)     = putStr "generalstring:"
diff --git a/x509-util.cabal b/x509-util.cabal
--- a/x509-util.cabal
+++ b/x509-util.cabal
@@ -1,5 +1,5 @@
 Name:                x509-util
-Version:             1.5.0
+Version:             1.5.1
 Description:         utility to parse, show, validate, sign and produce X509 certificates and chain.
 License:             BSD3
 License-file:        LICENSE
@@ -21,7 +21,7 @@
                    , bytestring
                    , text >= 0.11
                    , crypto-pubkey-types
-                   , x509 >= 1.4.7
+                   , x509 >= 1.4.13
                    , x509-store
                    , x509-system
                    , x509-validation >= 1.5.0
