]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - ImplantFile.hs
Use HsOpenSSL instead of Crypto
[Lucu.git] / ImplantFile.hs
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