Update the report and change RSA padding to PKCS#1 v2.
[crypto_lab2.git] / labo2-fsharp / CryptoFile / Crypto.fs
index 8ea0629..31d6475 100644 (file)
@@ -29,12 +29,12 @@ module internal Crypto =
     let encryptRSA (publicKey: Key) (plaindata: Data) : Data =
         use rsa = new RSACryptoServiceProvider (rsaKeySize)
         rsa.FromXmlString publicKey
-        rsa.Encrypt (plaindata, false) // Uses PKCS#1 v1.5 padding.
+        rsa.Encrypt (plaindata, true) // Uses padding OAEP (PKCS#1 v2).
 
     let decryptRSA (privateKey: Key) (cipherdata: Data) : Data =
         use rsa = new RSACryptoServiceProvider (rsaKeySize)
         rsa.FromXmlString privateKey
-        rsa.Decrypt (cipherdata, false) // Uses PKCS#1 v1.5 padding.
+        rsa.Decrypt (cipherdata, true) // Uses padding OAEP (PKCS#1 v2).
 
     /// Produces a signature from a given hash.
     let signRSA (privKey: Key) (sha256: Data) : Data = 
@@ -53,16 +53,14 @@ module internal Crypto =
         if key.Length <> aesKeySize / 8 then raise KeySizeError
         if iv.Length <> 16 then raise IVSizeError
         use aes = new AesCryptoServiceProvider (KeySize = aesKeySize) // Default mode is CBC.
-        let encryptor = aes.CreateEncryptor (key, iv)
-        new CryptoStream (outputStream, encryptor, CryptoStreamMode.Write)
+        new CryptoStream (outputStream, aes.CreateEncryptor (key, iv), CryptoStreamMode.Write)
 
     /// Returns a decrypted input stream.
     let decryptAES (key: byte[]) (iv: byte[]) (inputStream: Stream) : CryptoStream =
         if key.Length <> aesKeySize / 8 then raise KeySizeError
         if iv.Length <> 16 then raise IVSizeError
         use aes = new AesCryptoServiceProvider (KeySize = aesKeySize)
-        let decryptor = aes.CreateDecryptor (key, iv)
-        new CryptoStream (inputStream, decryptor, CryptoStreamMode.Read)
+        new CryptoStream (inputStream, aes.CreateDecryptor (key, iv), CryptoStreamMode.Read)
 
     // Create a stream to compute the HMAC-SHA256 against all data being written.
     let HMACStream (key: byte[]) (outputStream: Stream) : Stream * HMACSHA256 =