X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=labo2-fsharp%2FCryptoFile%2FCrypto.fs;h=560cd1316378b366fe731f3acbf07a55d2dee2b2;hb=2fcf3ed38874e9aa6d2ccd6b9917bd3113d76aee;hp=21b168ec302c60f98ee154ee7497a9e68b9a4435;hpb=ac84e8535149dbf639a7766f110960c998b47159;p=crypto_lab2.git diff --git a/labo2-fsharp/CryptoFile/Crypto.fs b/labo2-fsharp/CryptoFile/Crypto.fs index 21b168e..560cd13 100644 --- a/labo2-fsharp/CryptoFile/Crypto.fs +++ b/labo2-fsharp/CryptoFile/Crypto.fs @@ -1,11 +1,11 @@ namespace CryptoFile +open System +open System.IO +open System.Security.Cryptography + // Some cryptography primitives specific to CryptoFile. module internal Crypto = - open System - open System.IO - open System.Security.Cryptography - type Data = byte[] let rsaKeySize = 2048 @@ -62,7 +62,7 @@ module internal Crypto = /// Returns an encrypted output stream. let encryptAES (key: byte[]) (iv: byte[]) (outputStream: Stream) : CryptoStream = assert (key.Length = 32 && iv.Length = 16) - use aes = new AesManaged () + use aes = new AesCryptoServiceProvider () // Default mode is CBC. aes.KeySize <- 256 let encryptor = aes.CreateEncryptor (key, iv) new CryptoStream (outputStream, encryptor, CryptoStreamMode.Write) @@ -70,7 +70,7 @@ module internal Crypto = /// Returns a decrypted input stream. let decryptAES (key: byte[]) (iv: byte[]) (inputStream: Stream) : CryptoStream = assert (key.Length = 32 && iv.Length = 16) - use aes = new AesManaged () + use aes = new AesCryptoServiceProvider () aes.KeySize <- 256 let decryptor = aes.CreateDecryptor (key, iv) new CryptoStream (inputStream, decryptor, CryptoStreamMode.Read) @@ -79,4 +79,9 @@ module internal Crypto = let HMACStream (key: byte[]) (outputStream: Stream) : Stream * HMACSHA256 = assert (key.Length = 32) let hmac = new HMACSHA256 (key) - new CryptoStream (outputStream, hmac, CryptoStreamMode.Write) :> Stream, hmac \ No newline at end of file + new CryptoStream (outputStream, hmac, CryptoStreamMode.Write) :> Stream, hmac + + let ComputeHMAC (key: byte[]) (inputStream: Stream) : byte[] = + assert (key.Length = 32) + let hmac = new HMACSHA256 (key) + hmac.ComputeHash inputStream \ No newline at end of file