Put the API in an seperate library assembly and create an assembly for testing.
[crypto_lab2.git] / labo2-fsharp / CryptoFileTests / Program.fs
1 module Labo2.Main
2
3 open System
4 open CryptoFile
5
6 let printUsage () =
7 printfn "%s [ tests | encrypt <in file> <out file> | decrypt <in file> <out dir> ]\n\
8 \ttests: Run some tests to valid the 'CryptoFile' assembly\n\
9 \tencrypt: Encrypt a file <in> to <out>\n\
10 \tdecrypt: Decrypt a file <in> to <out>" System.AppDomain.CurrentDomain.FriendlyName
11
12 [<EntryPoint>]
13 let main args =
14 printfn "Labo n°2"
15
16 let keySigPub, keySigPriv = API.generatKeysPair
17 let keyCryptPub, keyCryptPriv = API.generatKeysPair
18
19 match args with
20 | [| "tests" |] -> Tests.runAllTests ()
21 | [| "encrypt"; input; output |] -> API.encryptFile input output keySigPriv keyCryptPub
22 | [| "decrypt"; input; outputDir |] -> API.decryptFile input outputDir keySigPub keyCryptPriv
23 | _ -> printUsage ()
24 0