]> gitweb @ CieloNegro.org - Lucu.git/commitdiff
Use HsOpenSSL instead of Crypto
authorpho <pho@cielonegro.org>
Sun, 17 Feb 2008 03:45:39 +0000 (12:45 +0900)
committerpho <pho@cielonegro.org>
Sun, 17 Feb 2008 03:45:39 +0000 (12:45 +0900)
darcs-hash:20080217034539-62b54-80e49d861b72fd519389d6fd328dc0cc3c802c92.gz

ImplantFile.hs
Lucu.cabal

index 8ba976d681f95d6c31fe9dbe17aa4c86d23826fe..2fbab0052a62b746b6c64d1e6572b9eb6e56e0f8 100644 (file)
@@ -5,17 +5,17 @@ import           Data.Bits
 import qualified Data.ByteString.Lazy as Lazy (ByteString)
 import qualified Data.ByteString.Lazy as L hiding (ByteString)
 import           Data.Char
-import           Data.Digest.SHA2
 import           Data.Int
 import           Data.Maybe
 import           Data.Time
 import           Data.Time.Clock.POSIX
-import           Data.Word
 import           Language.Haskell.Pretty
 import           Language.Haskell.Syntax
 import           Network.HTTP.Lucu.MIMEType
 import           Network.HTTP.Lucu.MIMEType.DefaultExtensionMap
 import           Network.HTTP.Lucu.MIMEType.Guess
+import           OpenSSL
+import           OpenSSL.EVP.Digest
 import           System.Console.GetOpt
 import           System.Environment
 import           System.Exit
@@ -75,7 +75,8 @@ printUsage = do putStrLn ""
 
 
 main :: IO ()
-main = do (opts, sources, errors) <- return . getOpt Permute options =<< getArgs
+main = withOpenSSL $
+       do (opts, sources, errors) <- return . getOpt Permute options =<< getArgs
 
           when (not $ null errors)
                    $ do mapM_ putStr errors
@@ -409,16 +410,16 @@ getETag opts input
                                       _         -> False) opts
       in
         case eTagOpts of
-          []               -> return mkETagFromInput
+          []               -> getDigestByName "SHA1" >>= return . mkETagFromInput . fromJust
           (OptETag str):[] -> return str
           _                -> error "too many --etag options."
     where
-      mkETagFromInput :: String
-      mkETagFromInput = "SHA-1:" ++ (toHex $ toOctets $ sha256 $ L.unpack input)
+      mkETagFromInput :: Digest -> String
+      mkETagFromInput sha1 = "SHA-1:" ++ (toHex $ digestLBS sha1 input)
 
-      toHex :: [Word8] -> String
+      toHex :: [Char] -> String
       toHex []     = ""
-      toHex (x:xs) = hexByte (fromIntegral x) ++ toHex xs
+      toHex (x:xs) = hexByte (fromEnum x) ++ toHex xs
 
       hexByte :: Int -> String
       hexByte n
index 0e307776b489327569b744815af1a60f9d01306e..2c56c9116c0d238bc2b30af351e21a193a891d29 100644 (file)
@@ -13,7 +13,7 @@ License: PublicDomain
 Author: PHO <phonohawk at ps dot sakura dot ne dot jp>
 Maintainer: PHO <phonohawk at ps dot sakura dot ne dot jp>
 Stability: experimental
-Homepage: http://ccm.sherry.jp/Lucu/
+Homepage: http://cielonegro.org/Lucu
 Category: Network
 Tested-With: GHC == 6.8.1
 Cabal-Version: >= 1.2
@@ -30,7 +30,7 @@ Flag build-lucu-implant-file
 
 Library
     Build-Depends:
-        Crypto, base, bytestring, containers, dataenc, directory,
+        HsOpenSSL, base, bytestring, containers, dataenc, directory,
         haskell-src, hxt, mtl, network, stm, time, unix, zlib
     Exposed-Modules:
         Network.HTTP.Lucu