Report almost done.
[crypto_lab2.git] / labo2-fsharp / CryptoFile / Tests.fs
1 namespace CryptoFile
2
3 module Tests =
4 open System.Text
5 open System.Security.Cryptography
6 open Crypto
7
8 let testRSA () =
9 let kpub, kpriv = generateRSAKeysPair
10 let plaintext = "Hello, World!"
11 printfn "plaintext: %A" plaintext
12 let cipherdata = encryptRSA kpub (Encoding.UTF8.GetBytes plaintext)
13 printfn "cipherdata: (size: %A) %A" cipherdata.Length cipherdata
14 let decryptedData = decryptRSA kpriv cipherdata
15 let decryptedText = Encoding.UTF8.GetString decryptedData
16 printfn "decryptedtext: %A" decryptedText
17 assert (plaintext = decryptedText)
18 printfn "testRSA OK"
19
20 let testRSASignature () =
21 let kpub, kpriv = generateRSAKeysPair
22 let plaintext = "Hello, World!"
23 let sha256 = new SHA256Managed ()
24 let signature = signRSA kpriv (sha256.ComputeHash (Encoding.UTF8.GetBytes plaintext))
25 assert verifySignRSA kpub (sha256.ComputeHash (Encoding.UTF8.GetBytes plaintext)) signature
26 assert not (verifySignRSA kpub (sha256.ComputeHash (Encoding.UTF8.GetBytes "Hello!")) signature)
27 printfn "testRSASignature OK"
28
29 let runAllTests () =
30 testRSA ()
31 testRSASignature ()