2016-11-17 28 views
0

我正在使用RSACryptoServiceProvider签署JWT标记,并且每个工作都可以正常工作。现在遵循JWTJWK规范,我需要向客户端提供x5c值以验证签署的JWT的签名。那么,我如何生成x5c值,因为我在C#中有一个有效的RSACryptoServiceProvider实例?如何从RSACryptoServiceProvider获取x5c

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

回答

0

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

如果您使用的私钥检索,或以其他方式表示密钥的证书的X509Certificate2对象,你可以建立通过

X509Chain chain = new X509Chain() 
bool success = chain.Build(cert); 

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

然后每个chain.ChainElements价值链中,参加证书属性RawValue属性(和base64编码它)。

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