X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=labo2-fsharp%2FCryptoFile%2FUnitTests.fs;fp=labo2-fsharp%2FCryptoFile%2FUnitTests.fs;h=fb46eb7c1feeaa41b2ca3eec95428d5679b402e2;hb=61a8b3492e89e883b23c158eb52ba2b070234df8;hp=0000000000000000000000000000000000000000;hpb=19a9446e4042d5e451f1ae0534ffba242d33879e;p=crypto_lab2.git diff --git a/labo2-fsharp/CryptoFile/UnitTests.fs b/labo2-fsharp/CryptoFile/UnitTests.fs new file mode 100644 index 0000000..fb46eb7 --- /dev/null +++ b/labo2-fsharp/CryptoFile/UnitTests.fs @@ -0,0 +1,49 @@ +namespace CryptoFile + +module UnitTests = + open System.IO + open System.Text + open System.Security.Cryptography + open Crypto + + let testRSA () = + let kpub, kpriv = generateRSAKeysPair + + let plaintext = "Hello, World!" + printfn "plaintext: %A" plaintext + + 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 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) + printfn "testRSASignature OK" + + 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 + let iv = Crypto.rand 16 + + let input = encryptAES key iv output + let sw = new StreamWriter (input) + + sw.Write plaintext + assert (sr.ReadToEnd () = plaintext) + + let runAllUnitTests () = + testRSA () + testRSASignature () \ No newline at end of file