C# 使用BouncyCastle-ECDSA和SHA256,C进行数字签名验证#

C# 使用BouncyCastle-ECDSA和SHA256,C进行数字签名验证#,c#,bouncycastle,C#,Bouncycastle,下面是我的场景 -我从条形码读取数据,并将其转换为纯文本。此文本是条形码数据+数字签名的组合。数字签名被附加到末尾,这使我能够分离实际数据和数字签名数据。数字签名数据使用sha256散列 -用户将公钥作为windows证书文件发送给我(.cer扩展名) 所需执行: -需要从证书中提取公钥,并根据提供的条形码数据和数字签名验证公钥 这是我试图用来验证签名的代码 //Note : //1. certPath : is the path where my certificate is locate

下面是我的场景 -我从条形码读取数据,并将其转换为纯文本。此文本是条形码数据+数字签名的组合。数字签名被附加到末尾,这使我能够分离实际数据和数字签名数据。数字签名数据使用sha256散列 -用户将公钥作为windows证书文件发送给我(
.cer扩展名

所需执行: -需要从证书中提取公钥,并根据提供的条形码数据和数字签名验证公钥

这是我试图用来验证签名的代码

//Note : 
//1.  certPath : is the path where my certificate is located 
//2. GetStreamdata  get the stream of data from the certificate. 

//Get the certificate data here 
                Org.BouncyCastle.X509.X509Certificate cert1 = new X509CertificateParser().ReadCertificate(GetStreamData(cerPath)); 
//get the public key 
                ECPublicKeyParameters ecPublic = (ECPublicKeyParameters)cert1.GetPublicKey(); 
//create a signerutility with type SHA-256withECDSA 
                ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA"); 
//initial signer with the public key 
                signer.Init(false, ecPublic); 
//get signature in bytes : digitalsignature parameter contains signature that should be used. 
                byte[] dBytes = encoding.GetBytes(digitalsignature); 
//block/finalise update to signer : data : is the actual data. 
                signer.BlockUpdate(data, 0, data.Length); 
                    try 
                    { 
//verify signature 
                         verified =  signer.VerifySignature(dBytes); 
                    } 
                catch(Exception ex) 
                    { 
                        _log.LogException(ex); 
                    } 
我能做到的是:使用bouncy castle库提取公共信息

问题:

Exception thrown on signer.verifysignature
  Message=Unable to cast object of type 'Org.BouncyCastle.Asn1.DerApplicationSpecific' to type 'Org.BouncyCastle.Asn1.Asn1Sequence'. 
  Source=BouncyCastle.Crypto 

问题是我必须在iso-8859-1中对数字签名值进行编码。我以前是用ASCII编码的。 这解决了问题,我能够验证签名