X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=labo2-fsharp%2FCryptoFileTests%2FProgram.fs;h=a0cfba9cd5268d43f239e942456b446ce14bcce8;hb=0b7780e07ae1ab4d4c9caf70f66359398e6f0c35;hp=cc70f97c5ad4fdd41cbb35b6853c62c151ccbb6d;hpb=beda8d83dc421c479bdcf5ee626ec85ee8555a80;p=crypto_lab2.git diff --git a/labo2-fsharp/CryptoFileTests/Program.fs b/labo2-fsharp/CryptoFileTests/Program.fs index cc70f97..a0cfba9 100644 --- a/labo2-fsharp/CryptoFileTests/Program.fs +++ b/labo2-fsharp/CryptoFileTests/Program.fs @@ -1,6 +1,7 @@ -module Labo2.Main +module CryptoFileTests.Main open System +open System.IO; open CryptoFile let printUsage () = @@ -9,16 +10,37 @@ let printUsage () = \tencrypt: Encrypt a file to \n\ \tdecrypt: Decrypt a file to " 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 keyPub, keyPriv = API.generatKeysPair + swPub.Write keyPub + swPriv.Write keyPriv + keyPub, keyPriv + + let getSig : Key * Key = getKey "keys-sign.pub" "keys-sign.priv" + let getCrypt : Key * Key = getKey "keys-crypt.pub" "keys-crypt.priv" + [] 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 () + | [| "tests" |] -> Tests.doSomeTests () | [| "encrypt"; input; output |] -> API.encryptFile input output keySigPriv keyCryptPub | [| "decrypt"; input; outputDir |] -> API.decryptFile input outputDir keySigPub keyCryptPriv | _ -> printUsage () 0 + \ No newline at end of file