如何从RSACryptoServiceProvider获取x5c

时间:2016-11-17 12:52:10

标签: c# cryptography rsa jwt x509certificate

我正在使用RSACryptoServiceProvider来签署JWT令牌,并且每个人都可以正常工作。现在,按照JWTJWK规范,我需要向客户提供x5c值,以验证签名JWT的签名。那么,如果我在C#中有一个有效的x5c实例,我怎样才能生成RSACryptoServiceProvider值?

我发现RSACryptoServiceProvider.ExportParameters方法可以导出RSA的所有参数,但不知道如何基于此组成x5c值。

1 个答案:

答案 0 :(得分:0)

x5c是X.509链,要求您拥有证书(而不是原始RSA密钥)。

如果您有一个用于私钥检索的X509Certificate2对象,或者有一个代表该密钥的证书,您可以通过

构建链。
X509Chain chain = new X509Chain()
bool success = chain.Build(cert);

if (!success)
    throw new Exception("eep");

然后对于每个chain.ChainElements值,取Certificate Certificate属性RawValue属性(并对其进行base64编码)。

我没有仔细查看规范,知道你是否应该跳过第一个元素(你的证书)和/或最后一个元素(根证书)。但这应该足以开始了。