如何使用BouncyCastle验证ASN.1格式的ECDSA签名和DER中的公钥?

时间:2019-01-29 01:18:50

标签: c# .net-core bouncycastle ecdsa

我有一个包含公用密钥的字节数组和一个包含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));

但是它总是写为false。怎么了?

在.NET Core上使用BouncyCastle.NetCore 1.8.3。

1 个答案:

答案 0 :(得分:0)

结果是我没有得到正确的签名者。

原因:

var signer = SignerUtilities.GetSigner("ECDSA");

应该是:

var signer = SignerUtilities.GetSigner("SHA256withECDSA");