C# 如何将ECDSA公钥与之配对';s私钥
我已经使用certreq创建了一个ECDSA CSR,现在我想将证书导入我的本地存储,并将其与私钥配对。我可以导入RSA公钥并将它们配对,没有问题,也可以导入ECDSA证书,但它们缺少私钥 我已经研究了我能看到的每个类上的各种方法和属性-它们似乎都没有一个简单的方法来“设置”ECDsa的私钥-一个很有希望的方法是“ECDsaCertificateExtensions.CopyWithPrivateKey”方法-但这显示为没有定义,我不想强迫人们使用它来下载其他版本的.net等等(我使用的是Windows10) 一旦我在系统中找到CSR,就可以很好地设置RSA私钥。当它是ECDsa密钥时,尝试抛出一个错误“仅支持实现ICSPASymmetric算法的非对称密钥” 尝试将此密钥放入RSACryptoProvider blob是不好的,因为它不是基于RSA的(我假设)-GetECDsaPrivateKey方法只获取该密钥-是否存在与SetECDsaPrivateKey等效的方法C# 如何将ECDSA公钥与之配对';s私钥,c#,x509certificate2,C#,X509certificate2,我已经使用certreq创建了一个ECDSA CSR,现在我想将证书导入我的本地存储,并将其与私钥配对。我可以导入RSA公钥并将它们配对,没有问题,也可以导入ECDSA证书,但它们缺少私钥 我已经研究了我能看到的每个类上的各种方法和属性-它们似乎都没有一个简单的方法来“设置”ECDsa的私钥-一个很有希望的方法是“ECDsaCertificateExtensions.CopyWithPrivateKey”方法-但这显示为没有定义,我不想强迫人们使用它来下载其他版本的.net等等(我使用的是Win
(我也愿意使用其他方式获得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;