init commit

This commit is contained in:
2025-10-09 09:57:24 +09:00
commit 4d551bd74f
6636 changed files with 1218703 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
using System;
using Org.BouncyCastle.Crypto.Digests;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Utilities;
namespace Org.BouncyCastle.Crypto.Macs;
public class SkeinMac : IMac
{
public const int SKEIN_256 = 256;
public const int SKEIN_512 = 512;
public const int SKEIN_1024 = 1024;
private readonly SkeinEngine engine;
public string AlgorithmName => "Skein-MAC-" + engine.BlockSize * 8 + "-" + engine.OutputSize * 8;
public SkeinMac(int stateSizeBits, int digestSizeBits)
{
engine = new SkeinEngine(stateSizeBits, digestSizeBits);
}
public SkeinMac(SkeinMac mac)
{
engine = new SkeinEngine(mac.engine);
}
public void Init(ICipherParameters parameters)
{
SkeinParameters skeinParameters;
if (parameters is SkeinParameters)
{
skeinParameters = (SkeinParameters)parameters;
}
else
{
if (!(parameters is KeyParameter))
{
throw new ArgumentException("Invalid parameter passed to Skein MAC init - " + Platform.GetTypeName(parameters));
}
skeinParameters = new SkeinParameters.Builder().SetKey(((KeyParameter)parameters).GetKey()).Build();
}
if (skeinParameters.GetKey() == null)
{
throw new ArgumentException("Skein MAC requires a key parameter.");
}
engine.Init(skeinParameters);
}
public int GetMacSize()
{
return engine.OutputSize;
}
public void Reset()
{
engine.Reset();
}
public void Update(byte inByte)
{
engine.Update(inByte);
}
public void BlockUpdate(byte[] input, int inOff, int len)
{
engine.Update(input, inOff, len);
}
public int DoFinal(byte[] output, int outOff)
{
return engine.DoFinal(output, outOff);
}
}