5 open System.Security.Cryptography
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)
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"