.net-core - 如何使用 id-ecc 创建自签名证书以用于 ECDSA 签名和验证?

标签 .net-core cryptography public-key .net-4.6 self-signed-certificate

我正在尝试更新 this article's code允许我创建(和使用)基于 ECC 的自签名证书,以及 do basic signing and verification用它 ( ECDSA )。

  • 是否有任何方法可以使用跨平台 .NET Core API 来实现这一点,或者是否需要 Win32 P/Invoke?

根据 this post ,我需要使用更标准的id-ecc类型

最佳答案

Is there any way to accomplish this with cross platform .NET Core APIs

是的!

X509Certificate2 cert;

using (ECDsa key = ECDsa.Create(ECCurve.NamedCurves.nistP256))
{
    CertificateRequest request = new CertificateRequest(
        "CN=Self-Signed ECDSA",
        key,
        HashAlgorithmName.SHA256);

    request.CertificateExtensions.Add(
        new X509KeyUsageExtension(X509KeyUsageFlags.DigitalSignature, critical: false));

    request.CertificateExtensions.Add(
        new X509BasicConstraintsExtension(false, false, 0, false));

    // If it was for TLS, then Subject Alternative Names and
    // Extended (Enhanced) Key Usages would also be useful.

    DateTimeOffset start = DateTimeOffset.UtcNow;

    cert = request.CreateSelfSigned(notBefore: start, notAfter: start.AddMonths(3));
}

// If you want to save a PFX or something, you can do so now.

关于.net-core - 如何使用 id-ecc 创建自签名证书以用于 ECDSA 签名和验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53820166/

相关文章:

docker - 用于生产的Dockerfile “right approach”是什么?

c# - .net核心无法连接到Postgres(Docker Compose)

c# - 在不使用管理证书的情况下向 Microsoft.Azure.Management.Automation.AutomationManagementClient 进行身份验证

java - 将字节数组转换为公钥 ECDSA

php - PHP 中无法验证 openssl 签名

c++ - 使用 Crypto++ 库仅从 x 压缩坐标中检索 ECDSA 公钥

asp.net-core - 新的 .NET "project.json"项目,将预构建的 native .dll 复制到输出目录

java - 在 JAVA 中检查加密 key 的正确性

java - 从 ECPrivateKey 生成 ECPublicKey

java - 如何使用 eToken 在客户端加密数据