PKMacFactory
using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Operators;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
namespace Org.BouncyCastle.Crmf
{
internal sealed class PKMacFactory : IMacFactory
{
private readonly KeyParameter m_key;
private readonly PbmParameter m_parameters;
public object AlgorithmDetails => new AlgorithmIdentifier(CmpObjectIdentifiers.passwordBasedMac, m_parameters);
internal PKMacFactory(byte[] key, PbmParameter parameters)
{
m_key = new KeyParameter(key);
m_parameters = parameters;
}
public IStreamCalculator<IBlockResult> CreateCalculator()
{
IMac mac = MacUtilities.GetMac(m_parameters.Mac.Algorithm);
mac.Init(m_key);
return new DefaultMacCalculator(mac);
}
}
}