summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-09-04 23:16:33 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-09-04 23:16:33 -0400
commitebe2ebbcaf82ef3377fae220581c00785a5940fe (patch)
tree8254dd3ea112155be459311e7e9e0bb3f123c8d6
parent12b7ec4527383dffcc08524571c014e58315fdc3 (diff)
keep Utility.Gpg free of dependencies on git-annex
-rw-r--r--Crypto.hs26
-rw-r--r--Utility/Gpg.hs24
2 files changed, 25 insertions, 25 deletions
diff --git a/Crypto.hs b/Crypto.hs
index 33eb38b5b..0ea12c6c1 100644
--- a/Crypto.hs
+++ b/Crypto.hs
@@ -8,6 +8,8 @@
- Licensed under the GNU GPL version 3 or higher.
-}
+{-# LANGUAGE FlexibleInstances #-}
+
module Crypto (
Cipher,
KeyIds(..),
@@ -22,8 +24,8 @@ module Crypto (
feedBytes,
readBytes,
encrypt,
- decrypt,
- Gpg.getGpgEncParams,
+ decrypt,
+ getGpgEncParams,
prop_HmacSha1WithCipher_sane
) where
@@ -31,11 +33,13 @@ module Crypto (
import qualified Data.ByteString.Lazy as L
import Data.ByteString.Lazy.UTF8 (fromString)
import Control.Applicative
+import qualified Data.Map as M
import Common.Annex
import qualified Utility.Gpg as Gpg
import Types.Key
import Types.Crypto
+import Types.Remote
{- The beginning of a Cipher is used for MAC'ing; the remainder is used
- as the GPG symmetric encryption passphrase when using the hybrid
@@ -175,3 +179,21 @@ prop_HmacSha1WithCipher_sane :: Bool
prop_HmacSha1WithCipher_sane = known_good == macWithCipher' HmacSha1 "foo" "bar"
where
known_good = "46b4ec586117154dacd49d664e5d63fdc88efb51"
+
+{- Return some options suitable for GnuPG encryption, symmetric or not. -}
+class LensGpgEncParams a where getGpgEncParams :: a -> [CommandParam]
+
+{- Extract the GnuPG options from a pair of a Remote Config and a Remote
+ - Git Config. If the remote is configured to use public-key encryption,
+ - look up the recipient keys and add them to the option list. -}
+instance LensGpgEncParams (RemoteConfig, RemoteGitConfig) where
+ getGpgEncParams (c,gc) = map Param (remoteAnnexGnupgOptions gc) ++ recipients
+ where
+ recipients = case M.lookup "encryption" c of
+ Just "pubkey" -> Gpg.pkEncTo $ maybe [] (split ",") $
+ M.lookup "cipherkeys" c
+ _ -> []
+
+{- Extract the GnuPG options from a Remote. -}
+instance LensGpgEncParams (RemoteA a) where
+ getGpgEncParams r = getGpgEncParams (config r, gitconfig r)
diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs
index 5056e1ce2..e27de7218 100644
--- a/Utility/Gpg.hs
+++ b/Utility/Gpg.hs
@@ -5,7 +5,7 @@
- Licensed under the GNU GPL version 3 or higher.
-}
-{-# LANGUAGE CPP, FlexibleInstances #-}
+{-# LANGUAGE CPP #-}
module Utility.Gpg where
@@ -24,10 +24,6 @@ import Utility.Env
import Utility.Tmp
#endif
-import qualified Data.Map as M
-import Types.GitConfig
-import Types.Remote hiding (setup)
-
newtype KeyIds = KeyIds { keyIds :: [String] }
deriving (Ord, Eq)
@@ -36,28 +32,10 @@ newtype KeyIds = KeyIds { keyIds :: [String] }
gpgcmd :: FilePath
gpgcmd = fromMaybe "gpg" SysConfig.gpg
-{- Return some options suitable for GnuPG encryption, symmetric or not. -}
-class LensGpgEncParams a where getGpgEncParams :: a -> [CommandParam]
-
-{- Extract the GnuPG options from a pair of a Remote Config and a Remote
- - Git Config. If the remote is configured to use public-key encryption,
- - look up the recipient keys and add them to the option list. -}
-instance LensGpgEncParams (RemoteConfig, RemoteGitConfig) where
- getGpgEncParams (c,gc) = map Param (remoteAnnexGnupgOptions gc) ++ recipients
- where
- recipients = case M.lookup "encryption" c of
- Just "pubkey" -> pkEncTo $ maybe [] (split ",") $
- M.lookup "cipherkeys" c
- _ -> []
-
-- Generate an argument list to asymetrically encrypt to the given recipients.
pkEncTo :: [String] -> [CommandParam]
pkEncTo = concatMap (\r -> [Param "--recipient", Param r])
-{- Extract the GnuPG options from a Remote. -}
-instance LensGpgEncParams (RemoteA a) where
- getGpgEncParams r = getGpgEncParams (config r, gitconfig r)
-
stdParams :: [CommandParam] -> IO [String]
stdParams params = do
#ifndef mingw32_HOST_OS