diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignatureSupport.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignatureSupport.cs index 5e317d841cfc48..5e418cefcc0a9d 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignatureSupport.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignatureSupport.cs @@ -11,7 +11,25 @@ public class SignatureSupport public static bool SupportsRsaSha1Signatures { get; } = System.Security.Cryptography.Tests.SignatureSupport.CanProduceSha1Signature(RSA.Create()); + public static bool SupportsEcdsaSha1Signatures { get; } = GetSupportsEcdsaSha1Signatures(); + public static bool SupportsRsaMd5Signatures { get; } = System.Security.Cryptography.Tests.SignatureSupport.CanProduceMd5Signature(RSA.Create()); + + private static bool GetSupportsEcdsaSha1Signatures() + { + ECDsa ecdsa; + + try + { + ecdsa = ECDsa.Create(); + } + catch (PlatformNotSupportedException) + { + return false; + } + + return System.Security.Cryptography.Tests.SignatureSupport.CanProduceSha1Signature(ecdsa); + } } } diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.cs index c6b0983affae80..b151aa64e531cf 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.cs @@ -192,11 +192,11 @@ public static void Ctor_NoContent_Throws() () => new SignedCms(SubjectIdentifierType.SubjectKeyIdentifier, null, true)); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void CheckSignature_ExtraStore_IsAdditional() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); // Assert.NotThrows cms.CheckSignature(true); @@ -205,10 +205,10 @@ public static void CheckSignature_ExtraStore_IsAdditional() cms.CheckSignature(new X509Certificate2Collection(), true); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void Decode_IgnoresExtraData() { - byte[] basis = SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber; + byte[] basis = SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber; byte[] data = new byte[basis.Length + 60]; data.AsSpan(basis.Length).Fill(0x5E); basis.AsSpan().CopyTo(data); @@ -1233,11 +1233,11 @@ public static void EnsureExtraCertsAdded(bool newDocument) cms.CheckSignature(true); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void UntrustedCertFails_WhenTrustChecked() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); // Assert.NoThrow cms.CheckSignature(true); @@ -1542,20 +1542,22 @@ public static void SignIdentifiedContent_BadOid(string? oidValueIn, string conte Assert.Equal(contentHex, signedCms.ContentInfo.Content.ByteArrayToHex()); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void CheckSignedEncrypted_IssuerSerial_FromNetFx() { CheckSignedEncrypted( - SignedDocuments.SignedCmsOverEnvelopedCms_IssuerSerial_NetFx, - SubjectIdentifierType.IssuerAndSerialNumber); + SignedDocuments.SignedCmsOverEnvelopedCms_IssuerSerial_Sha256_NetFx, + SubjectIdentifierType.IssuerAndSerialNumber, + Certificates.RSA2048Sha256KeyTransfer1); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void CheckSignedEncrypted_SKID_FromNetFx() { CheckSignedEncrypted( - SignedDocuments.SignedCmsOverEnvelopedCms_SKID_NetFx, - SubjectIdentifierType.SubjectKeyIdentifier); + SignedDocuments.SignedCmsOverEnvelopedCms_SKID_Sha256_NetFx, + SubjectIdentifierType.SubjectKeyIdentifier, + Certificates.RSA2048Sha256KeyTransfer1); } [Fact] @@ -1590,7 +1592,10 @@ public static void ReadAndWriteDocumentWithIndefiniteLengthContent(bool checkSig cms.Encode(); } - private static void CheckSignedEncrypted(byte[] docBytes, SubjectIdentifierType expectedType) + private static void CheckSignedEncrypted( + byte[] docBytes, + SubjectIdentifierType expectedType, + CertLoader? decryptionCert = null) { SignedCms signedCms = new SignedCms(); signedCms.Decode(docBytes); @@ -1607,7 +1612,7 @@ private static void CheckSignedEncrypted(byte[] docBytes, SubjectIdentifierType EnvelopedCms envelopedCms = new EnvelopedCms(); envelopedCms.Decode(signedCms.ContentInfo.Content); - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.TryGetCertificateWithPrivateKey()) + using (X509Certificate2 cert = (decryptionCert ?? Certificates.RSAKeyTransferCapi1).TryGetCertificateWithPrivateKey()) { envelopedCms.Decrypt(new X509Certificate2Collection(cert)); } diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.netcoreapp.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.netcoreapp.cs index 5bd8b0e358ee2d..ce691f3db0725c 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.netcoreapp.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsTests.netcoreapp.cs @@ -403,11 +403,11 @@ public static void SignCmsUsingSlhDsaCertWithNotMatchingKeyThrows() } } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void AddCertificate() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.CounterSignedRsaPkcs1OneSigner); + cms.Decode(SignedDocuments.CounterSignedRsaPkcs1Sha256OneSigner); int numOfCerts = cms.Certificates.Count; @@ -422,11 +422,11 @@ public static void AddCertificate() } } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void AddCertificateWithPrivateKey() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.CounterSignedRsaPkcs1OneSigner); + cms.Decode(SignedDocuments.CounterSignedRsaPkcs1Sha256OneSigner); int numOfCerts = cms.Certificates.Count; @@ -487,11 +487,11 @@ public static void RemoveNonExistingCertificate() } } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void RemoveAllCertsAddBackSignerCert() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.CounterSignedRsaPkcs1OneSigner); + cms.Decode(SignedDocuments.CounterSignedRsaPkcs1Sha256OneSigner); SignerInfo signerInfoBeforeRemoval = cms.SignerInfos[0]; X509Certificate2 signerCert = signerInfoBeforeRemoval.Certificate; diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsWholeDocumentTests.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsWholeDocumentTests.cs index f3adf2c9af4cf7..58d7d9c6c4a520 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsWholeDocumentTests.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedCmsWholeDocumentTests.cs @@ -137,12 +137,12 @@ public static void ReadRsaPssDocument(bool fromSpan) Assert.Throws(() => cms.CheckSignature(true)); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void ReadRsaPkcs1SimpleDocument() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); Assert.Equal(1, cms.Version); @@ -155,7 +155,7 @@ public static void ReadRsaPkcs1SimpleDocument() Assert.Single(signers); SignerInfo signer = signers[0]; - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.GetCertificate()) + using (X509Certificate2 cert = Certificates.RSA2048Sha256KeyTransfer1.GetCertificate()) { X509Certificate2Collection certs = cms.Certificates; @@ -169,16 +169,20 @@ public static void ReadRsaPkcs1SimpleDocument() } Assert.Equal(SubjectIdentifierType.IssuerAndSerialNumber, signer.SignerIdentifier.Type); - Assert.Equal(Oids.Sha1, signer.DigestAlgorithm.Value); + Assert.Equal(Oids.Sha256, signer.DigestAlgorithm.Value); #if NET Assert.Equal(Oids.Rsa, signer.SignatureAlgorithm.Value); Assert.Equal( - "5A1717621D450130B3463662160EEC06F7AE77E017DD95F294E97A0BDD433FE6" + - "B2CCB34FAAC33AEA50BFD7D9E78DC7174836284619F744278AE77B8495091E09" + - "6EEF682D9CA95F6E81C7DDCEDDA6A12316B453C894B5000701EB09DF57A53B73" + - "3A4E80DA27FA710870BD88C86E2FDB9DCA14D18BEB2F0C87E9632ABF02BE2FE3", + "3CD3B859C9F718DE62016F261AC540CFCD81B9B17A5AA8574E4677FBEF6F5827" + + "ECEDA9783F744F971398D361231D33CAACFEFD20C3AFE8D59A523E4E6ECCBD96" + + "6955CB3BE8ED36B6F78D541E97F241FA15A5F08D25C8F19B58DF6B7CD6952AA4" + + "790AB1A590D65DBAF443F378F360792ECB719C9B8EF85C0D274C00C1BBCD9274" + + "E31D071F9F7C9A6CD2AFE224EE1339844DF8CE736C91559B9DE8B536069E0749" + + "D4DE67C9A88B243DFDB31CE383948C5323CCC42B7D9CE0D897A2F68DC134BB28" + + "661E2A41B8C9FED8FD7209EAC81E658B93473B1588A00A5E3FD8076229B4C769" + + "B4CCFD96790DB2378495BA17974E49BE6434AF34B22F7EB9F0B510F4AC8D51B5", signer.GetSignature().ByteArrayToHex()); #endif @@ -205,12 +209,12 @@ public static void ReadRsaPkcs1SimpleDocument() cms.CheckSignature(true); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void ReadRsaPkcs1CounterSigned() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.CounterSignedRsaPkcs1OneSigner); + cms.Decode(SignedDocuments.CounterSignedRsaPkcs1Sha256OneSigner); Assert.Equal(1, cms.Version); @@ -222,7 +226,7 @@ public static void ReadRsaPkcs1CounterSigned() Assert.Single(signers); SignerInfo signer = signers[0]; - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.GetCertificate()) + using (X509Certificate2 cert = Certificates.RSA2048Sha256KeyTransfer1.GetCertificate()) { X509Certificate2Collection certs = cms.Certificates; @@ -236,16 +240,20 @@ public static void ReadRsaPkcs1CounterSigned() } Assert.Equal(SubjectIdentifierType.IssuerAndSerialNumber, signer.SignerIdentifier.Type); - Assert.Equal(Oids.Sha1, signer.DigestAlgorithm.Value); + Assert.Equal(Oids.Sha256, signer.DigestAlgorithm.Value); #if NET Assert.Equal(Oids.Rsa, signer.SignatureAlgorithm.Value); Assert.Equal( - "5A1717621D450130B3463662160EEC06F7AE77E017DD95F294E97A0BDD433FE6" + - "B2CCB34FAAC33AEA50BFD7D9E78DC7174836284619F744278AE77B8495091E09" + - "6EEF682D9CA95F6E81C7DDCEDDA6A12316B453C894B5000701EB09DF57A53B73" + - "3A4E80DA27FA710870BD88C86E2FDB9DCA14D18BEB2F0C87E9632ABF02BE2FE3", + "3CD3B859C9F718DE62016F261AC540CFCD81B9B17A5AA8574E4677FBEF6F5827" + + "ECEDA9783F744F971398D361231D33CAACFEFD20C3AFE8D59A523E4E6ECCBD96" + + "6955CB3BE8ED36B6F78D541E97F241FA15A5F08D25C8F19B58DF6B7CD6952AA4" + + "790AB1A590D65DBAF443F378F360792ECB719C9B8EF85C0D274C00C1BBCD9274" + + "E31D071F9F7C9A6CD2AFE224EE1339844DF8CE736C91559B9DE8B536069E0749" + + "D4DE67C9A88B243DFDB31CE383948C5323CCC42B7D9CE0D897A2F68DC134BB28" + + "661E2A41B8C9FED8FD7209EAC81E658B93473B1588A00A5E3FD8076229B4C769" + + "B4CCFD96790DB2378495BA17974E49BE6434AF34B22F7EB9F0B510F4AC8D51B5", signer.GetSignature().ByteArrayToHex()); #endif @@ -406,11 +414,11 @@ public static void CheckNoSignatureDocument() Assert.Throws(() => cms.CheckSignature(true)); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void NonEmbeddedCertificate() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaCapiTransfer1_NoEmbeddedCert); + cms.Decode(SignedDocuments.RsaSha256Transfer1_NoEmbeddedCert); Assert.Equal(3, cms.Version); Assert.Equal(Oids.Pkcs7Data, cms.ContentInfo.ContentType.Value); @@ -427,8 +435,8 @@ public static void NonEmbeddedCertificate() SignerInfo signer = signers[0]; Assert.Equal(3, signer.Version); Assert.Equal(SubjectIdentifierType.SubjectKeyIdentifier, signer.SignerIdentifier.Type); - Assert.Equal("6B4A6B92FDED07EE0119F3674A96D1A70D2A588D", (string)signer.SignerIdentifier.Value); - Assert.Equal(Oids.Sha1, signer.DigestAlgorithm.Value); + Assert.Equal("FEDFD2558B95E705584A50008ED0D1683AEE840E", (string)signer.SignerIdentifier.Value); + Assert.Equal(Oids.Sha256, signer.DigestAlgorithm.Value); CryptographicAttributeObjectCollection signedAttrs = signer.SignedAttributes; Assert.Equal(3, signedAttrs.Count); @@ -452,17 +460,21 @@ public static void NonEmbeddedCertificate() Assert.Equal(Oids.Rsa, signer.SignatureAlgorithm.Value); Assert.Equal( - "0EDE3870B8A80B45A21BAEC4681D059B46502E1B1AA6B8920CF50D4D837646A5" + - "5559B4C05849126C655D95FF3C6C1B420E07DC42629F294EE69822FEA56F32D4" + - "1B824CBB6BF809B7583C27E77B7AC58DFC925B1C60EA4A67AA84D73FC9E9191D" + - "33B36645F17FD6748A2D8B12C6C384C3C734D27273386211E4518FE2B4ED0147", + "4C05163F2F1C0B9E1C8FD1F43C8D9153EF8E8AF0C8B14E573DDE5281C7E6EF8C" + + "BBDCB10F5FF57C1FF8AF6177AAE8A11B4E3E4B4A32205FA69EBA3A3F54FE0800" + + "DE31D92FF7529F60778FBD3D8C2E3065FEA481C4A2BFF7A5AFBF9B1621652D61" + + "B999D9458A85286C04AEFF2C2A438CB74C722D416B026B9D9DF549C1A75A8D28" + + "2542FC34A673CD439DEF4E0B831C4A32C9DB16DBC365665CB6113A1586170876" + + "4F32D9693E8103693A5A0121B0E9F8436B6F1946B15FC1B8A1D0922D11D0424E" + + "6D32196D56E3F65F8DD97568539362084A19545D3F291DC7FB4EAE1ECE67E428" + + "0995C8FBBFD5BD25E1A03C6F03AB1B985DBBA3D707878EB5591ED39EFB432DBD", signer.GetSignature().ByteArrayToHex()); #endif - using (SHA1 sha1 = SHA1.Create()) + using (SHA256 sha256 = SHA256.Create()) { Assert.Equal( - sha1.ComputeHash(cms.ContentInfo.Content).ByteArrayToHex(), + sha256.ComputeHash(cms.ContentInfo.Content).ByteArrayToHex(), messageDigest.MessageDigest.ByteArrayToHex()); } @@ -479,7 +491,7 @@ public static void NonEmbeddedCertificate() Assert.Throws(() => cms.CheckSignature(true)); using (X509Certificate2 wrongCert = Certificates.RSAKeyTransfer1.GetCertificate()) - using (X509Certificate2 rightCert = Certificates.RSAKeyTransferCapi1.GetCertificate()) + using (X509Certificate2 rightCert = Certificates.RSA2048Sha256KeyTransfer1.GetCertificate()) { X509Certificate2Collection coll = new X509Certificate2Collection(wrongCert); @@ -519,12 +531,12 @@ public static void NonEmbeddedCertificate() } } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void ReadRsaPkcs1DoubleCounterSigned() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners); + cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners_Sha256); Assert.Equal(1, cms.Version); @@ -536,30 +548,34 @@ public static void ReadRsaPkcs1DoubleCounterSigned() Assert.Single(signers); SignerInfo signer = signers[0]; - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.GetCertificate()) + using (X509Certificate2 cert = Certificates.RSA2048Sha256KeyTransfer1.GetCertificate()) { X509Certificate2Collection certs = cms.Certificates; Assert.Equal(2, certs.Count); - Assert.Equal(cert, certs[1]); + Assert.Equal(cert, certs[0]); Assert.Equal(cert, signer.Certificate); - Assert.NotSame(certs[1], signer.Certificate); + Assert.NotSame(certs[0], signer.Certificate); Assert.NotSame(cert, signer.Certificate); - Assert.NotSame(cert, certs[1]); + Assert.NotSame(cert, certs[0]); } Assert.Equal(SubjectIdentifierType.IssuerAndSerialNumber, signer.SignerIdentifier.Type); - Assert.Equal(Oids.Sha1, signer.DigestAlgorithm.Value); + Assert.Equal(Oids.Sha256, signer.DigestAlgorithm.Value); #if NET Assert.Equal(Oids.Rsa, signer.SignatureAlgorithm.Value); Assert.Equal( - "5A1717621D450130B3463662160EEC06F7AE77E017DD95F294E97A0BDD433FE6" + - "B2CCB34FAAC33AEA50BFD7D9E78DC7174836284619F744278AE77B8495091E09" + - "6EEF682D9CA95F6E81C7DDCEDDA6A12316B453C894B5000701EB09DF57A53B73" + - "3A4E80DA27FA710870BD88C86E2FDB9DCA14D18BEB2F0C87E9632ABF02BE2FE3", + "3CD3B859C9F718DE62016F261AC540CFCD81B9B17A5AA8574E4677FBEF6F5827" + + "ECEDA9783F744F971398D361231D33CAACFEFD20C3AFE8D59A523E4E6ECCBD96" + + "6955CB3BE8ED36B6F78D541E97F241FA15A5F08D25C8F19B58DF6B7CD6952AA4" + + "790AB1A590D65DBAF443F378F360792ECB719C9B8EF85C0D274C00C1BBCD9274" + + "E31D071F9F7C9A6CD2AFE224EE1339844DF8CE736C91559B9DE8B536069E0749" + + "D4DE67C9A88B243DFDB31CE383948C5323CCC42B7D9CE0D897A2F68DC134BB28" + + "661E2A41B8C9FED8FD7209EAC81E658B93473B1588A00A5E3FD8076229B4C769" + + "B4CCFD96790DB2378495BA17974E49BE6434AF34B22F7EB9F0B510F4AC8D51B5", signer.GetSignature().ByteArrayToHex()); #endif @@ -600,10 +616,14 @@ public static void ReadRsaPkcs1DoubleCounterSigned() #if NET Assert.Equal( - "1AA282DBED4D862D7CEA30F803E790BDB0C97EE852778CEEDDCD94BB9304A155" + - "2E60A8D36052AC8C2D28755F3B2F473824100AB3A6ABD4C15ABD77E0FFE13D0D" + - "F253BCD99C718FA673B6CB0CBBC68CE5A4AC671298C0A07C7223522E0E7FFF15" + - "CEDBAB55AAA99588517674671691065EB083FB729D1E9C04B2BF99A9953DAA5E", + "62A4F60AA0E6D85245F5224EE11B7A20F2353B7ECA5FCA50721CDF692B39A359" + + "1274CB542CB173288C1D9545F43B76FF04BFACE110B288FBD3D017E6F147F6F4" + + "E0E07D93618F8AF6A32049CF4D1ADD9E9663961B8F1C8D2BEA8886E9AE0B1747" + + "B25472BF885C0AB089BD020184D5C8D73143A4E4A37AD1564F960482769B336D" + + "04AF11930719DAED52C38DF4860CA294B45D748E53E206A1191D355D32591B3B" + + "614FB48E8F610E19B4D367D1959E609C216AE31B2F5B1890196A21006D1BEFAA" + + "756DD26675BB0E63F4DD89F3BB65B649D740F2C05C95A985BD0B4D81C5E40C49" + + "AA88E1A65899275298D159F2035446874438561621E4B1F89EAADC7004C45C32", cs2.GetSignature().ByteArrayToHex()); #endif diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedDocuments.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedDocuments.cs index 13b828946b6345..38c351677617b6 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedDocuments.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignedDocuments.cs @@ -77,6 +77,285 @@ internal static class SignedDocuments "A95F6E81C7DDCEDDA6A12316B453C894B5000701EB09DF57A53B733A4E80DA27" + "FA710870BD88C86E2FDB9DCA14D18BEB2F0C87E9632ABF02BE2FE3").HexToByteArray(); + // Structural twin of RsaPkcs1OneSignerIssuerAndSerialNumber, but signed with + // SHA-256 and a 2048-bit key so it remains usable on platforms whose crypto + // policy rejects SHA-1 signatures and sub-2048-bit RSA keys. + // Produced with Certificates.RSA2048Sha256KeyTransfer1 over the content + // "Microsoft Corporation", IssuerAndSerialNumber signer, EndCertOnly, no + // signed attributes. + public static byte[] RsaPkcs1Sha256OneSignerIssuerAndSerialNumber = ( + "308204D306092A864886F70D010702A08204C4308204C0020101310F300D0609" + + "6086480165030402010500302406092A864886F70D010701A01704154D696372" + + "6F736F667420436F72706F726174696F6EA08203223082031E30820206A00302" + + "0102020900DCE4D72A7F3CA58E300D06092A864886F70D01010B050030243122" + + "302006035504030C19525341323034385368613235364B65795472616E736665" + + "7231301E170D3139303130333230343133345A170D3238313233313230343133" + + "345A30243122302006035504030C19525341323034385368613235364B657954" + + "72616E736665723130820122300D06092A864886F70D01010105000382010F00" + + "3082010A0282010100BF8495EF84C91EB42AE9196C52AA2C6E22A258C4D76E09" + + "E93980D81FAFE6977FE1A3C8B4E9CA414405A1A4DB6D549A4849189D568AA639" + + "F10FA556F55377C8FDE8EC33CCDC833C4C5B8B36275E8F1899443871B7363F20" + + "4A28268BD9E890FDD488B17BC49890F78FAB5D8A5927B69655760D400A30E0EE" + + "87DD38B4168DF6814596E0EFAAFB2F9CC134664BB8629E65AA107847B4416BD5" + + "7F0B701C30E9A160AA589646E981815D9823201AE0EE601208C51C08D3E50B1F" + + "AB1560802916E678310C03E3CFF3BCC039F98D5B254E2BAF027AE9F78FAEF72C" + + "2D93075ECA64B5AD3E92348068C4DCB8CAD0BAD954A7D04FCE3AFF94EF8CF282" + + "095DB75A25A4114F8F0203010001A3533051301D0603551D0E04160414FEDFD2" + + "558B95E705584A50008ED0D1683AEE840E301F0603551D23041830168014FEDF" + + "D2558B95E705584A50008ED0D1683AEE840E300F0603551D130101FF04053003" + + "0101FF300D06092A864886F70D01010B0500038201010031C46689DB724A1A8D" + + "268EAA7139EFCF8A31496F15F325A19349547114D7992EAD5FA0BD6FFD5539B1" + + "639F0CF8F975C5E9EBED8A048289C782EC7E0342F339F53E811CC6A686417350" + + "2388875964F0C50D84ABA9228DD2E3DDD3339374B76A6826F4F848A403ADDA2E" + + "095974232B084C8672B12C18D675D81ED8FA4B15A1C7ABC73F9CCB5BC25716EE" + + "B9D2C97F8EBCB9D4824FB23C7FBC78E1D3B9B1B3749F6C0981B2B6CC81DC723A" + + "A5CC589346DCECA222C78F68FE80563E12282F7DF936A161163F86A9EADBA2E1" + + "80A906DE73AEBEEA0775F6AB9AE97C71F26E187E3D8CB50C8137663C99D44087" + + "7D5A5E17DF9785976E9031DD96134A07899281B6B64E3F3182015C3082015802" + + "0101303130243122302006035504030C19525341323034385368613235364B65" + + "795472616E7366657231020900DCE4D72A7F3CA58E300D060960864801650304" + + "02010500300D06092A864886F70D0101010500048201003CD3B859C9F718DE62" + + "016F261AC540CFCD81B9B17A5AA8574E4677FBEF6F5827ECEDA9783F744F9713" + + "98D361231D33CAACFEFD20C3AFE8D59A523E4E6ECCBD966955CB3BE8ED36B6F7" + + "8D541E97F241FA15A5F08D25C8F19B58DF6B7CD6952AA4790AB1A590D65DBAF4" + + "43F378F360792ECB719C9B8EF85C0D274C00C1BBCD9274E31D071F9F7C9A6CD2" + + "AFE224EE1339844DF8CE736C91559B9DE8B536069E0749D4DE67C9A88B243DFD" + + "B31CE383948C5323CCC42B7D9CE0D897A2F68DC134BB28661E2A41B8C9FED8FD" + + "7209EAC81E658B93473B1588A00A5E3FD8076229B4C769B4CCFD96790DB23784" + + "95BA17974E49BE6434AF34B22F7EB9F0B510F4AC8D51B5").HexToByteArray(); + + // SHA-256 / RSA-2048 structural twins of OneRsaSignerTwoRsaCounterSigners and + // RsaPkcs1CounterSignedWithNoSignature, for use on platforms whose crypto policy + // rejects SHA-1 signatures and sub-2048-bit RSA keys. + // + // Like the originals, these were produced by Windows/crypt32 (generated by + // running SignedCms on .NET Framework), so their counter-signers carry the + // content-type attribute in addition to the message digest, and the documents + // continue to exercise parsing of another implementation's output. + // + // The first has counter-signers [0]=SubjectKeyIdentifier (same cert as the + // signer, Certificates.RSA2048Sha256KeyTransfer1) and [1]=IssuerAndSerialNumber + // (Certificates.RSA2048SignatureOnly); the second has a single NoSignature + // counter-signer. + public static readonly byte[] OneRsaSignerTwoRsaCounterSigners_Sha256 = ( + "30820B7606092A864886F70D010702A0820B6730820B63020101310F300D0609" + + "6086480165030402010500302406092A864886F70D010701A01704154D696372" + + "6F736F667420436F72706F726174696F6EA08206523082031E30820206A00302" + + "0102020900DCE4D72A7F3CA58E300D06092A864886F70D01010B050030243122" + + "302006035504030C19525341323034385368613235364B65795472616E736665" + + "7231301E170D3139303130333230343133345A170D3238313233313230343133" + + "345A30243122302006035504030C19525341323034385368613235364B657954" + + "72616E736665723130820122300D06092A864886F70D01010105000382010F00" + + "3082010A0282010100BF8495EF84C91EB42AE9196C52AA2C6E22A258C4D76E09" + + "E93980D81FAFE6977FE1A3C8B4E9CA414405A1A4DB6D549A4849189D568AA639" + + "F10FA556F55377C8FDE8EC33CCDC833C4C5B8B36275E8F1899443871B7363F20" + + "4A28268BD9E890FDD488B17BC49890F78FAB5D8A5927B69655760D400A30E0EE" + + "87DD38B4168DF6814596E0EFAAFB2F9CC134664BB8629E65AA107847B4416BD5" + + "7F0B701C30E9A160AA589646E981815D9823201AE0EE601208C51C08D3E50B1F" + + "AB1560802916E678310C03E3CFF3BCC039F98D5B254E2BAF027AE9F78FAEF72C" + + "2D93075ECA64B5AD3E92348068C4DCB8CAD0BAD954A7D04FCE3AFF94EF8CF282" + + "095DB75A25A4114F8F0203010001A3533051301D0603551D0E04160414FEDFD2" + + "558B95E705584A50008ED0D1683AEE840E301F0603551D23041830168014FEDF" + + "D2558B95E705584A50008ED0D1683AEE840E300F0603551D130101FF04053003" + + "0101FF300D06092A864886F70D01010B0500038201010031C46689DB724A1A8D" + + "268EAA7139EFCF8A31496F15F325A19349547114D7992EAD5FA0BD6FFD5539B1" + + "639F0CF8F975C5E9EBED8A048289C782EC7E0342F339F53E811CC6A686417350" + + "2388875964F0C50D84ABA9228DD2E3DDD3339374B76A6826F4F848A403ADDA2E" + + "095974232B084C8672B12C18D675D81ED8FA4B15A1C7ABC73F9CCB5BC25716EE" + + "B9D2C97F8EBCB9D4824FB23C7FBC78E1D3B9B1B3749F6C0981B2B6CC81DC723A" + + "A5CC589346DCECA222C78F68FE80563E12282F7DF936A161163F86A9EADBA2E1" + + "80A906DE73AEBEEA0775F6AB9AE97C71F26E187E3D8CB50C8137663C99D44087" + + "7D5A5E17DF9785976E9031DD96134A07899281B6B64E3F3082032C30820214A0" + + "03020102020900E0D8AB6819D7306E300D06092A864886F70D01010B05003038" + + "313630340603550403132D54776F2074686F7573616E6420666F727479206569" + + "6768742062697473206F662052534120676F6F646E657373301E170D31373131" + + "30333233353131355A170D3138313130333233353131355A3038313630340603" + + "550403132D54776F2074686F7573616E6420666F727479206569676874206269" + + "7473206F662052534120676F6F646E65737330820122300D06092A864886F70D" + + "01010105000382010F003082010A028201010096C114A5898D09133EF859F89C" + + "1D848BA8CB5258793E05B92D499C55EEFACE274BBBC26803FB813B9C11C68981" + + "53CC1745DED2C4D2672F807F0B2D957BC4B65EBC9DDE26E2EA7B2A6FE9A7C4D8" + + "BD1EF6032B8F0BB6AA33C8B57248B3D5E3901D8A38A283D7E25FF8E6F522381E" + + "E5484234CFF7B30C174635418FA89E14C468AD89DCFCBBB535E5AF53510F9EA7" + + "F9DA8C1B53375B6DAB95A291439A5648726EE1012E41388E100691642CF6917F" + + "5569D8351F2782F435A579014E8448EEA0C4AECAFF2F476799D88457E2C8BCB5" + + "6E5E128782B4FE26AFF0720D91D52CCAFE344255808F5271D09F784F787E8323" + + "182080915BE0AE15A71D66476D0F264DD084F30203010001A3393037301D0603" + + "551D0E04160414745B5F12EF962E84B897E246D399A2BADEA9C5AC3009060355" + + "1D1304023000300B0603551D0F040403020780300D06092A864886F70D01010B" + + "0500038201010087A15DF37FBD6E9DED7A8FFF25E60B731F635469BA01DD14BC" + + "03B2A24D99EFD8B894E9493D63EC88C496CB04B33DF25222544F23D43F402361" + + "2C4D97B719C1F9431E4DB7A580CDF66A3E5F0DAF89A267DD187ABFFB08361B1F" + + "79232376AA5FC5AD384CC2F98FE36C1CEA0B943E1E3961190648889C8ABE8397" + + "A5A338843CBFB1D8B212BE46685ACE7B80475CC7C97FC0377936ABD5F664E9C0" + + "9C463897726650711A1110FA9866BC1C278D95E5636AB96FAE95CCD67FD572A8" + + "C727E2C03E7B242457318BEC1BE52CA5BD9454A0A41140AE96ED1C56D220D1FD" + + "5DD3B1B4FB2AA0E04FC94F7E3C7D476F298962245563953AD7225EDCEAC8B850" + + "9E49292E62D8BF318204CF308204CB020101303130243122302006035504030C" + + "19525341323034385368613235364B65795472616E7366657231020900DCE4D7" + + "2A7F3CA58E300D06096086480165030402010500300D06092A864886F70D0101" + + "010500048201003CD3B859C9F718DE62016F261AC540CFCD81B9B17A5AA8574E" + + "4677FBEF6F5827ECEDA9783F744F971398D361231D33CAACFEFD20C3AFE8D59A" + + "523E4E6ECCBD966955CB3BE8ED36B6F78D541E97F241FA15A5F08D25C8F19B58" + + "DF6B7CD6952AA4790AB1A590D65DBAF443F378F360792ECB719C9B8EF85C0D27" + + "4C00C1BBCD9274E31D071F9F7C9A6CD2AFE224EE1339844DF8CE736C91559B9D" + + "E8B536069E0749D4DE67C9A88B243DFDB31CE383948C5323CCC42B7D9CE0D897" + + "A2F68DC134BB28661E2A41B8C9FED8FD7209EAC81E658B93473B1588A00A5E3F" + + "D8076229B4C769B4CCFD96790DB2378495BA17974E49BE6434AF34B22F7EB9F0" + + "B510F4AC8D51B5A182036F3082019B06092A864886F70D0109063182018C3082" + + "01880201038014FEDFD2558B95E705584A50008ED0D1683AEE840E300D060960" + + "86480165030402010500A04B301806092A864886F70D010903310B06092A8648" + + "86F70D010701302F06092A864886F70D0109043122042011DC8EBE3D99DA6F04" + + "C560A498014C746E43EE39594A5BE862184502459EEDA2300D06092A864886F7" + + "0D010101050004820100B4B84754A67A085076D159EA19AC4241A164BD56D59C" + + "C2347DE80D5A4C93881F4F09A974DEF11B24DBBB5DDAE9F07EFE68A08AAA0804" + + "F2018EC2B7FDF4C3FD0AB1E91142A3095D0C60FEE813C63CD65728FD04475F86" + + "0AC76D7719FD583414F688412572FBF5B55D7F11FA1FFA5D6A4F65EF3BA49461" + + "B09E4D022B1C4C7ECCA71226115E736DF5C5EC41AEA4BC047F96903761FDEA83" + + "AA25B1490912909D24AD15455267ECB0A45D788BC44DBF0D1A864D981F13183D" + + "829ADBBF0F8FF574EFFB2A9C8B8D4F9E73BDCFFE6BDDCD4AB6E6C7A6539D2587" + + "04C26AAA7F002F0DC3E94092A77743C3A542F13580BAB2FA00BB48385A28D362" + + "F7FB6E7525CF5715F566308201CC06092A864886F70D010906318201BD308201" + + "B902010130453038313630340603550403132D54776F2074686F7573616E6420" + + "666F7274792065696768742062697473206F662052534120676F6F646E657373" + + "020900E0D8AB6819D7306E300D06096086480165030402010500A04B30180609" + + "2A864886F70D010903310B06092A864886F70D010701302F06092A864886F70D" + + "0109043122042011DC8EBE3D99DA6F04C560A498014C746E43EE39594A5BE862" + + "184502459EEDA2300D06092A864886F70D01010105000482010062A4F60AA0E6" + + "D85245F5224EE11B7A20F2353B7ECA5FCA50721CDF692B39A3591274CB542CB1" + + "73288C1D9545F43B76FF04BFACE110B288FBD3D017E6F147F6F4E0E07D93618F" + + "8AF6A32049CF4D1ADD9E9663961B8F1C8D2BEA8886E9AE0B1747B25472BF885C" + + "0AB089BD020184D5C8D73143A4E4A37AD1564F960482769B336D04AF11930719" + + "DAED52C38DF4860CA294B45D748E53E206A1191D355D32591B3B614FB48E8F61" + + "0E19B4D367D1959E609C216AE31B2F5B1890196A21006D1BEFAA756DD26675BB" + + "0E63F4DD89F3BB65B649D740F2C05C95A985BD0B4D81C5E40C49AA88E1A65899" + + "275298D159F2035446874438561621E4B1F89EAADC7004C45C32").HexToByteArray(); + + public static readonly byte[] RsaPkcs1Sha256CounterSignedWithNoSignature = ( + "3082059706092A864886F70D010702A082058830820584020101310F300D0609" + + "6086480165030402010500302406092A864886F70D010701A01704154D696372" + + "6F736F667420436F72706F726174696F6EA08203223082031E30820206A00302" + + "0102020900DCE4D72A7F3CA58E300D06092A864886F70D01010B050030243122" + + "302006035504030C19525341323034385368613235364B65795472616E736665" + + "7231301E170D3139303130333230343133345A170D3238313233313230343133" + + "345A30243122302006035504030C19525341323034385368613235364B657954" + + "72616E736665723130820122300D06092A864886F70D01010105000382010F00" + + "3082010A0282010100BF8495EF84C91EB42AE9196C52AA2C6E22A258C4D76E09" + + "E93980D81FAFE6977FE1A3C8B4E9CA414405A1A4DB6D549A4849189D568AA639" + + "F10FA556F55377C8FDE8EC33CCDC833C4C5B8B36275E8F1899443871B7363F20" + + "4A28268BD9E890FDD488B17BC49890F78FAB5D8A5927B69655760D400A30E0EE" + + "87DD38B4168DF6814596E0EFAAFB2F9CC134664BB8629E65AA107847B4416BD5" + + "7F0B701C30E9A160AA589646E981815D9823201AE0EE601208C51C08D3E50B1F" + + "AB1560802916E678310C03E3CFF3BCC039F98D5B254E2BAF027AE9F78FAEF72C" + + "2D93075ECA64B5AD3E92348068C4DCB8CAD0BAD954A7D04FCE3AFF94EF8CF282" + + "095DB75A25A4114F8F0203010001A3533051301D0603551D0E04160414FEDFD2" + + "558B95E705584A50008ED0D1683AEE840E301F0603551D23041830168014FEDF" + + "D2558B95E705584A50008ED0D1683AEE840E300F0603551D130101FF04053003" + + "0101FF300D06092A864886F70D01010B0500038201010031C46689DB724A1A8D" + + "268EAA7139EFCF8A31496F15F325A19349547114D7992EAD5FA0BD6FFD5539B1" + + "639F0CF8F975C5E9EBED8A048289C782EC7E0342F339F53E811CC6A686417350" + + "2388875964F0C50D84ABA9228DD2E3DDD3339374B76A6826F4F848A403ADDA2E" + + "095974232B084C8672B12C18D675D81ED8FA4B15A1C7ABC73F9CCB5BC25716EE" + + "B9D2C97F8EBCB9D4824FB23C7FBC78E1D3B9B1B3749F6C0981B2B6CC81DC723A" + + "A5CC589346DCECA222C78F68FE80563E12282F7DF936A161163F86A9EADBA2E1" + + "80A906DE73AEBEEA0775F6AB9AE97C71F26E187E3D8CB50C8137663C99D44087" + + "7D5A5E17DF9785976E9031DD96134A07899281B6B64E3F318202203082021C02" + + "0101303130243122302006035504030C19525341323034385368613235364B65" + + "795472616E7366657231020900DCE4D72A7F3CA58E300D060960864801650304" + + "02010500300D06092A864886F70D0101010500048201003CD3B859C9F718DE62" + + "016F261AC540CFCD81B9B17A5AA8574E4677FBEF6F5827ECEDA9783F744F9713" + + "98D361231D33CAACFEFD20C3AFE8D59A523E4E6ECCBD966955CB3BE8ED36B6F7" + + "8D541E97F241FA15A5F08D25C8F19B58DF6B7CD6952AA4790AB1A590D65DBAF4" + + "43F378F360792ECB719C9B8EF85C0D274C00C1BBCD9274E31D071F9F7C9A6CD2" + + "AFE224EE1339844DF8CE736C91559B9DE8B536069E0749D4DE67C9A88B243DFD" + + "B31CE383948C5323CCC42B7D9CE0D897A2F68DC134BB28661E2A41B8C9FED8FD" + + "7209EAC81E658B93473B1588A00A5E3FD8076229B4C769B4CCFD96790DB23784" + + "95BA17974E49BE6434AF34B22F7EB9F0B510F4AC8D51B5A181C13081BE06092A" + + "864886F70D0109063181B03081AD020101301C3017311530130603550403130C" + + "44756D6D79205369676E6572020100300D06096086480165030402010500A04B" + + "301806092A864886F70D010903310B06092A864886F70D010701302F06092A86" + + "4886F70D0109043122042011DC8EBE3D99DA6F04C560A498014C746E43EE3959" + + "4A5BE862184502459EEDA2300C06082B06010505070602050004205F788A87B5" + + "3A918B82DFD8ACEEAAA379AB965D1379D18DD225A4E175C99AFF41").HexToByteArray(); + + // SHA-256 / RSA-2048 counterparts of CounterSignedRsaPkcs1OneSigner and + // RsaCapiTransfer1_NoEmbeddedCert, produced by Windows/crypt32 (generated by + // running SignedCms on .NET Framework) so they retain that producer's encoding, + // including the content-type attribute on counter-signers and explicit NULL + // algorithm parameters. Usable on platforms whose crypto policy rejects SHA-1 + // and sub-2048-bit RSA keys. + internal static readonly byte[] CounterSignedRsaPkcs1Sha256OneSigner = ( + "3082067606092A864886F70D010702A082066730820663020101310F300D0609" + + "6086480165030402010500302406092A864886F70D010701A01704154D696372" + + "6F736F667420436F72706F726174696F6EA08203223082031E30820206A00302" + + "0102020900DCE4D72A7F3CA58E300D06092A864886F70D01010B050030243122" + + "302006035504030C19525341323034385368613235364B65795472616E736665" + + "7231301E170D3139303130333230343133345A170D3238313233313230343133" + + "345A30243122302006035504030C19525341323034385368613235364B657954" + + "72616E736665723130820122300D06092A864886F70D01010105000382010F00" + + "3082010A0282010100BF8495EF84C91EB42AE9196C52AA2C6E22A258C4D76E09" + + "E93980D81FAFE6977FE1A3C8B4E9CA414405A1A4DB6D549A4849189D568AA639" + + "F10FA556F55377C8FDE8EC33CCDC833C4C5B8B36275E8F1899443871B7363F20" + + "4A28268BD9E890FDD488B17BC49890F78FAB5D8A5927B69655760D400A30E0EE" + + "87DD38B4168DF6814596E0EFAAFB2F9CC134664BB8629E65AA107847B4416BD5" + + "7F0B701C30E9A160AA589646E981815D9823201AE0EE601208C51C08D3E50B1F" + + "AB1560802916E678310C03E3CFF3BCC039F98D5B254E2BAF027AE9F78FAEF72C" + + "2D93075ECA64B5AD3E92348068C4DCB8CAD0BAD954A7D04FCE3AFF94EF8CF282" + + "095DB75A25A4114F8F0203010001A3533051301D0603551D0E04160414FEDFD2" + + "558B95E705584A50008ED0D1683AEE840E301F0603551D23041830168014FEDF" + + "D2558B95E705584A50008ED0D1683AEE840E300F0603551D130101FF04053003" + + "0101FF300D06092A864886F70D01010B0500038201010031C46689DB724A1A8D" + + "268EAA7139EFCF8A31496F15F325A19349547114D7992EAD5FA0BD6FFD5539B1" + + "639F0CF8F975C5E9EBED8A048289C782EC7E0342F339F53E811CC6A686417350" + + "2388875964F0C50D84ABA9228DD2E3DDD3339374B76A6826F4F848A403ADDA2E" + + "095974232B084C8672B12C18D675D81ED8FA4B15A1C7ABC73F9CCB5BC25716EE" + + "B9D2C97F8EBCB9D4824FB23C7FBC78E1D3B9B1B3749F6C0981B2B6CC81DC723A" + + "A5CC589346DCECA222C78F68FE80563E12282F7DF936A161163F86A9EADBA2E1" + + "80A906DE73AEBEEA0775F6AB9AE97C71F26E187E3D8CB50C8137663C99D44087" + + "7D5A5E17DF9785976E9031DD96134A07899281B6B64E3F318202FF308202FB02" + + "0101303130243122302006035504030C19525341323034385368613235364B65" + + "795472616E7366657231020900DCE4D72A7F3CA58E300D060960864801650304" + + "02010500300D06092A864886F70D0101010500048201003CD3B859C9F718DE62" + + "016F261AC540CFCD81B9B17A5AA8574E4677FBEF6F5827ECEDA9783F744F9713" + + "98D361231D33CAACFEFD20C3AFE8D59A523E4E6ECCBD966955CB3BE8ED36B6F7" + + "8D541E97F241FA15A5F08D25C8F19B58DF6B7CD6952AA4790AB1A590D65DBAF4" + + "43F378F360792ECB719C9B8EF85C0D274C00C1BBCD9274E31D071F9F7C9A6CD2" + + "AFE224EE1339844DF8CE736C91559B9DE8B536069E0749D4DE67C9A88B243DFD" + + "B31CE383948C5323CCC42B7D9CE0D897A2F68DC134BB28661E2A41B8C9FED8FD" + + "7209EAC81E658B93473B1588A00A5E3FD8076229B4C769B4CCFD96790DB23784" + + "95BA17974E49BE6434AF34B22F7EB9F0B510F4AC8D51B5A182019F3082019B06" + + "092A864886F70D0109063182018C308201880201038014FEDFD2558B95E70558" + + "4A50008ED0D1683AEE840E300D06096086480165030402010500A04B30180609" + + "2A864886F70D010903310B06092A864886F70D010701302F06092A864886F70D" + + "0109043122042011DC8EBE3D99DA6F04C560A498014C746E43EE39594A5BE862" + + "184502459EEDA2300D06092A864886F70D010101050004820100B4B84754A67A" + + "085076D159EA19AC4241A164BD56D59CC2347DE80D5A4C93881F4F09A974DEF1" + + "1B24DBBB5DDAE9F07EFE68A08AAA0804F2018EC2B7FDF4C3FD0AB1E91142A309" + + "5D0C60FEE813C63CD65728FD04475F860AC76D7719FD583414F688412572FBF5" + + "B55D7F11FA1FFA5D6A4F65EF3BA49461B09E4D022B1C4C7ECCA71226115E736D" + + "F5C5EC41AEA4BC047F96903761FDEA83AA25B1490912909D24AD15455267ECB0" + + "A45D788BC44DBF0D1A864D981F13183D829ADBBF0F8FF574EFFB2A9C8B8D4F9E" + + "73BDCFFE6BDDCD4AB6E6C7A6539D258704C26AAA7F002F0DC3E94092A77743C3" + + "A542F13580BAB2FA00BB48385A28D362F7FB6E7525CF5715F566").HexToByteArray(); + + internal static readonly byte[] RsaSha256Transfer1_NoEmbeddedCert = ( + "308201FB06092A864886F70D010702A08201EC308201E8020103310F300D0609" + + "6086480165030402010500302406092A864886F70D010701A01704154D696372" + + "6F736F667420436F72706F726174696F6E318201AA308201A60201038014FEDF" + + "D2558B95E705584A50008ED0D1683AEE840E300D060960864801650304020105" + + "00A069301806092A864886F70D010903310B06092A864886F70D010701301C06" + + "092A864886F70D010905310F170D3137313130323135333430345A302F06092A" + + "864886F70D010904312204205951DA04EDAA9198B1B04E40711C13D3E4173B3C" + + "B29F1066D882F2BE5B0C5187300D06092A864886F70D0101010500048201004C" + + "05163F2F1C0B9E1C8FD1F43C8D9153EF8E8AF0C8B14E573DDE5281C7E6EF8CBB" + + "DCB10F5FF57C1FF8AF6177AAE8A11B4E3E4B4A32205FA69EBA3A3F54FE0800DE" + + "31D92FF7529F60778FBD3D8C2E3065FEA481C4A2BFF7A5AFBF9B1621652D61B9" + + "99D9458A85286C04AEFF2C2A438CB74C722D416B026B9D9DF549C1A75A8D2825" + + "42FC34A673CD439DEF4E0B831C4A32C9DB16DBC365665CB6113A15861708764F" + + "32D9693E8103693A5A0121B0E9F8436B6F1946B15FC1B8A1D0922D11D0424E6D" + + "32196D56E3F65F8DD97568539362084A19545D3F291DC7FB4EAE1ECE67E42809" + + "95C8FBBFD5BD25E1A03C6F03AB1B985DBBA3D707878EB5591ED39EFB432DBD").HexToByteArray(); + public static byte[] CounterSignedRsaPkcs1OneSigner = ( "3082044906092A864886F70D010702A082043A30820436020101310B30090605" + "2B0E03021A0500302406092A864886F70D010701A01704154D6963726F736F66" + @@ -491,6 +770,121 @@ internal static class SignedDocuments "5A798CD29B72C7C7991F968D29DB15C4865BEE83A7E2FD73326CA4022100899F" + "000179F77BFE296783548EAE56BA7F53C0DB0563A27A36A149BAEC9C23AC").HexToByteArray(); + // SHA-256 / RSA-2048 counterparts of SignedCmsOverEnvelopedCms_*_NetFx, produced + // by Windows/crypt32 (generated by running SignedCms and EnvelopedCms on + // .NET Framework). A SignedCms whose content is an EnvelopedCms encrypting the + // single byte 0x42. + internal static readonly byte[] SignedCmsOverEnvelopedCms_IssuerSerial_Sha256_NetFx = ( + "308206A506092A864886F70D010702A082069630820692020101310F300D0609" + + "6086480165030402010500308201A706092A864886F70D010703A08201983082" + + "019406092A864886F70D010703A0820185308201810201003182014D30820149" + + "020100303130243122302006035504030C19525341323034385368613235364B" + + "65795472616E7366657231020900DCE4D72A7F3CA58E300D06092A864886F70D" + + "01010105000482010062885B86126CDF4ED40380027B47D4693E5C247376906A" + + "A8C93E4D489F7EC94FC87600C8E4EAA166D58E51D1D92E65171C7F4F885D3E34" + + "C4536776739FF2ED0E76F15845A31BDA2C4DFC4BC22C8381346ED6802207A1A0" + + "1CBCF08D4AE024C3209167731580972BF13103B3CCC1398B7ECD5A6E1ABDADF9" + + "74EC8CBF9866391E27FBD992DC3AFB4BB4202E640DF1982D7F4CD03237F4009E" + + "C70F8A50B97EBED7FAF878D4843239DB4C7F9FF0321CF552B5517444B10774FE" + + "F48B5CF8B1CEA8AAD12300F61EF384BDC06221AB809B53473C8DF8A897B696E1" + + "B99AE5FCDDC7E0A7CE20E6DD32597E3C6A53D9B1E21C4A63B1A9C5F560829C07" + + "9A05C33977DC942518302B06092A864886F70D010701301406082A864886F70D" + + "03070408AEBDC199F19B2EEB8008F8FD3E25EC758591A08203223082031E3082" + + "0206A003020102020900DCE4D72A7F3CA58E300D06092A864886F70D01010B05" + + "0030243122302006035504030C19525341323034385368613235364B65795472" + + "616E7366657231301E170D3139303130333230343133345A170D323831323331" + + "3230343133345A30243122302006035504030C19525341323034385368613235" + + "364B65795472616E736665723130820122300D06092A864886F70D0101010500" + + "0382010F003082010A0282010100BF8495EF84C91EB42AE9196C52AA2C6E22A2" + + "58C4D76E09E93980D81FAFE6977FE1A3C8B4E9CA414405A1A4DB6D549A484918" + + "9D568AA639F10FA556F55377C8FDE8EC33CCDC833C4C5B8B36275E8F18994438" + + "71B7363F204A28268BD9E890FDD488B17BC49890F78FAB5D8A5927B69655760D" + + "400A30E0EE87DD38B4168DF6814596E0EFAAFB2F9CC134664BB8629E65AA1078" + + "47B4416BD57F0B701C30E9A160AA589646E981815D9823201AE0EE601208C51C" + + "08D3E50B1FAB1560802916E678310C03E3CFF3BCC039F98D5B254E2BAF027AE9" + + "F78FAEF72C2D93075ECA64B5AD3E92348068C4DCB8CAD0BAD954A7D04FCE3AFF" + + "94EF8CF282095DB75A25A4114F8F0203010001A3533051301D0603551D0E0416" + + "0414FEDFD2558B95E705584A50008ED0D1683AEE840E301F0603551D23041830" + + "168014FEDFD2558B95E705584A50008ED0D1683AEE840E300F0603551D130101" + + "FF040530030101FF300D06092A864886F70D01010B0500038201010031C46689" + + "DB724A1A8D268EAA7139EFCF8A31496F15F325A19349547114D7992EAD5FA0BD" + + "6FFD5539B1639F0CF8F975C5E9EBED8A048289C782EC7E0342F339F53E811CC6" + + "A6864173502388875964F0C50D84ABA9228DD2E3DDD3339374B76A6826F4F848" + + "A403ADDA2E095974232B084C8672B12C18D675D81ED8FA4B15A1C7ABC73F9CCB" + + "5BC25716EEB9D2C97F8EBCB9D4824FB23C7FBC78E1D3B9B1B3749F6C0981B2B6" + + "CC81DC723AA5CC589346DCECA222C78F68FE80563E12282F7DF936A161163F86" + + "A9EADBA2E180A906DE73AEBEEA0775F6AB9AE97C71F26E187E3D8CB50C813766" + + "3C99D440877D5A5E17DF9785976E9031DD96134A07899281B6B64E3F318201A9" + + "308201A5020101303130243122302006035504030C1952534132303438536861" + + "3235364B65795472616E7366657231020900DCE4D72A7F3CA58E300D06096086" + + "480165030402010500A04B301806092A864886F70D010903310B06092A864886" + + "F70D010703302F06092A864886F70D010904312204203E36F90F73620A4A48C9" + + "C3AD851B4D7BC4963CB2F06726CE3FC009A2977B0CCE300D06092A864886F70D" + + "0101010500048201006AABD3F0F2C5FA4E238052C6650ACDDD93A634A579688A" + + "EAB92E345C612DC447B4D5A919C7B6048F7C381BBFDD90F81A5F63950887FDC4" + + "EEA4AC13AE8B6BD53370D6F210D486204ADEEB8BEE73AE64A10F9E6E279DC827" + + "E8EB2CC29E620287F6BA72E65487B476186A59E8F04538734979853EAC438730" + + "EF87A1BA7609580838276A8319D199D21810002303E48436303EBC6FC409C4CF" + + "5845ECCA776866CF06C8182AC6E55D1C4DE0E9FAB0D410A5E98181B61CF7AFBF" + + "11DABA9EDDB4819D8DD04289576E2488590546BDFA0806B1EF49145A889E2749" + + "715143D267AD206BA5D001CC823295358F64A7ABE64782DAE7147B4F5D3E0F8F" + + "36FD3C8BC7C9D4A490").HexToByteArray(); + + internal static readonly byte[] SignedCmsOverEnvelopedCms_SKID_Sha256_NetFx = ( + "3082068C06092A864886F70D010702A082067D30820679020103310F300D0609" + + "6086480165030402010500308201AB06092A864886F70D010703A082019C0482" + + "01983082019406092A864886F70D010703A0820185308201810201003182014D" + + "30820149020100303130243122302006035504030C1952534132303438536861" + + "3235364B65795472616E7366657231020900DCE4D72A7F3CA58E300D06092A86" + + "4886F70D0101010500048201001AAD36D9E1F11B7CB1E31B0F2D83E454BE85D0" + + "8274D758FC8C15A67B68B09E141B4154981413A19B4969234A32839AF84D4F08" + + "635EAB439A20C3F82E5930E04F491432CE5DE9CA9C35609992E183FDD226A01D" + + "F20A4E0F426052179662C4B35D5283DD3398132F1514A44C88651A253F061D16" + + "AF719F811D8F06DE3B569295F5816EEFCEE161A117992943531F1115EB8E7476" + + "E3D0F65FF00B7FFA7CAD9F1B59B15BC4CE72689F9F2337E6A9ACCB96358B1EEB" + + "7634367031FD182DB6F932DA1077B3E7317A58482F634BA8F20371BD328AF440" + + "E8147756DAA9FAF953BCCC27E7CF840AE4BC0D7BE4404B8078568D4B25B4512E" + + "287ACBAA40033E999A831335A7302B06092A864886F70D010701301406082A86" + + "4886F70D03070408FE3D36B23A9C14F88008D80526D89C5775A0A08203223082" + + "031E30820206A003020102020900DCE4D72A7F3CA58E300D06092A864886F70D" + + "01010B050030243122302006035504030C19525341323034385368613235364B" + + "65795472616E7366657231301E170D3139303130333230343133345A170D3238" + + "313233313230343133345A30243122302006035504030C195253413230343853" + + "68613235364B65795472616E736665723130820122300D06092A864886F70D01" + + "010105000382010F003082010A0282010100BF8495EF84C91EB42AE9196C52AA" + + "2C6E22A258C4D76E09E93980D81FAFE6977FE1A3C8B4E9CA414405A1A4DB6D54" + + "9A4849189D568AA639F10FA556F55377C8FDE8EC33CCDC833C4C5B8B36275E8F" + + "1899443871B7363F204A28268BD9E890FDD488B17BC49890F78FAB5D8A5927B6" + + "9655760D400A30E0EE87DD38B4168DF6814596E0EFAAFB2F9CC134664BB8629E" + + "65AA107847B4416BD57F0B701C30E9A160AA589646E981815D9823201AE0EE60" + + "1208C51C08D3E50B1FAB1560802916E678310C03E3CFF3BCC039F98D5B254E2B" + + "AF027AE9F78FAEF72C2D93075ECA64B5AD3E92348068C4DCB8CAD0BAD954A7D0" + + "4FCE3AFF94EF8CF282095DB75A25A4114F8F0203010001A3533051301D060355" + + "1D0E04160414FEDFD2558B95E705584A50008ED0D1683AEE840E301F0603551D" + + "23041830168014FEDFD2558B95E705584A50008ED0D1683AEE840E300F060355" + + "1D130101FF040530030101FF300D06092A864886F70D01010B05000382010100" + + "31C46689DB724A1A8D268EAA7139EFCF8A31496F15F325A19349547114D7992E" + + "AD5FA0BD6FFD5539B1639F0CF8F975C5E9EBED8A048289C782EC7E0342F339F5" + + "3E811CC6A6864173502388875964F0C50D84ABA9228DD2E3DDD3339374B76A68" + + "26F4F848A403ADDA2E095974232B084C8672B12C18D675D81ED8FA4B15A1C7AB" + + "C73F9CCB5BC25716EEB9D2C97F8EBCB9D4824FB23C7FBC78E1D3B9B1B3749F6C" + + "0981B2B6CC81DC723AA5CC589346DCECA222C78F68FE80563E12282F7DF936A1" + + "61163F86A9EADBA2E180A906DE73AEBEEA0775F6AB9AE97C71F26E187E3D8CB5" + + "0C8137663C99D440877D5A5E17DF9785976E9031DD96134A07899281B6B64E3F" + + "3182018C308201880201038014FEDFD2558B95E705584A50008ED0D1683AEE84" + + "0E300D06096086480165030402010500A04B301806092A864886F70D01090331" + + "0B06092A864886F70D010703302F06092A864886F70D01090431220420721982" + + "93FB9D3F0950E4AA4B5E6251B810C828B7EDC451D8C69252598FF5F198300D06" + + "092A864886F70D0101010500048201001AC20E7993C2D97C02753F4339B6737C" + + "506DD1D868A83F7745499FC1AD392B206F98269FB0738E5D2DF6F5A8BC370C91" + + "201A0A9136E9283D5B75FB3E865457182041F692357AFB5951E61E6D5AC55610" + + "AF06478CC7A3D730AF069D9BEA79730B6248A85A294E30B5E9EC62C3503D29D4" + + "7E1C0EF3D09E5A1ECF31970E2D6F18383910B5A1FDC668021861A6D58C3BF854" + + "81AD6E46179A67D794EE91EE21B09377BCAE76FD5CA9AA3A21D7C8A8A4BA01A6" + + "5CF29EF7633D02EEFDD5AC6B3D2278E58020917655D9181DDB45DBD1821D6DEC" + + "873FB39947E2D906C1D5F679F629B86904E8D49C227C4CAD63208255FF70FCFA" + + "86E68B1DCDD1AB59878ABFF66302C5DA").HexToByteArray(); + internal static readonly byte[] SignedCmsOverEnvelopedCms_IssuerSerial_NetFx = ( "3082047C06092A864886F70D010702A082046D30820469020101310B30090605" + "2B0E03021A05003082012406092A864886F70D010703A0820115308201110609" + diff --git a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignerInfoTests.cs b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignerInfoTests.cs index 466b258795ea15..06eb50be57c3ec 100644 --- a/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignerInfoTests.cs +++ b/src/libraries/System.Security.Cryptography.Pkcs/tests/SignedCms/SignerInfoTests.cs @@ -186,11 +186,11 @@ public static void CheckSignature_ThrowsOnNullStore() () => signer.CheckSignature(null, false)); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void CheckSignature_ExtraStore_IsAdditional() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); SignerInfo signer = cms.SignerInfos[0]; Assert.NotNull(signer.Certificate); @@ -299,12 +299,12 @@ public static void CheckSignature_ECDSA256SignedWithRSASha256HashIdentifier() signer.CheckSignature(true); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "NetFx bug in matching logic")] public static void RemoveCounterSignature_MatchesIssuerAndSerialNumber() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners); + cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners_Sha256); SignerInfo signerInfo = cms.SignerInfos[0]; SignerInfo counterSigner = signerInfo.CounterSignerInfos[1]; @@ -330,12 +330,12 @@ public static void RemoveCounterSignature_MatchesIssuerAndSerialNumber() cms.CheckHash(); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "NetFx bug in matching logic")] public static void RemoveCounterSignature_MatchesSubjectKeyIdentifier() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners); + cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners_Sha256); SignerInfo signerInfo = cms.SignerInfos[0]; SignerInfo counterSigner = signerInfo.CounterSignerInfos[0]; @@ -363,12 +363,12 @@ public static void RemoveCounterSignature_MatchesSubjectKeyIdentifier() cms.CheckHash(); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "NetFx bug in matching logic")] public static void RemoveCounterSignature_MatchesNoSignature() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1CounterSignedWithNoSignature); + cms.Decode(SignedDocuments.RsaPkcs1Sha256CounterSignedWithNoSignature); SignerInfo signerInfo = cms.SignerInfos[0]; SignerInfo counterSigner = signerInfo.CounterSignerInfos[0]; @@ -395,12 +395,12 @@ public static void RemoveCounterSignature_MatchesNoSignature() cms.CheckSignature(true); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "NetFx bug in matching logic")] public static void RemoveCounterSignature_UsesLiveState() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners); + cms.Decode(SignedDocuments.OneRsaSignerTwoRsaCounterSigners_Sha256); SignerInfo signerInfo = cms.SignerInfos[0]; SignerInfo counterSigner = signerInfo.CounterSignerInfos[0]; @@ -569,18 +569,18 @@ public static void RemoveCounterSignature_ByIndex_OnRemovedSigner() () => signer.RemoveCounterSignature(0)); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void AddCounterSigner_DuplicateCert_RSA() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); Assert.Single(cms.Certificates); SignerInfo firstSigner = cms.SignerInfos[0]; Assert.Empty(firstSigner.CounterSignerInfos); Assert.Empty(firstSigner.UnsignedAttributes); - using (X509Certificate2 signerCert = Certificates.RSAKeyTransferCapi1.TryGetCertificateWithPrivateKey()) + using (X509Certificate2 signerCert = Certificates.RSA2048Sha256KeyTransfer1.TryGetCertificateWithPrivateKey()) { CmsSigner signer = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, signerCert); firstSigner.ComputeCounterSignature(signer); @@ -615,7 +615,7 @@ public static void AddCounterSigner_DuplicateCert_RSA() cms.CheckSignature(true); } - [ConditionalTheory(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Theory] [InlineData(SubjectIdentifierType.IssuerAndSerialNumber)] [InlineData(SubjectIdentifierType.SubjectKeyIdentifier)] public static void AddCounterSigner_RSA(SubjectIdentifierType identifierType) @@ -676,14 +676,9 @@ public static void AddCounterSignerToUnsortedAttributeSignature() cms.CheckSignature(true); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [ConditionalFact(typeof(PlatformSupport), nameof(PlatformSupport.IsDSASupported))] public static void AddCounterSigner_DSA() { - if (!PlatformSupport.IsDSASupported) - { - throw new SkipTestException("Platform does not support DSA."); - } - AssertAddCounterSigner( SubjectIdentifierType.IssuerAndSerialNumber, signer => @@ -713,10 +708,8 @@ public static void AddCounterSigner_DSA() }); } - [ConditionalTheory(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Theory] [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] - [InlineData(SubjectIdentifierType.IssuerAndSerialNumber, Oids.Sha1)] - [InlineData(SubjectIdentifierType.SubjectKeyIdentifier, Oids.Sha1)] [InlineData(SubjectIdentifierType.IssuerAndSerialNumber, Oids.Sha256)] [InlineData(SubjectIdentifierType.SubjectKeyIdentifier, Oids.Sha256)] [InlineData(SubjectIdentifierType.IssuerAndSerialNumber, Oids.Sha384)] @@ -756,6 +749,15 @@ public static void AddCounterSigner_ECDSA(SubjectIdentifierType identifierType, }); } + [ConditionalTheory(typeof(SignatureSupport), nameof(SignatureSupport.SupportsEcdsaSha1Signatures))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] + [InlineData(SubjectIdentifierType.IssuerAndSerialNumber)] + [InlineData(SubjectIdentifierType.SubjectKeyIdentifier)] + public static void AddCounterSigner_ECDSA_Sha1(SubjectIdentifierType identifierType) + { + AddCounterSigner_ECDSA(identifierType, Oids.Sha1); + } + public static IEnumerable AddCounterSignerSlhDsaTestData => from sit in new[] { SubjectIdentifierType.IssuerAndSerialNumber, SubjectIdentifierType.SubjectKeyIdentifier } from algorithms in new (SlhDsaAlgorithm signAlgorithm, string hashAlgorithm)[] @@ -769,10 +771,7 @@ from SlhDsaTestData.SlhDsaGeneratedKeyInfo info in SlhDsaTestData.GeneratedKeyIn where info.Algorithm == algorithms.signAlgorithm // Find the matching test data for the algorithm select new object[] { sit, algorithms.hashAlgorithm, info }; - public static bool SlhDsaAndRsaSha1SignaturesSupported => - SignatureSupport.SupportsRsaSha1Signatures && SlhDsa.IsSupported; - - [ConditionalTheory(typeof(SignerInfoTests), nameof(SlhDsaAndRsaSha1SignaturesSupported))] + [ConditionalTheory(typeof(SlhDsa), nameof(SlhDsa.IsSupported))] [MemberData(nameof(AddCounterSignerSlhDsaTestData))] public static void AddCounterSigner_SlhDsa(SubjectIdentifierType identifierType, string digestOid, SlhDsaTestData.SlhDsaGeneratedKeyInfo info) { @@ -814,9 +813,7 @@ public static void AddCounterSigner_SlhDsa(SubjectIdentifierType identifierType, } select new object[] { sit, data.hashAlgorithm, data.algorithm }; - public static bool MLDsaAndRsaSha1SignaturesSupported => SignatureSupport.SupportsRsaSha1Signatures && MLDsa.IsSupported; - - [ConditionalTheory(typeof(SignerInfoTests), nameof(MLDsaAndRsaSha1SignaturesSupported))] + [ConditionalTheory(typeof(MLDsa), nameof(MLDsa.IsSupported))] [MemberData(nameof(AddCounterSignerMLDsaTestData))] public static void AddCounterSigner_MLDsa(SubjectIdentifierType identifierType, string digestOid, MLDsaAlgorithm algorithm) { @@ -869,7 +866,7 @@ private static void AssertAddCounterSigner( Action assertCounterSigner) { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); Assert.Single(cms.Certificates); SignerInfo firstSigner = cms.SignerInfos[0]; @@ -908,15 +905,15 @@ private static void AssertAddCounterSigner( assertCounterSigner(cms, counterSigner); } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void AddFirstCounterSigner_NoSignature_NoPrivateKey() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); SignerInfo firstSigner = cms.SignerInfos[0]; - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.GetCertificate()) + using (X509Certificate2 cert = Certificates.RSA2048Sha256KeyTransfer1.GetCertificate()) { Action sign = () => firstSigner.ComputeCounterSignature( @@ -941,18 +938,18 @@ public static void AddFirstCounterSigner_NoSignature_NoPrivateKey() } } - [ConditionalFact(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Fact] public static void AddFirstCounterSigner_NoSignature() { SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); SignerInfo firstSigner = cms.SignerInfos[0]; // A certificate shouldn't really be required here, but on .NET Framework // it will prompt for the counter-signer's certificate if it's null, // even if the signature type is NoSignature. - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.TryGetCertificateWithPrivateKey()) + using (X509Certificate2 cert = Certificates.RSA2048Sha256KeyTransfer1.TryGetCertificateWithPrivateKey()) { firstSigner.ComputeCounterSignature( new CmsSigner( @@ -991,7 +988,7 @@ public static void AddFirstCounterSigner_NoSignature() } } - [ConditionalTheory(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Theory] [InlineData(false)] [InlineData(true)] public static void AddSecondCounterSignature_NoSignature_WithCert(bool addExtraCert) @@ -999,7 +996,7 @@ public static void AddSecondCounterSignature_NoSignature_WithCert(bool addExtraC AddSecondCounterSignature_NoSignature(withCertificate: true, addExtraCert); } - [ConditionalTheory(typeof(SignatureSupport), nameof(SignatureSupport.SupportsRsaSha1Signatures))] + [Theory] // On .NET Framework it will prompt for the counter-signer's certificate if it's null, // even if the signature type is NoSignature, so don't run the test there. [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework)] @@ -1014,11 +1011,11 @@ private static void AddSecondCounterSignature_NoSignature(bool withCertificate, { X509Certificate2Collection certs; SignedCms cms = new SignedCms(); - cms.Decode(SignedDocuments.RsaPkcs1OneSignerIssuerAndSerialNumber); + cms.Decode(SignedDocuments.RsaPkcs1Sha256OneSignerIssuerAndSerialNumber); SignerInfo firstSigner = cms.SignerInfos[0]; - using (X509Certificate2 cert = Certificates.RSAKeyTransferCapi1.TryGetCertificateWithPrivateKey()) + using (X509Certificate2 cert = Certificates.RSA2048Sha256KeyTransfer1.TryGetCertificateWithPrivateKey()) using (X509Certificate2 cert2 = Certificates.DHKeyAgree1.GetCertificate()) { firstSigner.ComputeCounterSignature( @@ -1101,7 +1098,7 @@ private static void AddSecondCounterSignature_NoSignature(bool withCertificate, Assert.Equal(1, certs.Count); } - Assert.Equal("CN=RSAKeyTransferCapi1", certs[0].SubjectName.Name); + Assert.Equal("CN=RSA2048Sha256KeyTransfer1", certs[0].SubjectName.Name); } [Fact]