diff --git a/Network/TLS.hs b/Network/TLS.hs
--- a/Network/TLS.hs
+++ b/Network/TLS.hs
@@ -62,6 +62,7 @@
     , Credentials(..)
     , Credential
     , credentialLoadX509
+    , credentialLoadX509FromMemory
 
     -- * Initialisation and Termination of context
     , bye
diff --git a/Network/TLS/Credentials.hs b/Network/TLS/Credentials.hs
--- a/Network/TLS/Credentials.hs
+++ b/Network/TLS/Credentials.hs
@@ -9,6 +9,7 @@
     ( Credential
     , Credentials(..)
     , credentialLoadX509
+    , credentialLoadX509FromMemory
     , credentialsFindForSigning
     , credentialsFindForDecrypting
     , credentialsListSigningAlgorithms
@@ -20,6 +21,7 @@
 import Network.TLS.Struct
 import Network.TLS.X509
 import Data.X509.File
+import Data.X509.Memory
 import Data.X509
 
 type Credential = (CertificateChain, PrivKey)
@@ -31,7 +33,8 @@
     mappend (Credentials l1) (Credentials l2) = Credentials (l1 ++ l2)
 
 -- | try to create a new credential object from a public certificate
--- and the associated private key.
+-- and the associated private key that are stored on the filesystem
+-- in PEM format.
 credentialLoadX509 :: FilePath -- ^ public certificate (X.509 format)
                    -> FilePath -- ^ private key associated
                    -> IO (Either String Credential)
@@ -41,6 +44,19 @@
     case keys of
         []    -> return $ Left "no keys found"
         (k:_) -> return $ Right (CertificateChain x509, k)
+
+-- | similar to 'credentialLoadX509' but take the certificate
+-- and private key from memory instead of from the filesystem.
+credentialLoadX509FromMemory :: Bytes
+                  -> Bytes
+                  -> Either String Credential
+credentialLoadX509FromMemory certData privateData = do
+    let x509 = readSignedObjectFromMemory certData
+        keys = readKeyFileFromMemory privateData
+     in case keys of
+            []    -> Left "no keys found"
+            (k:_) -> Right (CertificateChain x509, k)
+  where
 
 credentialsListSigningAlgorithms :: Credentials -> [SignatureAlgorithm]
 credentialsListSigningAlgorithms (Credentials l) = catMaybes $ map credentialCanSign l
diff --git a/tls.cabal b/tls.cabal
--- a/tls.cabal
+++ b/tls.cabal
@@ -1,5 +1,5 @@
 Name:                tls
-Version:             1.2.1
+Version:             1.2.2
 Description:
    Native Haskell TLS and SSL protocol implementation for server and client.
    .
@@ -49,7 +49,7 @@
                    , asn1-types >= 0.2.0
                    , asn1-encoding
                    , x509 >= 1.4.3 && < 1.5.0
-                   , x509-store
+                   , x509-store >= 1.4.4
                    , x509-validation >= 1.5.0 && < 1.6.0
   Exposed-modules:   Network.TLS
                      Network.TLS.Cipher
