Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将ECDSA公钥与之配对';s私钥_C#_X509certificate2 - Fatal编程技术网

C# 如何将ECDSA公钥与之配对';s私钥

C# 如何将ECDSA公钥与之配对';s私钥,c#,x509certificate2,C#,X509certificate2,我已经使用certreq创建了一个ECDSA CSR,现在我想将证书导入我的本地存储,并将其与私钥配对。我可以导入RSA公钥并将它们配对,没有问题,也可以导入ECDSA证书,但它们缺少私钥 我已经研究了我能看到的每个类上的各种方法和属性-它们似乎都没有一个简单的方法来“设置”ECDsa的私钥-一个很有希望的方法是“ECDsaCertificateExtensions.CopyWithPrivateKey”方法-但这显示为没有定义,我不想强迫人们使用它来下载其他版本的.net等等(我使用的是Win

我已经使用certreq创建了一个ECDSA CSR,现在我想将证书导入我的本地存储,并将其与私钥配对。我可以导入RSA公钥并将它们配对,没有问题,也可以导入ECDSA证书,但它们缺少私钥

我已经研究了我能看到的每个类上的各种方法和属性-它们似乎都没有一个简单的方法来“设置”ECDsa的私钥-一个很有希望的方法是“ECDsaCertificateExtensions.CopyWithPrivateKey”方法-但这显示为没有定义,我不想强迫人们使用它来下载其他版本的.net等等(我使用的是Windows10)

一旦我在系统中找到CSR,就可以很好地设置RSA私钥。当它是ECDsa密钥时,尝试抛出一个错误“仅支持实现ICSPASymmetric算法的非对称密钥”

尝试将此密钥放入RSACryptoProvider blob是不好的,因为它不是基于RSA的(我假设)-GetECDsaPrivateKey方法只获取该密钥-是否存在与SetECDsaPrivateKey等效的方法


(我也愿意使用其他方式获得certreq的功能-接受-这基本上是目标,导入证书,将其与私钥配对,删除csr)

CopyWithPrivateKey
是唯一的内置方式。它附带了.NET Framework 4.7.2,它内置于Windows 10 1803+中

保持低依赖性的主要替代方法是p/Invoke(and)通过CERT\u KEY\u PROV\u INFO\u PROP\u ID属性进行复制。这比使用CopyWithPrivateKey更不安全,因为它不会检查密钥是否匹配,或者目标证书没有被覆盖的属性。它也不适用于短暂的关键点

第二种选择是复制,和


我个人认为4.7.2是一个依赖项。

CopyWithPrivateKey
是唯一的内置方式。它附带了.NET Framework 4.7.2,它内置于Windows 10 1803+中

保持低依赖性的主要替代方法是p/Invoke(and)通过CERT\u KEY\u PROV\u INFO\u PROP\u ID属性进行复制。这比使用CopyWithPrivateKey更不安全,因为它不会检查密钥是否匹配,或者目标证书没有被覆盖的属性。它也不适用于短暂的关键点

第二种选择是复制,和


就我个人而言,我只是把4.7.2作为一个依赖项。

谢谢bartonjs-你是专门为这些库工作还是到处都是?我最近查阅了很多X509certificates,你的名字和github弹出了很多。@StevenHansen(crypto+float)感谢你的提示,大部分是在周末做的-P/Invoke或从.net core复制方法比我目前的水平略高,升级到4.7.2需要10秒的修复。谢谢bartonjs-你是专门处理这些库还是到处都是?我最近查阅了很多X509certificates,您的名字和github弹出了很多。@StevenHansen(crypto+float)感谢您提供的提示,大多数情况下都是在周末执行此操作-P/Invoke或从.net core复制方法比我当前的级别稍高,升级到4.7.2需要10秒的修复。
certificate.PrivateKey = foundCSR.PrivateKey;