public static void AddSigner_ECDSA_EphemeralKey() { using (ECDsa ecdsa = ECDsa.Create()) using (X509Certificate2 publicCertificate = Certificates.ECDsaP256Win.GetCertificate()) using (X509Certificate2 certificateWithKey = Certificates.ECDsaP256Win.TryGetCertificateWithPrivateKey(exportable: true)) { if (certificateWithKey == null) { return; } using (ECDsa privateKey = certificateWithKey.GetECDsaPrivateKey()) using (ECDsa exportableKey = privateKey.MakeExportable()) { ecdsa.ImportParameters(exportableKey.ExportParameters(true)); } using (X509Certificate2 certWithEphemeralKey = publicCertificate.CopyWithPrivateKey(ecdsa)) { ContentInfo content = new ContentInfo(new byte[] { 1, 2, 3 }); SignedCms cms = new SignedCms(content, false); CmsSigner signer = new CmsSigner(certWithEphemeralKey); cms.ComputeSignature(signer); } } }