mirror of
https://github.com/wismna/ModernKeePass.git
synced 2025-10-04 08:00:16 -04:00
Code cleanup in KeePassLib Code cleanup in ModernKeePass.Tests Argon2Kdf files can now be opened WIP - Argon2kdf files are corrupted on write
59 lines
1.6 KiB
C#
59 lines
1.6 KiB
C#
using System;
|
|
using Org.BouncyCastle.Crypto.Macs;
|
|
|
|
namespace ModernKeePassLib.Cryptography.Hash
|
|
{
|
|
public class HMAC : IDisposable
|
|
{
|
|
protected HMac Hmac;
|
|
|
|
public byte[] Hash
|
|
{
|
|
get
|
|
{
|
|
var result = new byte[Hmac.GetMacSize()];
|
|
Hmac.DoFinal(result, 0);
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public byte[] ComputeHash(byte[] value)
|
|
{
|
|
return ComputeHash(value, 0, value.Length);
|
|
}
|
|
|
|
public byte[] ComputeHash(byte[] value, int offset, int length)
|
|
{
|
|
if (value == null) throw new ArgumentNullException(nameof(value));
|
|
|
|
byte[] resBuf = new byte[Hmac.GetMacSize()];
|
|
Hmac.BlockUpdate(value, 0, length);
|
|
Hmac.DoFinal(resBuf, 0);
|
|
|
|
return resBuf;
|
|
}
|
|
|
|
public void TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
|
|
{
|
|
Hmac.BlockUpdate(inputBuffer, inputOffset, inputCount);
|
|
if ((outputBuffer != null) && ((inputBuffer != outputBuffer) || (inputOffset != outputOffset)))
|
|
Buffer.BlockCopy(inputBuffer, inputOffset, outputBuffer, outputOffset, inputCount);
|
|
}
|
|
|
|
public void TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
|
|
{
|
|
Hmac.BlockUpdate(inputBuffer, inputOffset, inputCount);
|
|
}
|
|
|
|
public void Initialize()
|
|
{
|
|
Hmac.Reset();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
Hmac.Reset();
|
|
}
|
|
}
|
|
}
|