Example #1
0
        private static Stream CreateHmacDataStream(Gost_28147_89_SymmetricAlgorithmBase sharedKey, Stream dataStream)
        {
            // Создание объекта для вычисления HMAC
            using (var hmac = new Gost_R3411_94_HMAC(sharedKey))
            {
                // Вычисление HMAC для потока данных
                var hmacValue = hmac.ComputeHash(dataStream);

                // Запись HMAC в начало выходного потока данных
                var hmacDataStream = new MemoryStream();
                hmacDataStream.Write(hmacValue, 0, hmacValue.Length);

                // Копирование исходного потока данных в выходной поток
                dataStream.Position = 0;
                dataStream.CopyTo(hmacDataStream);

                hmacDataStream.Position = 0;

                return(hmacDataStream);
            }
        }