简短版本: CngKey.Import
抛出异常,即使new ECDsaCng()
没有。
(编辑:更缩小的问题:CngKey.Import(...); 在 PC 上成功,但在 Web 主机上失败。)
长版:
在某些情况下,存在权限限制,并且CngKey.Import
(用于将 加载CngKeyBlobFormat.EccPrivateBlob
到 中ECDsaCng
)会抛出CryptographicException
.
另一方面,以下确实有效:
ECDsaCng dsa = new ECDsaCng();
所以我认为问题在于尝试将密钥导入 KSP。
到目前为止,我还没有找到将 转换EccPrivateBlob
为ECDsaCng
的方法,不是通过CngKey.Create
方法,也不是通过CngKey.Open
方法或任何其他方式。
那么怎么做(没有KSP)?
错误本身:
System.Security.Cryptography.CryptographicException:发生内部错误。在 System.Security.Cryptography.NCryptNative.OpenStorageProvider(String providerName) 在 System.Security.Cryptography.CngKey.Import(Byte[] keyBlob, CngKeyBlobFormat 格式, CngProvider provider) 在 ...