2010-10-07 77 views
0

我正在重写一个应用程序,以便我们可以停止使用Microsoft.Web.Services2.dll中的旧Microsoft.Web.Services2.Security.X509并开始使用System.Security.Cryptography.X509Certificates。x509和数字签名

有一个方法,我想不通,虽然:

bool Microsoft.Web.Services2.Security.X509.X509Certificate.SupportsDigitalSignature()

我找不到它在

System.Security.Cryptography.X509Certificates.X509Certificate2等同。

我是否甚至需要测试证书是否支持数字签名?我看不出它不能...

回答

2

首先必须拥有一个私有密钥用于签名。使用X509Certificate2.HasPrivateKey属性来检查这一点。

使用X509Certificate2.Extensions属性可以访问Key Usage extension。关键用途之一是数字签名。这是你正在寻找的。

+0

谢谢!我应该自己考虑一下私钥,但是...... – Polymorphix 2010-10-07 16:55:02

+0

再次想到,我在服务器端只有客户端证书的公钥部分,所以我只能检查KeyUsage扩展。 – Polymorphix 2010-10-11 11:26:15

0

我相信你将要使用的所有证书this
Microsoft.Web.Services3.Security.Tokens

+0

感谢您的回答,但我不认为Web服务增强功能是我需要的。它在MSDN上被描述为“WSE是将高级Web服务协议应用于SOAP消息的引擎”。(http://msdn.microsoft.com/zh-cn/library/aa529139.aspx)这不是我要的使用证书。 (我相信使用Microsoft.Web.Services2是必要的,因为早期的.Net版本缺少证书支持。) – Polymorphix 2010-10-07 17:00:35