我们收到了一组智能卡测试证书,用于开发需要使用 PKI 对 XML 消息进行签名的解决方案。每个(物理)智能卡似乎都存储了两个证书。我使用智能卡提供商提供的软件将它们导入 Windows 证书存储区,然后使用类似于以下的代码来迭代已安装的证书:
foreach (X509Certificate2 x509 in CertStore.Certificates) {
foreach (X509Extension extension in x509.Extensions) {
if (extension.Oid.Value == "one we are interested in") {
X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
// process certs here
我们被告知要使用设置了 NonRepudiation 密钥使用标志的证书来签署 XML。但是,具有 NonRepudiation 标志的证书仅具有此标志,而不是例如我在上面检查的 DigitalSignature 标志。除了我之外,这会让任何人感到有点奇怪吗?换句话说,我被告知使用没有(似乎)设置了 DigitalSignature 使用标志的证书进行签名。这是正常程序吗?任何意见?
谢谢。