X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=ImplantFile.hs;h=ae749b9886c5a7422cd25bceb2137a83debb796f;hb=c9f347bd3eb6994870e2c6854c1cb991a60a42f1;hp=8ba976d681f95d6c31fe9dbe17aa4c86d23826fe;hpb=caa8be5a8542b350c50ce9ad327332acd55286a5;p=Lucu.git diff --git a/ImplantFile.hs b/ImplantFile.hs index 8ba976d..ae749b9 100644 --- a/ImplantFile.hs +++ b/ImplantFile.hs @@ -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 @@ -105,7 +106,8 @@ generateHaskellSource opts srcFile output <- openOutput opts eTag <- getETag opts input - let gzippedData = compressWith BestCompression input + let compParams = defaultCompressParams { compressLevel = BestCompression } + gzippedData = compressWith compParams input originalLen = L.length input gzippedLen = L.length gzippedData useGZip = originalLen > gzippedLen @@ -409,16 +411,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