简短版本: 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) 在 ...