X-Git-Url: http://git.euphorik.ch/?p=crypto_lab2.git;a=blobdiff_plain;f=labo2-fsharp%2FCryptoFileTests%2FProgram.fs;h=4b8307245ec55993038759904dcb84edbf82341b;hp=cc70f97c5ad4fdd41cbb35b6853c62c151ccbb6d;hb=137157b6dbd5efb99b486a30da6e10b0a175f530;hpb=beda8d83dc421c479bdcf5ee626ec85ee8555a80 diff --git a/labo2-fsharp/CryptoFileTests/Program.fs b/labo2-fsharp/CryptoFileTests/Program.fs index cc70f97..4b83072 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,12 +10,34 @@ 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 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" + [] 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 ()