使用 jose-jwt 的 CngKey 格式的私钥 - EccKey.New(x, y, d, CngKeyUsages.KeyAgreement) 在生产中不起作用,但在本地很好

问题描述

我正在尝试从使用 https://mkjwk.org/ 生成的 pem 文件中读取 x、y 和 d 参数值,其中 P 256 曲线、加密、ECDH-ES+A128KW 以及 X509 设置为 true。 x,y,d 的值使用以下方法检索:

using (var reader = new StringReader(privateKeyString))

                {
                    var param = (ECPrivateKeyParameters)new PemReader(reader).Readobject();
                    x = param.Parameters.G.AffineXCoord.GetEncoded();
                    y = param.Parameters.G.AffineYCoord.GetEncoded();
                    d = param.D.ToByteArrayUnsigned();
                }

但是下面的语句在使用 Windows Server 2012 的远程服务器中执行时抛出异常,但在运行在 Windows 10 上的本地系统中运行良好:

var privateKey = EccKey.New(x,d,CngKeyUsages.KeyAgreement);

在远程中发现的异常如下:

不支持请求的操作 在 System.Security.Cryptography.NCryptNative.ImportKey(SafeNCryptProviderHandle provider,Byte[] keyBlob,String format) 在 System.Security.Cryptography.CngKey.Import(Byte[] keyBlob,String curveName,CngKeyBlobFormat 格式,CngProvider provider) 在 Jose.keys.EccKey.New(Byte[] x,Byte[] y,Byte[] d,CngKeyUsages 用法)...

我正在使用以下库来实现我的目的: https://github.com/dvsekhvalnov/jose-jwt

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...