2016-11-17 64 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編碼它)。

我沒有看足夠的規格來知道你是否應該跳過第一個元素(你的證書)和/或最後一個(根證書)。但是這應該足以開始。