Put the API in an seperate library assembly and create an assembly for testing.
[crypto_lab2.git] / labo2-fsharp / CryptoFileTests / Program.fs
diff --git a/labo2-fsharp/CryptoFileTests/Program.fs b/labo2-fsharp/CryptoFileTests/Program.fs
new file mode 100644 (file)
index 0000000..cc70f97
--- /dev/null
@@ -0,0 +1,24 @@
+module Labo2.Main
+
+open System
+open CryptoFile
+
+let printUsage () = 
+    printfn "%s [ tests | encrypt <in file> <out file> | decrypt <in file> <out dir> ]\n\
+             \ttests: Run some tests to valid the 'CryptoFile' assembly\n\
+             \tencrypt: Encrypt a file <in> to <out>\n\
+             \tdecrypt: Decrypt a file <in> to <out>" System.AppDomain.CurrentDomain.FriendlyName
+
+[<EntryPoint>]
+let main args = 
+    printfn "Labo n°2"
+
+    let keySigPub, keySigPriv = API.generatKeysPair
+    let keyCryptPub, keyCryptPriv = API.generatKeysPair
+
+    match args with
+    | [| "tests" |] -> Tests.runAllTests ()
+    | [| "encrypt"; input; output |] -> API.encryptFile input output keySigPriv keyCryptPub
+    | [| "decrypt"; input; outputDir |] -> API.decryptFile input outputDir keySigPub keyCryptPriv
+    | _ -> printUsage ()
+    0