我正在使用RSACryptoServiceProvider
来签署JWT令牌,并且每个人都可以正常工作。现在,按照JWT和JWK规范,我需要向客户提供x5c
值,以验证签名JWT的签名。那么,如果我在C#中有一个有效的x5c
实例,我怎样才能生成RSACryptoServiceProvider
值?
我发现RSACryptoServiceProvider.ExportParameters
方法可以导出RSA的所有参数,但不知道如何基于此组成x5c
值。
答案 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编码)。
我没有仔细查看规范,知道你是否应该跳过第一个元素(你的证书)和/或最后一个元素(根证书)。但这应该足以开始了。