验证证书对加密/解密有效

时间:2016-03-05 15:52:22

标签: c# certificate rsa x509 rsacryptoserviceprovider

thisthisthis之类的问题所述,如果您尝试使用仅对数字签名有效的证书进行加密/解密,那么您就是&#39 ; ll得到一个CryptographicException:" Bad Key"来自RSACryptoServiceProvider。

我的问题是如何预先验证(例如,当您在应用程序中配置证书时),证书是否有效用于此目的。我发现只使用v3扩展名的this这样的方法就足够了,因为RSACryptoServiceProvider可以使用仅具有DigitalSignatures的v3扩展名的证书进行解密。

所以我假设我需要使用类似于我here的代码检查特定的OID列表:

private static bool IsCertificateOkForDecryption(X509Certificate2 certificate)
{
    string[] validOids = 
    {
        //TODO: what goes here??
    };

    return (
            certificate.Extensions.Where(e=> validOids.Contains(e.Oid.Value)
            .Any()
        );
}

(代码不准确 - 只是为了说明)

有更简单的方法吗?

如果没有,我在哪里可以找到有效的OID列表?

有关背景信息,另请参阅引发此问题的Kentor.AuthServices SAML issue

0 个答案:

没有答案