如何测试 CNG 密钥是否可交换?
How can I test a CNG key for exchangeable?
我考了证:
X509Certificate2 x509 = store.Certificates.Find(X509FindType.FindBySubjectName, "CNGTestCert", false)[0];
现在我想获取 providertype 参数。但是我做不到x509.PrivateKey
。
结果我使用了 var key = x509.GetRSAPrivateKey();
。我怎样才能摆脱这个 key
ProviderType 来决定 KeyNumber(看起来像这里:referencesource.microsoft.com)。或者有没有更简单的方法来测试私钥的密钥功能(密钥是为签名或交换而创建的)?
我找到了一种检查 CNG 证书是否可交换的方法。如果我通过 var privateKey = (cngCert.GetRSAPrivateKey() as RSACng).Key;
读取证书的私钥,我是否得到了 KeyUsage. “KeyAgreement”标志标记用于秘密协议生成和密钥交换的证书。
var privateKey = (cngCert.GetRSAPrivateKey() as RSACng).Key;
if(privateKey.KeyUsage.HasFlag(CngKeyUsages.KeyAgreement))
{
//is for KeyExchange
}
我考了证:
X509Certificate2 x509 = store.Certificates.Find(X509FindType.FindBySubjectName, "CNGTestCert", false)[0];
现在我想获取 providertype 参数。但是我做不到x509.PrivateKey
。
结果我使用了 var key = x509.GetRSAPrivateKey();
。我怎样才能摆脱这个 key
ProviderType 来决定 KeyNumber(看起来像这里:referencesource.microsoft.com)。或者有没有更简单的方法来测试私钥的密钥功能(密钥是为签名或交换而创建的)?
我找到了一种检查 CNG 证书是否可交换的方法。如果我通过 var privateKey = (cngCert.GetRSAPrivateKey() as RSACng).Key;
读取证书的私钥,我是否得到了 KeyUsage. “KeyAgreement”标志标记用于秘密协议生成和密钥交换的证书。
var privateKey = (cngCert.GetRSAPrivateKey() as RSACng).Key;
if(privateKey.KeyUsage.HasFlag(CngKeyUsages.KeyAgreement))
{
//is for KeyExchange
}