-module Labo2.Main
+module CryptoFileTests.Main
open System
+open System.IO;
open CryptoFile
let printUsage () =
\tencrypt: Encrypt a file <in> to <out>\n\
\tdecrypt: Decrypt a file <in> to <out>" System.AppDomain.CurrentDomain.FriendlyName
+// Module to store and retreive the keys to and from a file.
+// The private keys are stored in plain file! Do not let anyone access these files!
+module internal Keys =
+ // Try to read the public key and private key from files. If one of a file doesn't exist
+ // a new key pair is created, stored the returned.
+ let getKey (filenamePub: string) (filenamePriv: string) : Key * Key =
+ try
+ use srPub = new StreamReader (filenamePub)
+ use srPriv = new StreamReader (filenamePriv)
+ srPub.ReadToEnd (), srPriv.ReadToEnd ()
+ with
+ | _ ->
+ use swPub = new StreamWriter (filenamePub)
+ use swPriv = new StreamWriter (filenamePriv)
+ let keySigPub, keySigPriv = API.generatKeysPair
+ swPub.Write keySigPub
+ swPriv.Write keySigPriv
+ keySigPub, keySigPriv
+
+ let getSig : Key * Key = getKey "keys-sign.pub" "keys-sign.priv"
+ let getCrypt : Key * Key = getKey "keys-crypt.pub" "keys-crypt.priv"
+
[<EntryPoint>]
let main args =
printfn "Labo n°2"
- let keySigPub, keySigPriv = API.generatKeysPair
- let keyCryptPub, keyCryptPriv = API.generatKeysPair
+ let keySigPub, keySigPriv = Keys.getSig
+ let keyCryptPub, keyCryptPriv = Keys.getCrypt
match args with
| [| "tests" |] -> Tests.runAllTests ()