diff options
Diffstat (limited to 'crypto/src/crmf/PKMacValueVerifier.cs')
-rw-r--r-- | crypto/src/crmf/PKMacValueVerifier.cs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/crypto/src/crmf/PKMacValueVerifier.cs b/crypto/src/crmf/PKMacValueVerifier.cs new file mode 100644 index 000000000..0f84e64e1 --- /dev/null +++ b/crypto/src/crmf/PKMacValueVerifier.cs @@ -0,0 +1,39 @@ +using System; + +using Org.BouncyCastle.Asn1.Cmp; +using Org.BouncyCastle.Asn1.Crmf; +using Org.BouncyCastle.Asn1.X509; +using Org.BouncyCastle.X509; + +namespace Org.BouncyCastle.Crmf +{ + internal class PKMacValueVerifier + { + private readonly PKMacBuilder m_builder; + + internal PKMacValueVerifier(PKMacBuilder builder) + { + m_builder = builder; + } + +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + internal virtual bool IsValid(PKMacValue value, ReadOnlySpan<char> password, SubjectPublicKeyInfo keyInfo) + { + m_builder.SetParameters(PbmParameter.GetInstance(value.AlgID.Parameters)); + + var macFactory = m_builder.Build(password); + + return X509Utilities.VerifyMac(macFactory, keyInfo, value.MacValue); + } +#else + internal virtual bool IsValid(PKMacValue value, char[] password, SubjectPublicKeyInfo keyInfo) + { + m_builder.SetParameters(PbmParameter.GetInstance(value.AlgID.Parameters)); + + var macFactory = m_builder.Build(password); + + return X509Utilities.VerifyMac(macFactory, keyInfo, value.MacValue); + } +#endif + } +} |