-- | Base64 plugin: <http://nsis.sourceforge.net/Base64_plug-in>
module Development.NSIS.Plugins.Base64(encrypt, decrypt) where

import Development.NSIS


-- | Base64 data encryption.
encrypt :: Exp String -> Exp String
encrypt :: Exp String -> Exp String
encrypt Exp String
x = Exp String -> (Exp String -> Exp String) -> Exp String
forall t a. Exp t -> (Exp t -> Action a) -> Action a
share Exp String
x ((Exp String -> Exp String) -> Exp String)
-> (Exp String -> Exp String) -> Exp String
forall a b. (a -> b) -> a -> b
$ \Exp String
x -> do
    String -> String -> [Exp ()] -> Action ()
forall a. String -> String -> [Exp a] -> Action ()
plugin String
"Base64" String
"Encrypt" [Exp String -> Exp ()
forall a. Exp a -> Exp ()
exp_ Exp String
x, Exp Int -> Exp ()
forall a. Exp a -> Exp ()
exp_ (Exp Int -> Exp ()) -> Exp Int -> Exp ()
forall a b. (a -> b) -> a -> b
$ Exp String -> Exp Int
strLength Exp String
x]
    Exp String
pop


-- | Base64 decryption. Reverse of 'encrypt'.
decrypt :: Exp String -> Exp String
decrypt :: Exp String -> Exp String
decrypt Exp String
x = Exp String -> (Exp String -> Exp String) -> Exp String
forall t a. Exp t -> (Exp t -> Action a) -> Action a
share Exp String
x ((Exp String -> Exp String) -> Exp String)
-> (Exp String -> Exp String) -> Exp String
forall a b. (a -> b) -> a -> b
$ \Exp String
x -> do
    String -> String -> [Exp ()] -> Action ()
forall a. String -> String -> [Exp a] -> Action ()
plugin String
"Base64" String
"Decrypt" [Exp String -> Exp ()
forall a. Exp a -> Exp ()
exp_ Exp String
x, Exp Int -> Exp ()
forall a. Exp a -> Exp ()
exp_ (Exp Int -> Exp ()) -> Exp Int -> Exp ()
forall a b. (a -> b) -> a -> b
$ Exp String -> Exp Int
strLength Exp String
x]
    Exp String
pop