Ejemplo n.º 1
0
        static public bool CheckMAC(ArraySegment <byte> blob, ArraySegment <byte> mac, byte[] macKey)
        {
            byte[] computedMAC;

            using (HMACSHA256 hmac = new HMACSHA256(macKey))
                computedMAC = hmac.ComputeHash(blob.Array, blob.Offset, blob.Count);

            return(ArraySegmentExt.Equals(computedMAC, mac));
        }
Ejemplo n.º 2
0
        static public byte[] Decrypt(ArraySegment <byte> encryptedBlob, ArraySegment <byte> iv, byte[] encryptionKey)
        {
            using (Rijndael rijndael = Rijndael.Create())
            {
                rijndael.Key     = encryptionKey;
                rijndael.IV      = ArraySegmentExt.GetByteArray(iv);
                rijndael.Mode    = CipherMode.CBC;
                rijndael.Padding = PaddingMode.None;

                using (ICryptoTransform decryptor = rijndael.CreateDecryptor())
                    using (MemoryStream ms = new MemoryStream())
                        using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
                        {
                            cs.Write(encryptedBlob.Array, encryptedBlob.Offset, encryptedBlob.Count);
                            return(ms.ToArray());
                        }
            }
        }