有谁知道用C#如何从x509证书(实际上在x509Store中而不是从文件中进行验证)获取数字签名值,并在例如文本框中显示它。我知道GetRawCertDataString()返回整个x509证书的原始数据,该证书的最后一行包括数字签名,但是我找不到仅返回数字签名的命令。

最佳答案

最好的方法是获取ASN.1解析器并提取数字签名,或进行一些p /调用操作。您将需要使用CryptDecodeObject函数并将X509_CERT作为lpszStructType参数传递。该函数(在pvStructInfo中)返回指向CERT_SIGNED_CONTENT_INFO结构的指针。此结构具有Signature字段,这是一个简单的BIT_BLOB结构,在cbDatapbData字段中具有字节数组(使用Marshal.Copy将字节从非托管内存复制到托管字节数组)。

09-05 22:33