public static void ThirdPartyProvider_ECDsa() { using (ECDsaOther ecdsaOther = new ECDsaOther()) { HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; CertificateRequest request = new CertificateRequest( new X500DistinguishedName($"CN={nameof(ThirdPartyProvider_ECDsa)}"), ecdsaOther, hashAlgorithm); byte[] signature; byte[] data = request.SubjectName.RawData; DateTimeOffset now = DateTimeOffset.UtcNow; using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddDays(1))) { using (ECDsa ecdsa = cert.GetECDsaPrivateKey()) { signature = ecdsa.SignData(data, hashAlgorithm); } // ECDsaOther is exportable, so ensure PFX export succeeds byte[] pfxBytes = cert.Export(X509ContentType.Pkcs12, request.SubjectName.Name); Assert.InRange(pfxBytes.Length, 100, int.MaxValue); } Assert.True(ecdsaOther.VerifyData(data, signature, hashAlgorithm)); } }
public static void ThirdPartyProvider_ECDsa() { using (ECDsaOther ecdsaOther = new ECDsaOther()) { HashAlgorithmName hashAlgorithm = HashAlgorithmName.SHA256; CertificateRequest request = new CertificateRequest( new X500DistinguishedName($"CN={nameof(ThirdPartyProvider_ECDsa)}"), ecdsaOther, hashAlgorithm); byte[] signature; byte[] data = request.SubjectName.RawData; DateTimeOffset now = DateTimeOffset.UtcNow; using (X509Certificate2 cert = request.CreateSelfSigned(now, now.AddDays(1))) using (ECDsa ecdsa = cert.GetECDsaPrivateKey()) { signature = ecdsa.SignData(data, hashAlgorithm); } Assert.True(ecdsaOther.VerifyData(data, signature, hashAlgorithm)); } }