fb46eb7c1feeaa41b2ca3eec95428d5679b402e2
6 open System.Security.Cryptography
10 let kpub, kpriv
= generateRSAKeysPair
12 let plaintext = "Hello, World!"
13 printfn
"plaintext: %A" plaintext
15 let cipherdata = encryptRSA
kpub (Encoding.UTF8.GetBytes plaintext)
16 printfn
"cipherdata: (size: %A) %A" cipherdata.Length cipherdata
18 let decryptedData = decryptRSA kpriv
cipherdata
19 let decryptedText = Encoding.UTF8.GetString decryptedData
20 printfn
"decryptedtext: %A" decryptedText
22 assert (plaintext = decryptedText)
25 let testRSASignature () =
26 let kpub, kpriv
= generateRSAKeysPair
27 let plaintext = "Hello, World!"
28 let sha256 = new SHA256Managed ()
29 let signature = signRSA kpriv
(sha256.ComputeHash (Encoding.UTF8.GetBytes plaintext))
30 assert verifySignRSA kpub (sha256.ComputeHash (Encoding.UTF8.GetBytes plaintext)) signature
31 assert not (verifySignRSA kpub (sha256.ComputeHash (Encoding.UTF8.GetBytes "Hello!")) signature)
32 printfn
"testRSASignature OK"
35 let plaintext = "There is no place like 127.0.0.1"
36 let output = new MemoryStream ()
37 let sr = new StreamReader (output)
38 let key = Crypto.rand
32
39 let iv = Crypto.rand
16
41 let input = encryptAES
key iv output
42 let sw = new StreamWriter (input)
45 assert (sr.ReadToEnd () = plaintext)
47 let runAllUnitTests () =