【发布时间】:2017-03-20 23:45:14
【问题描述】:
目的:使用jose-jwt生成一个ES256签名的JWT
步骤:
1.使用openssl生成私钥和证书:
openssl ecparam -name prime256v1 -genkey > privateKey.pem
openssl req -new -key privateKey.pem -x509 -nodes -days 365 -out public.cer
2.令牌生成:
var payload = new Dictionary<string, object>()
{
{ "sub", "mr.x@contoso.com" },
{ "exp", 1300819380 }
};
var certificate = X509Certificate.CreateFromCertFile("public.cer");
byte[] publicKey = certificate.GetPublicKey(); //public key has 65 bytes
//Below step is throwing an error:
var cng = CngKey.Import(publicKey, CngKeyBlobFormat.EccPublicBlob);
var token = JWT.Encode(claims, cng, JwsAlgorithm.ES256);
CngKey.Import() 在尝试生成 所需的 CngKey 时抛出“参数不正确”错误Jose.JWT.Encode 函数。不知道我错过了什么步骤。谢谢。
【问题讨论】:
标签: c# jwt x509certificate ecdsa