packages feed

credential-store 0.1.0.0 → 0.1.1

raw patch · 3 files changed

+32/−9 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ System.CredentialStore: data CredentialStore
+ System.CredentialStore: deleteCredential :: CredentialStore -> String -> IO ()
+ System.CredentialStore: getCredential :: ByteArray ba => CredentialStore -> String -> IO (Maybe ba)
+ System.CredentialStore: putCredential :: ByteArray ba => CredentialStore -> String -> ba -> IO ()
+ System.CredentialStore: withCredentialStore :: (CredentialStore -> IO a) -> IO a

Files

credential-store.cabal view
@@ -1,5 +1,5 @@ name:                credential-store-version:             0.1.0.0+version:             0.1.1 synopsis:            Library to access secure credential storage providers description:   Cross-platform library for storing secrets.
src/System/CredentialStore.hs view
@@ -1,10 +1,33 @@ {-# Language CPP #-}+{-|+Cross-platform library to access system-specific credential store.++Uses Windows CredRead/CredWrite/CredDelete API on Windows,+DBus Secret Store API with gnome-keyring or kwallet as backends on Unix.+MacOS is not supported yet.++Example usage:++@+withCredentialStore $ \store -> do+    putCredential store credentialName credentialValue+    v <- getCredential store credentialName+    deleteCredential store credentialName+@+-} module System.CredentialStore-    ( module X+    (+    -- * Types+      CredentialStore+    -- * Functions+    , getCredential+    , putCredential+    , deleteCredential+    , withCredentialStore     ) where  #ifdef WINBUILD-import System.CredentialStore.Windows as X+import System.CredentialStore.Windows #else-import System.CredentialStore.DBusSecretService as X+import System.CredentialStore.DBusSecretService #endif
src/System/CredentialStore/DBusSecretService.hs view
@@ -24,7 +24,7 @@ import qualified Data.ByteString as BS import qualified Data.Map.Strict as M --- |Abstract context for credential store communications+-- |Abstract context for credential store communications. data CredentialStore = CredentialStore     { csClient :: Client     , csSession :: ObjectPath@@ -86,7 +86,7 @@     }  -- |Open credential store and execute function passing it as parameter.--- Store is closed even in presence of exceptions+-- Store is closed even in presence of exceptions. withCredentialStore :: (CredentialStore -> IO a) -> IO a withCredentialStore = bracket openStore closeStore     where@@ -119,7 +119,7 @@      closeStore = disconnect . csClient --- |Read named credential from store+-- |Read named credential from store. Returns 'Nothing' if credential was not found. getCredential :: ByteArray ba => CredentialStore -> String -> IO (Maybe ba) getCredential store@CredentialStore{..} name = do     items <- findCredentials store name@@ -144,7 +144,7 @@     credData (_, _, v, _) = v     credParam (_, p, _, _) = p --- |Write named credential to store, overwriting existing one+-- |Write named credential to store, overwriting existing one. putCredential :: ByteArray ba => CredentialStore -> String -> ba -> IO () putCredential CredentialStore{..} name value = do     (cred, iv) <- encryptCredential csCipher value@@ -169,7 +169,7 @@         [ path, _ ] | Just p <- fromVariant path -> when (p == noObject) $ throw (clientError "prompt required")         body -> throw $ clientError $ "invalid CreateItem response" ++ show body --- |Delete named credential from store+-- |Delete named credential from store. deleteCredential :: CredentialStore -> String -> IO () deleteCredential store@CredentialStore{..} name = do     items <- findCredentials store name