X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=labo2-fsharp%2FCryptoFile%2FUnitTests.fs;h=51912d35306be0821126540543cb8527083be7c0;hb=c0d86015957eda6badbe9c6e5256807f9ab0c02f;hp=fb46eb7c1feeaa41b2ca3eec95428d5679b402e2;hpb=61a8b3492e89e883b23c158eb52ba2b070234df8;p=crypto_lab2.git diff --git a/labo2-fsharp/CryptoFile/UnitTests.fs b/labo2-fsharp/CryptoFile/UnitTests.fs index fb46eb7..51912d3 100644 --- a/labo2-fsharp/CryptoFile/UnitTests.fs +++ b/labo2-fsharp/CryptoFile/UnitTests.fs @@ -7,25 +7,19 @@ module UnitTests = open Crypto let testRSA () = - let kpub, kpriv = generateRSAKeysPair - - let plaintext = "Hello, World!" - printfn "plaintext: %A" plaintext - + let kpub, kpriv = generateRSAKeysPair () + let plaintext = "Are you from the past?" let cipherdata = encryptRSA kpub (Encoding.UTF8.GetBytes plaintext) - printfn "cipherdata: (size: %A) %A" cipherdata.Length cipherdata - let decryptedData = decryptRSA kpriv cipherdata let decryptedText = Encoding.UTF8.GetString decryptedData - printfn "decryptedtext: %A" decryptedText assert (plaintext = decryptedText) printfn "testRSA OK" let testRSASignature () = - let kpub, kpriv = generateRSAKeysPair - let plaintext = "Hello, World!" - let sha256 = new SHA256Managed () + let kpub, kpriv = generateRSAKeysPair () + let plaintext = "Lightspeed is too slow. We'll have to go right to ludicrous speed!" + use sha256 = new SHA256Managed () let signature = signRSA kpriv (sha256.ComputeHash (Encoding.UTF8.GetBytes plaintext)) assert verifySignRSA kpub (sha256.ComputeHash (Encoding.UTF8.GetBytes plaintext)) signature assert not (verifySignRSA kpub (sha256.ComputeHash (Encoding.UTF8.GetBytes "Hello!")) signature) @@ -33,17 +27,24 @@ module UnitTests = let testAES () = let plaintext = "There is no place like 127.0.0.1" - let output = new MemoryStream () - let sr = new StreamReader (output) - let key = Crypto.rand 32 + use memory = new MemoryStream () + let key = Crypto.rand 16 let iv = Crypto.rand 16 - let input = encryptAES key iv output - let sw = new StreamWriter (input) - + let input = encryptAES key iv memory + use sw = new StreamWriter (input) sw.Write plaintext + sw.Flush () + input.FlushFinalBlock () + + memory.Position <- 0L + let output = decryptAES key iv memory + use sr = new StreamReader (output) + assert (sr.ReadToEnd () = plaintext) + printfn "testAES OK" let runAllUnitTests () = testRSA () - testRSASignature () \ No newline at end of file + testRSASignature () + testAES () \ No newline at end of file