我有一个包含公钥的字节数组和一个包含 ASN.1 格式签名的字节数组。使用 ECDSA P-256。
以下代码加载公钥:
var publicKey = PublicKeyFactory.CreateKey(publicKeyDERBytes);
以下代码验证签名:
var signer = SignerUtilities.GetSigner("ECDSA");
signer.Init(false, publicKey);
signer.BlockUpdate(signatureASN1Bytes, 0, signatureASN1Bytes.Length);
Console.WriteLine(signer.VerifySignature(signature));
但它总是写假的。可能出了什么问题?
在.NET Core上使用BouncyCastle.NetCore 1.8.3。
事实证明我没有找到正确的签名者。
Instaead of :
var signer = SignerUtilities.GetSigner("ECDSA");
它应该是:
var signer = SignerUtilities.GetSigner("SHA256withECDSA");