diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2022-06-28 11:01:05 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2022-06-28 11:01:05 +0700 |
commit | 18c67ac1339c9ca4f3604f5e5d44da0263b9ad21 (patch) | |
tree | 32fe34fa1251ddb8c5529d9a39a31a68641dd257 | |
parent | Generics migration in Bcpg, Bzip2, Cmp (diff) | |
download | BouncyCastle.NET-ed25519-18c67ac1339c9ca4f3604f5e5d44da0263b9ad21.tar.xz |
Generics migration in Cms
44 files changed, 646 insertions, 736 deletions
diff --git a/crypto/src/asn1/cms/AttributeTable.cs b/crypto/src/asn1/cms/AttributeTable.cs index aa312a13f..fc6d3cabc 100644 --- a/crypto/src/asn1/cms/AttributeTable.cs +++ b/crypto/src/asn1/cms/AttributeTable.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; -using Org.BouncyCastle.Utilities; - namespace Org.BouncyCastle.Asn1.Cms { public class AttributeTable @@ -180,14 +178,28 @@ namespace Org.BouncyCastle.Asn1.Cms return new Attributes(ToAsn1EncodableVector()); } - /** + public AttributeTable Add(params Attribute[] attributes) + { + if (attributes == null || attributes.Length < 1) + return this; + + var newTable = new AttributeTable(m_attributes); + foreach (Attribute attribute in attributes) + { + newTable.AddAttribute(attribute); + } + + return newTable; + } + + /** * Return a new table with the passed in attribute added. * * @param attrType * @param attrValue * @return */ - public AttributeTable Add(DerObjectIdentifier attrType, Asn1Encodable attrValue) + public AttributeTable Add(DerObjectIdentifier attrType, Asn1Encodable attrValue) { AttributeTable newTable = new AttributeTable(m_attributes); diff --git a/crypto/src/cmp/CertificateConfirmationContentBuilder.cs b/crypto/src/cmp/CertificateConfirmationContentBuilder.cs index 94f5eda8b..b0647f9a5 100644 --- a/crypto/src/cmp/CertificateConfirmationContentBuilder.cs +++ b/crypto/src/cmp/CertificateConfirmationContentBuilder.cs @@ -48,7 +48,7 @@ namespace Org.BouncyCastle.Cmp AlgorithmIdentifier algorithmIdentifier = sigAlgFinder.Find(cert.SigAlgName); - AlgorithmIdentifier digAlg = digestAlgFinder.find(algorithmIdentifier); + AlgorithmIdentifier digAlg = digestAlgFinder.Find(algorithmIdentifier); if (null == digAlg) throw new CmpException("cannot find algorithm for digest from signature"); diff --git a/crypto/src/cmp/CertificateStatus.cs b/crypto/src/cmp/CertificateStatus.cs index 0f1d9af9b..2e3afe3b6 100644 --- a/crypto/src/cmp/CertificateStatus.cs +++ b/crypto/src/cmp/CertificateStatus.cs @@ -36,7 +36,7 @@ namespace Org.BouncyCastle.Cmp public bool IsVerified(X509Certificate cert) { - AlgorithmIdentifier digAlg = digestAlgFinder.find(sigAlgFinder.Find(cert.SigAlgName)); + AlgorithmIdentifier digAlg = digestAlgFinder.Find(sigAlgFinder.Find(cert.SigAlgName)); if (null == digAlg) throw new CmpException("cannot find algorithm for digest from signature " + cert.SigAlgName); diff --git a/crypto/src/cms/CMSAttributeTableGenerator.cs b/crypto/src/cms/CMSAttributeTableGenerator.cs index 92c9a29d9..a113bd8d4 100644 --- a/crypto/src/cms/CMSAttributeTableGenerator.cs +++ b/crypto/src/cms/CMSAttributeTableGenerator.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections; +using System.Collections.Generic; using Org.BouncyCastle.Asn1.Cms; @@ -20,6 +19,6 @@ namespace Org.BouncyCastle.Cms public interface CmsAttributeTableGenerator { - AttributeTable GetAttributes(IDictionary parameters); + AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters); } } diff --git a/crypto/src/cms/CMSAuthEnvelopedData.cs b/crypto/src/cms/CMSAuthEnvelopedData.cs index d35e946ae..28a959b74 100644 --- a/crypto/src/cms/CMSAuthEnvelopedData.cs +++ b/crypto/src/cms/CMSAuthEnvelopedData.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; diff --git a/crypto/src/cms/CMSAuthenticatedData.cs b/crypto/src/cms/CMSAuthenticatedData.cs index 33b4cc22c..7fccad07d 100644 --- a/crypto/src/cms/CMSAuthenticatedData.cs +++ b/crypto/src/cms/CMSAuthenticatedData.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; diff --git a/crypto/src/cms/CMSAuthenticatedDataGenerator.cs b/crypto/src/cms/CMSAuthenticatedDataGenerator.cs index addd14c7d..9bfabe8b1 100644 --- a/crypto/src/cms/CMSAuthenticatedDataGenerator.cs +++ b/crypto/src/cms/CMSAuthenticatedDataGenerator.cs @@ -5,7 +5,6 @@ using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.IO; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; diff --git a/crypto/src/cms/CMSAuthenticatedDataParser.cs b/crypto/src/cms/CMSAuthenticatedDataParser.cs index 7defafc07..bfd613229 100644 --- a/crypto/src/cms/CMSAuthenticatedDataParser.cs +++ b/crypto/src/cms/CMSAuthenticatedDataParser.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; diff --git a/crypto/src/cms/CMSCompressedDataGenerator.cs b/crypto/src/cms/CMSCompressedDataGenerator.cs index d51de1026..bea04752a 100644 --- a/crypto/src/cms/CMSCompressedDataGenerator.cs +++ b/crypto/src/cms/CMSCompressedDataGenerator.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; diff --git a/crypto/src/cms/CMSCompressedDataParser.cs b/crypto/src/cms/CMSCompressedDataParser.cs index 93dfa1286..b107ff608 100644 --- a/crypto/src/cms/CMSCompressedDataParser.cs +++ b/crypto/src/cms/CMSCompressedDataParser.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; diff --git a/crypto/src/cms/CMSEnvelopedData.cs b/crypto/src/cms/CMSEnvelopedData.cs index 223d0ca73..8ecdcc8d7 100644 --- a/crypto/src/cms/CMSEnvelopedData.cs +++ b/crypto/src/cms/CMSEnvelopedData.cs @@ -1,12 +1,9 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Security; namespace Org.BouncyCastle.Cms { diff --git a/crypto/src/cms/CMSEnvelopedDataGenerator.cs b/crypto/src/cms/CMSEnvelopedDataGenerator.cs index c844ca6fa..d646480e0 100644 --- a/crypto/src/cms/CMSEnvelopedDataGenerator.cs +++ b/crypto/src/cms/CMSEnvelopedDataGenerator.cs @@ -1,22 +1,14 @@ -using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; -using Org.BouncyCastle.Asn1.Nist; -using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Asn1.X9; using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.IO; using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.Math; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities; -using Org.BouncyCastle.Utilities.Date; -using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms { @@ -124,7 +116,8 @@ namespace Org.BouncyCastle.Cms Asn1Set unprotectedAttrSet = null; if (unprotectedAttributeGenerator != null) { - Asn1.Cms.AttributeTable attrTable = unprotectedAttributeGenerator.GetAttributes(Platform.CreateHashtable()); + Asn1.Cms.AttributeTable attrTable = unprotectedAttributeGenerator.GetAttributes( + new Dictionary<CmsAttributeTableParameter, object>()); unprotectedAttrSet = new BerSet(attrTable.ToAsn1EncodableVector()); } @@ -212,7 +205,8 @@ namespace Org.BouncyCastle.Cms Asn1Set unprotectedAttrSet = null; if (unprotectedAttributeGenerator != null) { - Asn1.Cms.AttributeTable attrTable = unprotectedAttributeGenerator.GetAttributes(Platform.CreateHashtable()); + Asn1.Cms.AttributeTable attrTable = unprotectedAttributeGenerator.GetAttributes( + new Dictionary<CmsAttributeTableParameter, object>()); unprotectedAttrSet = new BerSet(attrTable.ToAsn1EncodableVector()); } diff --git a/crypto/src/cms/CMSEnvelopedDataParser.cs b/crypto/src/cms/CMSEnvelopedDataParser.cs index d5dfaf53d..d273ea648 100644 --- a/crypto/src/cms/CMSEnvelopedDataParser.cs +++ b/crypto/src/cms/CMSEnvelopedDataParser.cs @@ -1,11 +1,9 @@ using System; -using System.Collections; using System.IO; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Crypto; namespace Org.BouncyCastle.Cms { diff --git a/crypto/src/cms/CMSEnvelopedDataStreamGenerator.cs b/crypto/src/cms/CMSEnvelopedDataStreamGenerator.cs index c08b30787..261f67a15 100644 --- a/crypto/src/cms/CMSEnvelopedDataStreamGenerator.cs +++ b/crypto/src/cms/CMSEnvelopedDataStreamGenerator.cs @@ -1,21 +1,16 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; -using Org.BouncyCastle.Asn1.Nist; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Engines; -using Org.BouncyCastle.Crypto.Generators; using Org.BouncyCastle.Crypto.IO; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; -using Org.BouncyCastle.Security.Certificates; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.IO; -using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms { @@ -287,7 +282,8 @@ namespace Org.BouncyCastle.Cms if (_outer.unprotectedAttributeGenerator != null) { - Asn1.Cms.AttributeTable attrTable = _outer.unprotectedAttributeGenerator.GetAttributes(Platform.CreateHashtable()); + Asn1.Cms.AttributeTable attrTable = _outer.unprotectedAttributeGenerator.GetAttributes( + new Dictionary<CmsAttributeTableParameter, object>()); Asn1Set unprotectedAttrs = new BerSet(attrTable.ToAsn1EncodableVector()); diff --git a/crypto/src/cms/CMSEnvelopedGenerator.cs b/crypto/src/cms/CMSEnvelopedGenerator.cs index d7d3e4bbf..e0a94c4d3 100644 --- a/crypto/src/cms/CMSEnvelopedGenerator.cs +++ b/crypto/src/cms/CMSEnvelopedGenerator.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; @@ -13,7 +13,6 @@ using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Operators; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; -using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms @@ -100,7 +99,7 @@ namespace Org.BouncyCastle.Cms public static readonly string ECDHSha1Kdf = X9ObjectIdentifiers.DHSinglePassStdDHSha1KdfScheme.Id; public static readonly string ECMqvSha1Kdf = X9ObjectIdentifiers.MqvSinglePassSha1KdfScheme.Id; - internal readonly IList recipientInfoGenerators = Platform.CreateArrayList(); + internal readonly IList<RecipientInfoGenerator> recipientInfoGenerators = new List<RecipientInfoGenerator>(); internal readonly SecureRandom rand; internal CmsAttributeTableGenerator unprotectedAttributeGenerator = null; @@ -216,7 +215,7 @@ namespace Org.BouncyCastle.Cms X509Certificate recipientCert, string cekWrapAlgorithm) { - IList recipientCerts = Platform.CreateArrayList(1); + var recipientCerts = new List<X509Certificate>(1); recipientCerts.Add(recipientCert); AddKeyAgreementRecipients(agreementAlgorithm, senderPrivateKey, senderPublicKey, @@ -238,7 +237,7 @@ namespace Org.BouncyCastle.Cms string agreementAlgorithm, AsymmetricKeyParameter senderPrivateKey, AsymmetricKeyParameter senderPublicKey, - ICollection recipientCerts, + IEnumerable<X509Certificate> recipientCerts, string cekWrapAlgorithm) { if (!senderPrivateKey.IsPrivate) @@ -254,7 +253,7 @@ namespace Org.BouncyCastle.Cms KeyAgreeRecipientInfoGenerator karig = new KeyAgreeRecipientInfoGenerator(); karig.KeyAgreementOID = new DerObjectIdentifier(agreementAlgorithm); karig.KeyEncryptionOID = new DerObjectIdentifier(cekWrapAlgorithm); - karig.RecipientCerts = recipientCerts; + karig.RecipientCerts = new List<X509Certificate>(recipientCerts); karig.SenderKeyPair = new AsymmetricCipherKeyPair(senderPublicKey, senderPrivateKey); recipientInfoGenerators.Add(karig); diff --git a/crypto/src/cms/CMSEnvelopedHelper.cs b/crypto/src/cms/CMSEnvelopedHelper.cs index 930ffcbf1..91f5ab910 100644 --- a/crypto/src/cms/CMSEnvelopedHelper.cs +++ b/crypto/src/cms/CMSEnvelopedHelper.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; @@ -9,7 +9,6 @@ using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.IO; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; -using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.IO; namespace Org.BouncyCastle.Cms @@ -18,8 +17,8 @@ namespace Org.BouncyCastle.Cms { internal static readonly CmsEnvelopedHelper Instance = new CmsEnvelopedHelper(); - private static readonly IDictionary KeySizes = Platform.CreateHashtable(); - private static readonly IDictionary BaseCipherNames = Platform.CreateHashtable(); + private static readonly IDictionary<string, int> KeySizes = new Dictionary<string, int>(); + private static readonly IDictionary<string, string> BaseCipherNames = new Dictionary<string, string>(); static CmsEnvelopedHelper() { @@ -76,35 +75,32 @@ namespace Org.BouncyCastle.Cms } } - internal string GetRfc3211WrapperName( - string oid) + internal string GetRfc3211WrapperName(string oid) { if (oid == null) - throw new ArgumentNullException("oid"); + throw new ArgumentNullException(nameof(oid)); - string alg = (string) BaseCipherNames[oid]; - - if (alg == null) - throw new ArgumentException("no name for " + oid, "oid"); + if (!BaseCipherNames.TryGetValue(oid, out var alg)) + throw new ArgumentException("no name for " + oid, nameof(oid)); return alg + "RFC3211Wrap"; } - internal int GetKeySize( - string oid) + internal int GetKeySize(string oid) { - if (!KeySizes.Contains(oid)) - { + if (oid == null) + throw new ArgumentNullException(nameof(oid)); + + if (!KeySizes.TryGetValue(oid, out var keySize)) throw new ArgumentException("no keysize for " + oid, "oid"); - } - return (int) KeySizes[oid]; + return keySize; } internal static RecipientInformationStore BuildRecipientInformationStore( Asn1Set recipientInfos, CmsSecureReadable secureReadable) { - IList infos = Platform.CreateArrayList(); + var infos = new List<RecipientInformation>(); for (int i = 0; i != recipientInfos.Count; i++) { RecipientInfo info = RecipientInfo.GetInstance(recipientInfos[i]); @@ -114,8 +110,8 @@ namespace Org.BouncyCastle.Cms return new RecipientInformationStore(infos); } - private static void ReadRecipientInfo( - IList infos, RecipientInfo info, CmsSecureReadable secureReadable) + private static void ReadRecipientInfo(IList<RecipientInformation> infos, RecipientInfo info, + CmsSecureReadable secureReadable) { Asn1Encodable recipInfo = info.Info; if (recipInfo is KeyTransRecipientInfo) diff --git a/crypto/src/cms/CMSProcessableByteArray.cs b/crypto/src/cms/CMSProcessableByteArray.cs index c0dd661f2..574fb5f19 100644 --- a/crypto/src/cms/CMSProcessableByteArray.cs +++ b/crypto/src/cms/CMSProcessableByteArray.cs @@ -1,5 +1,6 @@ using System; using System.IO; + using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; diff --git a/crypto/src/cms/CMSSignedData.cs b/crypto/src/cms/CMSSignedData.cs index fdf1206a4..3d4ce05a6 100644 --- a/crypto/src/cms/CMSSignedData.cs +++ b/crypto/src/cms/CMSSignedData.cs @@ -1,11 +1,9 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; -using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.X509; @@ -42,10 +40,9 @@ namespace Org.BouncyCastle.Cms private SignedData signedData; private ContentInfo contentInfo; private SignerInformationStore signerInfoStore; - private IDictionary hashes; + private IDictionary<string, byte[]> m_hashes; - private CmsSignedData( - CmsSignedData c) + private CmsSignedData(CmsSignedData c) { this.signedData = c.signedData; this.contentInfo = c.contentInfo; @@ -53,15 +50,12 @@ namespace Org.BouncyCastle.Cms this.signerInfoStore = c.signerInfoStore; } - public CmsSignedData( - byte[] sigBlock) + public CmsSignedData(byte[] sigBlock) : this(CmsUtilities.ReadContentInfo(new MemoryStream(sigBlock, false))) { } - public CmsSignedData( - CmsProcessable signedContent, - byte[] sigBlock) + public CmsSignedData(CmsProcessable signedContent, byte[] sigBlock) : this(signedContent, CmsUtilities.ReadContentInfo(new MemoryStream(sigBlock, false))) { } @@ -72,9 +66,7 @@ namespace Org.BouncyCastle.Cms * @param hashes a map of precomputed digests for content indexed by name of hash. * @param sigBlock the signature object. */ - public CmsSignedData( - IDictionary hashes, - byte[] sigBlock) + public CmsSignedData(IDictionary<string, byte[]> hashes, byte[] sigBlock) : this(hashes, CmsUtilities.ReadContentInfo(sigBlock)) { } @@ -85,9 +77,7 @@ namespace Org.BouncyCastle.Cms * @param signedContent the content that was signed. * @param sigData the signature object. */ - public CmsSignedData( - CmsProcessable signedContent, - Stream sigData) + public CmsSignedData(CmsProcessable signedContent, Stream sigData) : this(signedContent, CmsUtilities.ReadContentInfo(sigData)) { } @@ -95,32 +85,26 @@ namespace Org.BouncyCastle.Cms /** * base constructor - with encapsulated content */ - public CmsSignedData( - Stream sigData) + public CmsSignedData(Stream sigData) : this(CmsUtilities.ReadContentInfo(sigData)) { } - public CmsSignedData( - CmsProcessable signedContent, - ContentInfo sigData) + public CmsSignedData(CmsProcessable signedContent, ContentInfo sigData) { this.signedContent = signedContent; this.contentInfo = sigData; this.signedData = SignedData.GetInstance(contentInfo.Content); } - public CmsSignedData( - IDictionary hashes, - ContentInfo sigData) + public CmsSignedData(IDictionary<string, byte[]> hashes, ContentInfo sigData) { - this.hashes = hashes; + this.m_hashes = hashes; this.contentInfo = sigData; this.signedData = SignedData.GetInstance(contentInfo.Content); } - public CmsSignedData( - ContentInfo sigData) + public CmsSignedData(ContentInfo sigData) { this.contentInfo = sigData; this.signedData = SignedData.GetInstance(contentInfo.Content); @@ -154,7 +138,7 @@ namespace Org.BouncyCastle.Cms { if (signerInfoStore == null) { - IList signerInfos = Platform.CreateArrayList(); + var signerInfos = new List<SignerInformation>(); Asn1Set s = signedData.SignerInfos; foreach (object obj in s) @@ -162,16 +146,18 @@ namespace Org.BouncyCastle.Cms SignerInfo info = SignerInfo.GetInstance(obj); DerObjectIdentifier contentType = signedData.EncapContentInfo.ContentType; - if (hashes == null) + if (m_hashes == null) { signerInfos.Add(new SignerInformation(info, contentType, signedContent, null)); } - else + else if (m_hashes.TryGetValue(info.DigestAlgorithm.Algorithm.Id, out var hash)) { - byte[] hash = (byte[])hashes[info.DigestAlgorithm.Algorithm.Id]; - signerInfos.Add(new SignerInformation(info, contentType, null, new BaseDigestCalculator(hash))); } + else + { + throw new InvalidOperationException(); + } } signerInfoStore = new SignerInformationStore(signerInfos); diff --git a/crypto/src/cms/CMSSignedDataGenerator.cs b/crypto/src/cms/CMSSignedDataGenerator.cs index 3db000896..596c6a130 100644 --- a/crypto/src/cms/CMSSignedDataGenerator.cs +++ b/crypto/src/cms/CMSSignedDataGenerator.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; @@ -38,13 +38,13 @@ namespace Org.BouncyCastle.Cms { private static readonly CmsSignedHelper Helper = CmsSignedHelper.Instance; - private readonly IList signerInfs = Platform.CreateArrayList(); + private readonly IList<SignerInf> signerInfs = new List<SignerInf>(); private class SignerInf { private readonly CmsSignedGenerator outer; - private readonly ISignatureFactory sigCalc; + private readonly ISignatureFactory sigCalc; private readonly SignerIdentifier signerIdentifier; private readonly string digestOID; private readonly string encOID; @@ -87,7 +87,8 @@ namespace Org.BouncyCastle.Cms this.outer = outer; this.sigCalc = sigCalc; this.signerIdentifier = signerIdentifier; - this.digestOID = new DefaultDigestAlgorithmIdentifierFinder().find((AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id; + this.digestOID = new DefaultDigestAlgorithmIdentifierFinder().Find( + (AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id; this.encOID = ((AlgorithmIdentifier)sigCalc.AlgorithmDetails).Algorithm.Id; this.sAttr = sAttr; this.unsAttr = unsAttr; @@ -118,13 +119,8 @@ namespace Org.BouncyCastle.Cms string digestName = Helper.GetDigestAlgName(digestOID); string signatureName = digestName + "with" + Helper.GetEncryptionAlgName(encOID); - - byte[] hash; - if (outer._digests.Contains(digestOID)) - { - hash = (byte[])outer._digests[digestOID]; - } - else + + if (!outer.m_digests.TryGetValue(digestOID, out var hash)) { IDigest dig = Helper.GetDigestInstance(digestName); if (content != null) @@ -132,7 +128,7 @@ namespace Org.BouncyCastle.Cms content.Write(new DigestSink(dig)); } hash = DigestUtilities.DoFinal(dig); - outer._digests.Add(digestOID, hash.Clone()); + outer.m_digests.Add(digestOID, (byte[])hash.Clone()); } IStreamCalculator calculator = sigCalc.CreateCalculator(); @@ -141,7 +137,7 @@ namespace Org.BouncyCastle.Cms Asn1Set signedAttr = null; if (sAttr != null) { - IDictionary parameters = outer.GetBaseParameters(contentType, digAlgId, hash); + var parameters = outer.GetBaseParameters(contentType, digAlgId, hash); // Asn1.Cms.AttributeTable signed = sAttr.GetAttributes(Collections.unmodifiableMap(parameters)); Asn1.Cms.AttributeTable signed = sAttr.GetAttributes(parameters); @@ -173,7 +169,7 @@ namespace Org.BouncyCastle.Cms Asn1Set unsignedAttr = null; if (unsAttr != null) { - IDictionary baseParameters = outer.GetBaseParameters(contentType, digAlgId, hash); + var baseParameters = outer.GetBaseParameters(contentType, digAlgId, hash); baseParameters[CmsAttributeTableParameter.Signature] = sigBytes.Clone(); // Asn1.Cms.AttributeTable unsigned = unsAttr.GetAttributes(Collections.unmodifiableMap(baseParameters)); @@ -456,7 +452,7 @@ namespace Org.BouncyCastle.Cms Asn1EncodableVector digestAlgs = new Asn1EncodableVector(); Asn1EncodableVector signerInfos = new Asn1EncodableVector(); - _digests.Clear(); // clear the current preserved digest state + m_digests.Clear(); // clear the current preserved digest state // // add the precalculated SignerInfo objects. diff --git a/crypto/src/cms/CMSSignedDataParser.cs b/crypto/src/cms/CMSSignedDataParser.cs index fd65576ac..78e29e6a3 100644 --- a/crypto/src/cms/CMSSignedDataParser.cs +++ b/crypto/src/cms/CMSSignedDataParser.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; @@ -62,7 +61,7 @@ namespace Org.BouncyCastle.Cms private SignedDataParser _signedData; private DerObjectIdentifier _signedContentType; private CmsTypedStream _signedContent; - private IDictionary _digests; + private IDictionary<string, IDigest> m_digests; private HashSet<string> _digestOids; private SignerInformationStore _signerInfoStore; @@ -106,7 +105,7 @@ namespace Org.BouncyCastle.Cms { this._signedContent = signedContent; this._signedData = SignedDataParser.GetInstance(this.contentInfo.GetContent(Asn1Tags.Sequence)); - this._digests = Platform.CreateHashtable(); + this.m_digests = new Dictionary<string, IDigest>(StringComparer.OrdinalIgnoreCase); this._digestOids = new HashSet<string>(); Asn1SetParser digAlgs = _signedData.GetDigestAlgorithms(); @@ -121,9 +120,9 @@ namespace Org.BouncyCastle.Cms string digestOid = id.Algorithm.Id; string digestName = Helper.GetDigestAlgName(digestOid); - if (!this._digests.Contains(digestName)) + if (!this.m_digests.ContainsKey(digestName)) { - this._digests[digestName] = Helper.GetDigestInstance(digestName); + this.m_digests[digestName] = Helper.GetDigestInstance(digestName); this._digestOids.Add(digestOid); } } @@ -194,13 +193,12 @@ namespace Org.BouncyCastle.Cms { PopulateCertCrlSets(); - IList signerInfos = Platform.CreateArrayList(); - IDictionary hashes = Platform.CreateHashtable(); + var signerInfos = new List<SignerInformation>(); + var hashes = new Dictionary<string, byte[]>(StringComparer.OrdinalIgnoreCase); - foreach (object digestKey in _digests.Keys) + foreach (var digest in m_digests) { - hashes[digestKey] = DigestUtilities.DoFinal( - (IDigest)_digests[digestKey]); + hashes[digest.Key] = DigestUtilities.DoFinal(digest.Value); } try @@ -211,10 +209,9 @@ namespace Org.BouncyCastle.Cms while ((o = s.ReadObject()) != null) { SignerInfo info = SignerInfo.GetInstance(o.ToAsn1Object()); - string digestName = Helper.GetDigestAlgName( - info.DigestAlgorithm.Algorithm.Id); + string digestName = Helper.GetDigestAlgName(info.DigestAlgorithm.Algorithm.Id); - byte[] hash = (byte[]) hashes[digestName]; + byte[] hash = hashes[digestName]; signerInfos.Add(new SignerInformation(info, _signedContentType, null, new BaseDigestCalculator(hash))); } @@ -315,7 +312,7 @@ namespace Org.BouncyCastle.Cms Stream digStream = _signedContent.ContentStream; - foreach (IDigest digest in _digests.Values) + foreach (var digest in m_digests.Values) { digStream = new DigestStream(digStream, digest, null); } diff --git a/crypto/src/cms/CMSSignedDataStreamGenerator.cs b/crypto/src/cms/CMSSignedDataStreamGenerator.cs index 91a8b4a43..0dbdccbeb 100644 --- a/crypto/src/cms/CMSSignedDataStreamGenerator.cs +++ b/crypto/src/cms/CMSSignedDataStreamGenerator.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; @@ -41,10 +40,13 @@ namespace Org.BouncyCastle.Cms { private static readonly CmsSignedHelper Helper = CmsSignedHelper.Instance; - private readonly IList _signerInfs = Platform.CreateArrayList(); + private readonly IList<DigestAndSignerInfoGeneratorHolder> _signerInfs = + new List<DigestAndSignerInfoGeneratorHolder>(); private readonly HashSet<string> _messageDigestOids = new HashSet<string>(); - private readonly IDictionary _messageDigests = Platform.CreateHashtable(); - private readonly IDictionary _messageHashes = Platform.CreateHashtable(); + private readonly IDictionary<string, IDigest> m_messageDigests = + new Dictionary<string, IDigest>(StringComparer.OrdinalIgnoreCase); + private readonly IDictionary<string, byte[]> m_messageHashes = + new Dictionary<string, byte[]>(StringComparer.OrdinalIgnoreCase); private bool _messageDigestsLocked; private int _bufferSize; @@ -165,7 +167,7 @@ namespace Org.BouncyCastle.Cms Asn1Set signedAttr = null; if (_sAttr != null) { - IDictionary parameters = outer.GetBaseParameters(contentType, digestAlgorithm, calculatedDigest); + var parameters = outer.GetBaseParameters(contentType, digestAlgorithm, calculatedDigest); // Asn1.Cms.AttributeTable signed = _sAttr.GetAttributes(Collections.unmodifiableMap(parameters)); Asn1.Cms.AttributeTable signed = _sAttr.GetAttributes(parameters); @@ -199,8 +201,7 @@ namespace Org.BouncyCastle.Cms Asn1Set unsignedAttr = null; if (_unsAttr != null) { - IDictionary parameters = outer.GetBaseParameters( - contentType, digestAlgorithm, calculatedDigest); + var parameters = outer.GetBaseParameters(contentType, digestAlgorithm, calculatedDigest); parameters[CmsAttributeTableParameter.Signature] = sigBytes.Clone(); // Asn1.Cms.AttributeTable unsigned = _unsAttr.getAttributes(Collections.unmodifiableMap(parameters)); @@ -245,20 +246,20 @@ namespace Org.BouncyCastle.Cms * * @param bufferSize length of octet strings to buffer the data. */ - public void SetBufferSize( - int bufferSize) + public void SetBufferSize(int bufferSize) { _bufferSize = bufferSize; } - public void AddDigests( - params string[] digestOids) + public void AddDigests(params string[] digestOids) { - AddDigests((IEnumerable) digestOids); + foreach (string digestOid in digestOids) + { + ConfigureDigest(digestOid); + } } - public void AddDigests( - IEnumerable digestOids) + public void AddDigests(IEnumerable<string> digestOids) { foreach (string digestOid in digestOids) { @@ -579,7 +580,7 @@ namespace Org.BouncyCastle.Cms Stream teeStream = GetSafeTeeOutputStream(dataOutputStream, encapStream); // Let all the digests see the data as it is written - Stream digStream = AttachDigestsToOutputStream(_messageDigests.Values, teeStream); + Stream digStream = AttachDigestsToOutputStream(m_messageDigests.Values, teeStream); return new CmsSignedDataOutputStream(this, digStream, signedContentType, sGen, sigGen, eiGen); } @@ -598,20 +599,18 @@ namespace Org.BouncyCastle.Cms } } - private void ConfigureDigest( - string digestOid) + private void ConfigureDigest(string digestOid) { RegisterDigestOid(digestOid); string digestName = Helper.GetDigestAlgName(digestOid); - IDigest dig = (IDigest)_messageDigests[digestName]; - if (dig == null) + + if (!m_messageDigests.ContainsKey(digestName)) { if (_messageDigestsLocked) throw new InvalidOperationException("Cannot configure new digests after the data stream is opened"); - dig = Helper.GetDigestInstance(digestName); - _messageDigests[digestName] = dig; + m_messageDigests[digestName] = Helper.GetDigestInstance(digestName); } } @@ -717,23 +716,20 @@ namespace Org.BouncyCastle.Cms return new DerInteger(1); } - private bool CheckForVersion3( - IList signerInfos) + private bool CheckForVersion3(IList<SignerInformation> signerInfos) { foreach (SignerInformation si in signerInfos) { SignerInfo s = SignerInfo.GetInstance(si.ToSignerInfo()); if (s.Version.IntValueExact == 3) - { return true; - } } return false; } - private static Stream AttachDigestsToOutputStream(ICollection digests, Stream s) + private static Stream AttachDigestsToOutputStream(IEnumerable<IDigest> digests, Stream s) { Stream result = s; foreach (IDigest digest in digests) @@ -822,7 +818,7 @@ namespace Org.BouncyCastle.Cms _eiGen.Close(); - outer._digests.Clear(); // clear the current preserved digest state + outer.m_digests.Clear(); // clear the current preserved digest state if (outer._certs.Count > 0) { @@ -845,9 +841,9 @@ namespace Org.BouncyCastle.Cms // // Calculate the digest hashes // - foreach (DictionaryEntry de in outer._messageDigests) + foreach (var de in outer.m_messageDigests) { - outer._messageHashes.Add(de.Key, DigestUtilities.DoFinal((IDigest)de.Value)); + outer.m_messageHashes.Add(de.Key, DigestUtilities.DoFinal(de.Value)); } // TODO If the digest OIDs for precalculated signers weren't mixed in with @@ -866,9 +862,9 @@ namespace Org.BouncyCastle.Cms { AlgorithmIdentifier digestAlgorithm = holder.DigestAlgorithm; - byte[] calculatedDigest = (byte[])outer._messageHashes[ + byte[] calculatedDigest = outer.m_messageHashes[ Helper.GetDigestAlgName(holder.digestOID)]; - outer._digests[holder.digestOID] = calculatedDigest.Clone(); + outer.m_digests[holder.digestOID] = (byte[])calculatedDigest.Clone(); signerInfos.Add(holder.signerInf.Generate(_contentOID, digestAlgorithm, calculatedDigest)); } diff --git a/crypto/src/cms/CMSSignedGenerator.cs b/crypto/src/cms/CMSSignedGenerator.cs index acd353969..58f66f214 100644 --- a/crypto/src/cms/CMSSignedGenerator.cs +++ b/crypto/src/cms/CMSSignedGenerator.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using Org.BouncyCastle.Asn1; @@ -17,7 +16,6 @@ using Org.BouncyCastle.Asn1.TeleTrust; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Asn1.X9; using Org.BouncyCastle.Security; -using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.X509; @@ -25,11 +23,14 @@ namespace Org.BouncyCastle.Cms { public class DefaultSignatureAlgorithmIdentifierFinder { - private static readonly IDictionary algorithms = Platform.CreateHashtable(); + private static readonly IDictionary<string, DerObjectIdentifier> m_algorithms = + new Dictionary<string, DerObjectIdentifier>(StringComparer.OrdinalIgnoreCase); private static readonly HashSet<DerObjectIdentifier> noParams = new HashSet<DerObjectIdentifier>(); - private static readonly IDictionary _params = Platform.CreateHashtable(); + private static readonly IDictionary<string, Asn1Encodable> m_params = + new Dictionary<string, Asn1Encodable>(StringComparer.OrdinalIgnoreCase); private static readonly HashSet<DerObjectIdentifier> pkcs15RsaEncryption = new HashSet<DerObjectIdentifier>(); - private static readonly IDictionary digestOids = Platform.CreateHashtable(); + private static readonly IDictionary<DerObjectIdentifier, DerObjectIdentifier> m_digestOids = + new Dictionary<DerObjectIdentifier, DerObjectIdentifier>(); //private static readonly DerObjectIdentifier ENCRYPTION_RSA = PkcsObjectIdentifiers.RsaEncryption; //private static readonly DerObjectIdentifier ENCRYPTION_DSA = X9ObjectIdentifiers.IdDsaWithSha1; @@ -42,123 +43,123 @@ namespace Org.BouncyCastle.Cms static DefaultSignatureAlgorithmIdentifierFinder() { - algorithms["MD2WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD2WithRsaEncryption; - algorithms["MD2WITHRSA"] = PkcsObjectIdentifiers.MD2WithRsaEncryption; - algorithms["MD5WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD5WithRsaEncryption; - algorithms["MD5WITHRSA"] = PkcsObjectIdentifiers.MD5WithRsaEncryption; - algorithms["SHA1WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; - algorithms["SHA-1WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; - algorithms["SHA1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; - algorithms["SHA-1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; - algorithms["SHA224WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; - algorithms["SHA-224WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; - algorithms["SHA224WITHRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; - algorithms["SHA-224WITHRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; - algorithms["SHA256WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; - algorithms["SHA-256WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; - algorithms["SHA256WITHRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; - algorithms["SHA-256WITHRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; - algorithms["SHA384WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; - algorithms["SHA-384WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; - algorithms["SHA384WITHRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; - algorithms["SHA-384WITHRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; - algorithms["SHA512WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; - algorithms["SHA-512WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; - algorithms["SHA512WITHRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; - algorithms["SHA-512WITHRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; - algorithms["SHA512(224)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; - algorithms["SHA-512(224)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; - algorithms["SHA512(224)WITHRSA"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; - algorithms["SHA-512(224)WITHRSA"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; - algorithms["SHA512(256)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; - algorithms["SHA-512(256)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; - algorithms["SHA512(256)WITHRSA"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; - algorithms["SHA-512(256)WITHRSA"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; - algorithms["SHA1WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA3-224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA3-256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA3-384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["SHA3-512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; - algorithms["RIPEMD160WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160; - algorithms["RIPEMD160WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160; - algorithms["RIPEMD128WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128; - algorithms["RIPEMD128WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128; - algorithms["RIPEMD256WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256; - algorithms["RIPEMD256WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256; - algorithms["SHA1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1; - algorithms["SHA-1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1; - algorithms["DSAWITHSHA1"] = X9ObjectIdentifiers.IdDsaWithSha1; - algorithms["SHA224WITHDSA"] = NistObjectIdentifiers.DsaWithSha224; - algorithms["SHA256WITHDSA"] = NistObjectIdentifiers.DsaWithSha256; - algorithms["SHA384WITHDSA"] = NistObjectIdentifiers.DsaWithSha384; - algorithms["SHA512WITHDSA"] = NistObjectIdentifiers.DsaWithSha512; - algorithms["SHA3-224WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_224; - algorithms["SHA3-256WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_256; - algorithms["SHA3-384WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_384; - algorithms["SHA3-512WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_512; - algorithms["SHA3-224WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_224; - algorithms["SHA3-256WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_256; - algorithms["SHA3-384WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_384; - algorithms["SHA3-512WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_512; - algorithms["SHA3-224WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224; - algorithms["SHA3-256WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256; - algorithms["SHA3-384WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384; - algorithms["SHA3-512WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512; - algorithms["SHA3-224WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224; - algorithms["SHA3-256WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256; - algorithms["SHA3-384WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384; - algorithms["SHA3-512WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512; - algorithms["SHA1WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha1; - algorithms["ECDSAWITHSHA1"] = X9ObjectIdentifiers.ECDsaWithSha1; - algorithms["SHA224WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224; - algorithms["SHA256WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha256; - algorithms["SHA384WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha384; - algorithms["SHA512WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha512; - - - algorithms["GOST3411WITHGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94; - algorithms["GOST3411WITHGOST3410-94"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94; - algorithms["GOST3411WITHECGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001; - algorithms["GOST3411WITHECGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001; - algorithms["GOST3411WITHGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001; - algorithms["GOST3411WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; - algorithms["GOST3411WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; - algorithms["GOST3411WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; - algorithms["GOST3411WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; - algorithms["GOST3411-2012-256WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; - algorithms["GOST3411-2012-512WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; - algorithms["GOST3411-2012-256WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; - algorithms["GOST3411-2012-512WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; - algorithms["SHA1WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA1; - algorithms["SHA224WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA224; - algorithms["SHA256WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA256; - algorithms["SHA384WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA384; - algorithms["SHA512WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA512; - algorithms["RIPEMD160WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_RIPEMD160; - algorithms["SHA1WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_1; - algorithms["SHA224WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_224; - algorithms["SHA256WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_256; - algorithms["SHA384WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_384; - algorithms["SHA512WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_512; - algorithms["SHA3-512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA3_512; - algorithms["SHA512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA512; - - algorithms["SHA256WITHSM2"] = GMObjectIdentifiers.sm2sign_with_sha256; - algorithms["SM3WITHSM2"] = GMObjectIdentifiers.sm2sign_with_sm3; - - algorithms["SHA256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA256; - algorithms["SHA512WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA512; - algorithms["SHAKE128WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE128; - algorithms["SHAKE256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE256; - - algorithms["SHA256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA256; - algorithms["SHA512WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA512; - algorithms["SHAKE128WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE128; - algorithms["SHAKE256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE256; + m_algorithms["MD2WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD2WithRsaEncryption; + m_algorithms["MD2WITHRSA"] = PkcsObjectIdentifiers.MD2WithRsaEncryption; + m_algorithms["MD5WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.MD5WithRsaEncryption; + m_algorithms["MD5WITHRSA"] = PkcsObjectIdentifiers.MD5WithRsaEncryption; + m_algorithms["SHA1WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; + m_algorithms["SHA-1WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; + m_algorithms["SHA1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; + m_algorithms["SHA-1WITHRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption; + m_algorithms["SHA224WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; + m_algorithms["SHA-224WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; + m_algorithms["SHA224WITHRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; + m_algorithms["SHA-224WITHRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption; + m_algorithms["SHA256WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; + m_algorithms["SHA-256WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; + m_algorithms["SHA256WITHRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; + m_algorithms["SHA-256WITHRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption; + m_algorithms["SHA384WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; + m_algorithms["SHA-384WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; + m_algorithms["SHA384WITHRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; + m_algorithms["SHA-384WITHRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption; + m_algorithms["SHA512WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; + m_algorithms["SHA-512WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; + m_algorithms["SHA512WITHRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; + m_algorithms["SHA-512WITHRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption; + m_algorithms["SHA512(224)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; + m_algorithms["SHA-512(224)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; + m_algorithms["SHA512(224)WITHRSA"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; + m_algorithms["SHA-512(224)WITHRSA"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption; + m_algorithms["SHA512(256)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; + m_algorithms["SHA-512(256)WITHRSAENCRYPTION"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; + m_algorithms["SHA512(256)WITHRSA"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; + m_algorithms["SHA-512(256)WITHRSA"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption; + m_algorithms["SHA1WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA3-224WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA3-256WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA3-384WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["SHA3-512WITHRSAANDMGF1"] = PkcsObjectIdentifiers.IdRsassaPss; + m_algorithms["RIPEMD160WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160; + m_algorithms["RIPEMD160WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160; + m_algorithms["RIPEMD128WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128; + m_algorithms["RIPEMD128WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128; + m_algorithms["RIPEMD256WITHRSAENCRYPTION"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256; + m_algorithms["RIPEMD256WITHRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256; + m_algorithms["SHA1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1; + m_algorithms["SHA-1WITHDSA"] = X9ObjectIdentifiers.IdDsaWithSha1; + m_algorithms["DSAWITHSHA1"] = X9ObjectIdentifiers.IdDsaWithSha1; + m_algorithms["SHA224WITHDSA"] = NistObjectIdentifiers.DsaWithSha224; + m_algorithms["SHA256WITHDSA"] = NistObjectIdentifiers.DsaWithSha256; + m_algorithms["SHA384WITHDSA"] = NistObjectIdentifiers.DsaWithSha384; + m_algorithms["SHA512WITHDSA"] = NistObjectIdentifiers.DsaWithSha512; + m_algorithms["SHA3-224WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_224; + m_algorithms["SHA3-256WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_256; + m_algorithms["SHA3-384WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_384; + m_algorithms["SHA3-512WITHDSA"] = NistObjectIdentifiers.IdDsaWithSha3_512; + m_algorithms["SHA3-224WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_224; + m_algorithms["SHA3-256WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_256; + m_algorithms["SHA3-384WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_384; + m_algorithms["SHA3-512WITHECDSA"] = NistObjectIdentifiers.IdEcdsaWithSha3_512; + m_algorithms["SHA3-224WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224; + m_algorithms["SHA3-256WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256; + m_algorithms["SHA3-384WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384; + m_algorithms["SHA3-512WITHRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512; + m_algorithms["SHA3-224WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224; + m_algorithms["SHA3-256WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256; + m_algorithms["SHA3-384WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384; + m_algorithms["SHA3-512WITHRSAENCRYPTION"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512; + m_algorithms["SHA1WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha1; + m_algorithms["ECDSAWITHSHA1"] = X9ObjectIdentifiers.ECDsaWithSha1; + m_algorithms["SHA224WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224; + m_algorithms["SHA256WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha256; + m_algorithms["SHA384WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha384; + m_algorithms["SHA512WITHECDSA"] = X9ObjectIdentifiers.ECDsaWithSha512; + + + m_algorithms["GOST3411WITHGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94; + m_algorithms["GOST3411WITHGOST3410-94"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94; + m_algorithms["GOST3411WITHECGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001; + m_algorithms["GOST3411WITHECGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001; + m_algorithms["GOST3411WITHGOST3410-2001"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001; + m_algorithms["GOST3411WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; + m_algorithms["GOST3411WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; + m_algorithms["GOST3411WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; + m_algorithms["GOST3411WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; + m_algorithms["GOST3411-2012-256WITHECGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; + m_algorithms["GOST3411-2012-512WITHECGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; + m_algorithms["GOST3411-2012-256WITHGOST3410-2012-256"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256; + m_algorithms["GOST3411-2012-512WITHGOST3410-2012-512"] = RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512; + m_algorithms["SHA1WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA1; + m_algorithms["SHA224WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA224; + m_algorithms["SHA256WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA256; + m_algorithms["SHA384WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA384; + m_algorithms["SHA512WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA512; + m_algorithms["RIPEMD160WITHPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_RIPEMD160; + m_algorithms["SHA1WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_1; + m_algorithms["SHA224WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_224; + m_algorithms["SHA256WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_256; + m_algorithms["SHA384WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_384; + m_algorithms["SHA512WITHCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_512; + m_algorithms["SHA3-512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA3_512; + m_algorithms["SHA512WITHSPHINCS256"] = BCObjectIdentifiers.sphincs256_with_SHA512; + + m_algorithms["SHA256WITHSM2"] = GMObjectIdentifiers.sm2sign_with_sha256; + m_algorithms["SM3WITHSM2"] = GMObjectIdentifiers.sm2sign_with_sm3; + + m_algorithms["SHA256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA256; + m_algorithms["SHA512WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHA512; + m_algorithms["SHAKE128WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE128; + m_algorithms["SHAKE256WITHXMSS"] = BCObjectIdentifiers.xmss_with_SHAKE256; + + m_algorithms["SHA256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA256; + m_algorithms["SHA512WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHA512; + m_algorithms["SHAKE128WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE128; + m_algorithms["SHAKE256WITHXMSSMT"] = BCObjectIdentifiers.xmss_mt_with_SHAKE256; // @@ -239,117 +240,113 @@ namespace Org.BouncyCastle.Cms // explicit params // AlgorithmIdentifier sha1AlgId = new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1, DerNull.Instance); - _params["SHA1WITHRSAANDMGF1"] = CreatePssParams(sha1AlgId, 20); + m_params["SHA1WITHRSAANDMGF1"] = CreatePssParams(sha1AlgId, 20); AlgorithmIdentifier sha224AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha224, DerNull.Instance); - _params["SHA224WITHRSAANDMGF1"] = CreatePssParams(sha224AlgId, 28); + m_params["SHA224WITHRSAANDMGF1"] = CreatePssParams(sha224AlgId, 28); AlgorithmIdentifier sha256AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha256, DerNull.Instance); - _params["SHA256WITHRSAANDMGF1"] = CreatePssParams(sha256AlgId, 32); + m_params["SHA256WITHRSAANDMGF1"] = CreatePssParams(sha256AlgId, 32); AlgorithmIdentifier sha384AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha384, DerNull.Instance); - _params["SHA384WITHRSAANDMGF1"] = CreatePssParams(sha384AlgId, 48); + m_params["SHA384WITHRSAANDMGF1"] = CreatePssParams(sha384AlgId, 48); AlgorithmIdentifier sha512AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha512, DerNull.Instance); - _params["SHA512WITHRSAANDMGF1"] = CreatePssParams(sha512AlgId, 64); + m_params["SHA512WITHRSAANDMGF1"] = CreatePssParams(sha512AlgId, 64); AlgorithmIdentifier sha3_224AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_224, DerNull.Instance); - _params["SHA3-224WITHRSAANDMGF1"] = CreatePssParams(sha3_224AlgId, 28); + m_params["SHA3-224WITHRSAANDMGF1"] = CreatePssParams(sha3_224AlgId, 28); AlgorithmIdentifier sha3_256AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_256, DerNull.Instance); - _params["SHA3-256WITHRSAANDMGF1"] = CreatePssParams(sha3_256AlgId, 32); + m_params["SHA3-256WITHRSAANDMGF1"] = CreatePssParams(sha3_256AlgId, 32); AlgorithmIdentifier sha3_384AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_384, DerNull.Instance); - _params["SHA3-384WITHRSAANDMGF1"] = CreatePssParams(sha3_384AlgId, 48); + m_params["SHA3-384WITHRSAANDMGF1"] = CreatePssParams(sha3_384AlgId, 48); AlgorithmIdentifier sha3_512AlgId = new AlgorithmIdentifier(NistObjectIdentifiers.IdSha3_512, DerNull.Instance); - _params["SHA3-512WITHRSAANDMGF1"] = CreatePssParams(sha3_512AlgId, 64); + m_params["SHA3-512WITHRSAANDMGF1"] = CreatePssParams(sha3_512AlgId, 64); // // digests // - digestOids[PkcsObjectIdentifiers.Sha224WithRsaEncryption] = NistObjectIdentifiers.IdSha224; - digestOids[PkcsObjectIdentifiers.Sha256WithRsaEncryption] = NistObjectIdentifiers.IdSha256; - digestOids[PkcsObjectIdentifiers.Sha384WithRsaEncryption] = NistObjectIdentifiers.IdSha384; - digestOids[PkcsObjectIdentifiers.Sha512WithRsaEncryption] = NistObjectIdentifiers.IdSha512; - digestOids[PkcsObjectIdentifiers.Sha512_224WithRSAEncryption] = NistObjectIdentifiers.IdSha512_224; - digestOids[PkcsObjectIdentifiers.Sha512_256WithRSAEncryption] = NistObjectIdentifiers.IdSha512_256; - digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha224; - digestOids[NistObjectIdentifiers.DsaWithSha256] = NistObjectIdentifiers.IdSha256; - digestOids[NistObjectIdentifiers.DsaWithSha384] = NistObjectIdentifiers.IdSha384; - digestOids[NistObjectIdentifiers.DsaWithSha512] = NistObjectIdentifiers.IdSha512; - digestOids[NistObjectIdentifiers.IdDsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224; - digestOids[NistObjectIdentifiers.IdDsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256; - digestOids[NistObjectIdentifiers.IdDsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384; - digestOids[NistObjectIdentifiers.IdDsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512; - digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224; - digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256; - digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384; - digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512; - digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224] = NistObjectIdentifiers.IdSha3_224; - digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256] = NistObjectIdentifiers.IdSha3_256; - digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384] = NistObjectIdentifiers.IdSha3_384; - digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512] = NistObjectIdentifiers.IdSha3_512; - - digestOids[PkcsObjectIdentifiers.MD2WithRsaEncryption] = PkcsObjectIdentifiers.MD2; - digestOids[PkcsObjectIdentifiers.MD4WithRsaEncryption] = PkcsObjectIdentifiers.MD4; - digestOids[PkcsObjectIdentifiers.MD5WithRsaEncryption] = PkcsObjectIdentifiers.MD5; - digestOids[PkcsObjectIdentifiers.Sha1WithRsaEncryption] = OiwObjectIdentifiers.IdSha1; - digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128] = TeleTrusTObjectIdentifiers.RipeMD128; - digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160] = TeleTrusTObjectIdentifiers.RipeMD160; - digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256] = TeleTrusTObjectIdentifiers.RipeMD256; - digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94] = CryptoProObjectIdentifiers.GostR3411; - digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001] = CryptoProObjectIdentifiers.GostR3411; - digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256; - digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512; - - digestOids[GMObjectIdentifiers.sm2sign_with_sha256] = NistObjectIdentifiers.IdSha256; - digestOids[GMObjectIdentifiers.sm2sign_with_sm3] = GMObjectIdentifiers.sm3; + m_digestOids[PkcsObjectIdentifiers.Sha224WithRsaEncryption] = NistObjectIdentifiers.IdSha224; + m_digestOids[PkcsObjectIdentifiers.Sha256WithRsaEncryption] = NistObjectIdentifiers.IdSha256; + m_digestOids[PkcsObjectIdentifiers.Sha384WithRsaEncryption] = NistObjectIdentifiers.IdSha384; + m_digestOids[PkcsObjectIdentifiers.Sha512WithRsaEncryption] = NistObjectIdentifiers.IdSha512; + m_digestOids[PkcsObjectIdentifiers.Sha512_224WithRSAEncryption] = NistObjectIdentifiers.IdSha512_224; + m_digestOids[PkcsObjectIdentifiers.Sha512_256WithRSAEncryption] = NistObjectIdentifiers.IdSha512_256; + m_digestOids[NistObjectIdentifiers.DsaWithSha224] = NistObjectIdentifiers.IdSha224; + m_digestOids[NistObjectIdentifiers.DsaWithSha256] = NistObjectIdentifiers.IdSha256; + m_digestOids[NistObjectIdentifiers.DsaWithSha384] = NistObjectIdentifiers.IdSha384; + m_digestOids[NistObjectIdentifiers.DsaWithSha512] = NistObjectIdentifiers.IdSha512; + m_digestOids[NistObjectIdentifiers.IdDsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224; + m_digestOids[NistObjectIdentifiers.IdDsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256; + m_digestOids[NistObjectIdentifiers.IdDsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384; + m_digestOids[NistObjectIdentifiers.IdDsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512; + m_digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_224] = NistObjectIdentifiers.IdSha3_224; + m_digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_256] = NistObjectIdentifiers.IdSha3_256; + m_digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_384] = NistObjectIdentifiers.IdSha3_384; + m_digestOids[NistObjectIdentifiers.IdEcdsaWithSha3_512] = NistObjectIdentifiers.IdSha3_512; + m_digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224] = NistObjectIdentifiers.IdSha3_224; + m_digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256] = NistObjectIdentifiers.IdSha3_256; + m_digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384] = NistObjectIdentifiers.IdSha3_384; + m_digestOids[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512] = NistObjectIdentifiers.IdSha3_512; + + m_digestOids[PkcsObjectIdentifiers.MD2WithRsaEncryption] = PkcsObjectIdentifiers.MD2; + m_digestOids[PkcsObjectIdentifiers.MD4WithRsaEncryption] = PkcsObjectIdentifiers.MD4; + m_digestOids[PkcsObjectIdentifiers.MD5WithRsaEncryption] = PkcsObjectIdentifiers.MD5; + m_digestOids[PkcsObjectIdentifiers.Sha1WithRsaEncryption] = OiwObjectIdentifiers.IdSha1; + m_digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128] = TeleTrusTObjectIdentifiers.RipeMD128; + m_digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160] = TeleTrusTObjectIdentifiers.RipeMD160; + m_digestOids[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256] = TeleTrusTObjectIdentifiers.RipeMD256; + m_digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94] = CryptoProObjectIdentifiers.GostR3411; + m_digestOids[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001] = CryptoProObjectIdentifiers.GostR3411; + m_digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_256] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256; + m_digestOids[RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512; + + m_digestOids[GMObjectIdentifiers.sm2sign_with_sha256] = NistObjectIdentifiers.IdSha256; + m_digestOids[GMObjectIdentifiers.sm2sign_with_sm3] = GMObjectIdentifiers.sm3; } private static AlgorithmIdentifier Generate(string signatureAlgorithm) { AlgorithmIdentifier sigAlgId; - AlgorithmIdentifier encAlgId; - AlgorithmIdentifier digAlgId; + //AlgorithmIdentifier encAlgId; + //AlgorithmIdentifier digAlgId; - string algorithmName = Strings.ToUpperCase(signatureAlgorithm); - DerObjectIdentifier sigOID = (DerObjectIdentifier)algorithms[algorithmName]; - if (sigOID == null) - { - throw new ArgumentException("Unknown signature type requested: " + algorithmName); - } + if (!m_algorithms.TryGetValue(signatureAlgorithm, out var sigOid)) + throw new ArgumentException("Unknown signature type requested: " + signatureAlgorithm); - if (noParams.Contains(sigOID)) + if (noParams.Contains(sigOid)) { - sigAlgId = new AlgorithmIdentifier(sigOID); + sigAlgId = new AlgorithmIdentifier(sigOid); } - else if (_params.Contains(algorithmName)) + else if (m_params.TryGetValue(signatureAlgorithm, out var explicitParameters)) { - sigAlgId = new AlgorithmIdentifier(sigOID, (Asn1Encodable)_params[algorithmName]); + sigAlgId = new AlgorithmIdentifier(sigOid, explicitParameters); } else { - sigAlgId = new AlgorithmIdentifier(sigOID, DerNull.Instance); + sigAlgId = new AlgorithmIdentifier(sigOid, DerNull.Instance); } - if (pkcs15RsaEncryption.Contains(sigOID)) - { - encAlgId = new AlgorithmIdentifier(PkcsObjectIdentifiers.RsaEncryption, DerNull.Instance); - } - else - { - encAlgId = sigAlgId; - } - - if (sigAlgId.Algorithm.Equals(PkcsObjectIdentifiers.IdRsassaPss)) - { - digAlgId = ((RsassaPssParameters)sigAlgId.Parameters).HashAlgorithm; - } - else - { - digAlgId = new AlgorithmIdentifier((DerObjectIdentifier)digestOids[sigOID], DerNull.Instance); - } + //if (pkcs15RsaEncryption.Contains(sigOid)) + //{ + // encAlgId = new AlgorithmIdentifier(PkcsObjectIdentifiers.RsaEncryption, DerNull.Instance); + //} + //else + //{ + // encAlgId = sigAlgId; + //} + + //if (sigAlgId.Algorithm.Equals(PkcsObjectIdentifiers.IdRsassaPss)) + //{ + // digAlgId = ((RsassaPssParameters)sigAlgId.Parameters).HashAlgorithm; + //} + //else + //{ + // digAlgId = new AlgorithmIdentifier(m_digestOids[sigOid], DerNull.Instance); + //} return sigAlgId; } @@ -371,96 +368,98 @@ namespace Org.BouncyCastle.Cms public class DefaultDigestAlgorithmIdentifierFinder { - private static readonly IDictionary digestOids = Platform.CreateHashtable(); - private static readonly IDictionary digestNameToOids = Platform.CreateHashtable(); + private static readonly IDictionary<DerObjectIdentifier, DerObjectIdentifier> m_digestOids = + new Dictionary<DerObjectIdentifier, DerObjectIdentifier>(); + private static readonly IDictionary<string, DerObjectIdentifier> m_digestNameToOids = + new Dictionary<string, DerObjectIdentifier>(StringComparer.OrdinalIgnoreCase); static DefaultDigestAlgorithmIdentifierFinder() { // // digests // - digestOids.Add(OiwObjectIdentifiers.MD4WithRsaEncryption, PkcsObjectIdentifiers.MD4); - digestOids.Add(OiwObjectIdentifiers.MD4WithRsa, PkcsObjectIdentifiers.MD4); - digestOids.Add(OiwObjectIdentifiers.MD5WithRsa, PkcsObjectIdentifiers.MD5); - digestOids.Add(OiwObjectIdentifiers.Sha1WithRsa, OiwObjectIdentifiers.IdSha1); - digestOids.Add(OiwObjectIdentifiers.DsaWithSha1, OiwObjectIdentifiers.IdSha1); - - digestOids.Add(PkcsObjectIdentifiers.Sha224WithRsaEncryption, NistObjectIdentifiers.IdSha224); - digestOids.Add(PkcsObjectIdentifiers.Sha256WithRsaEncryption, NistObjectIdentifiers.IdSha256); - digestOids.Add(PkcsObjectIdentifiers.Sha384WithRsaEncryption, NistObjectIdentifiers.IdSha384); - digestOids.Add(PkcsObjectIdentifiers.Sha512WithRsaEncryption, NistObjectIdentifiers.IdSha512); - digestOids.Add(PkcsObjectIdentifiers.Sha512_224WithRSAEncryption, NistObjectIdentifiers.IdSha512_224); - digestOids.Add(PkcsObjectIdentifiers.Sha512_256WithRSAEncryption, NistObjectIdentifiers.IdSha512_256); - - digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224, NistObjectIdentifiers.IdSha3_224); - digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256, NistObjectIdentifiers.IdSha3_256); - digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384, NistObjectIdentifiers.IdSha3_384); - digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512, NistObjectIdentifiers.IdSha3_512); - - digestOids.Add(PkcsObjectIdentifiers.MD2WithRsaEncryption, PkcsObjectIdentifiers.MD2); - digestOids.Add(PkcsObjectIdentifiers.MD4WithRsaEncryption, PkcsObjectIdentifiers.MD4); - digestOids.Add(PkcsObjectIdentifiers.MD5WithRsaEncryption, PkcsObjectIdentifiers.MD5); - digestOids.Add(PkcsObjectIdentifiers.Sha1WithRsaEncryption, OiwObjectIdentifiers.IdSha1); - - digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha1, OiwObjectIdentifiers.IdSha1); - digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha224, NistObjectIdentifiers.IdSha224); - digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha256, NistObjectIdentifiers.IdSha256); - digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha384, NistObjectIdentifiers.IdSha384); - digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha512, NistObjectIdentifiers.IdSha512); - digestOids.Add(X9ObjectIdentifiers.IdDsaWithSha1, OiwObjectIdentifiers.IdSha1); - - digestOids.Add(NistObjectIdentifiers.DsaWithSha224, NistObjectIdentifiers.IdSha224); - digestOids.Add(NistObjectIdentifiers.DsaWithSha256, NistObjectIdentifiers.IdSha256); - digestOids.Add(NistObjectIdentifiers.DsaWithSha384, NistObjectIdentifiers.IdSha384); - digestOids.Add(NistObjectIdentifiers.DsaWithSha512, NistObjectIdentifiers.IdSha512); - - digestOids.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128, TeleTrusTObjectIdentifiers.RipeMD128); - digestOids.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160, TeleTrusTObjectIdentifiers.RipeMD160); - digestOids.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256, TeleTrusTObjectIdentifiers.RipeMD256); - - digestOids.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94, CryptoProObjectIdentifiers.GostR3411); - digestOids.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001, CryptoProObjectIdentifiers.GostR3411); - - digestNameToOids.Add("SHA-1", OiwObjectIdentifiers.IdSha1); - digestNameToOids.Add("SHA-224", NistObjectIdentifiers.IdSha224); - digestNameToOids.Add("SHA-256", NistObjectIdentifiers.IdSha256); - digestNameToOids.Add("SHA-384", NistObjectIdentifiers.IdSha384); - digestNameToOids.Add("SHA-512", NistObjectIdentifiers.IdSha512); - digestNameToOids.Add("SHA-512/224", NistObjectIdentifiers.IdSha512_224); - digestNameToOids.Add("SHA-512(224)", NistObjectIdentifiers.IdSha512_224); - digestNameToOids.Add("SHA-512/256", NistObjectIdentifiers.IdSha512_256); - digestNameToOids.Add("SHA-512(256)", NistObjectIdentifiers.IdSha512_256); - - digestNameToOids.Add("SHA1", OiwObjectIdentifiers.IdSha1); - digestNameToOids.Add("SHA224", NistObjectIdentifiers.IdSha224); - digestNameToOids.Add("SHA256", NistObjectIdentifiers.IdSha256); - digestNameToOids.Add("SHA384", NistObjectIdentifiers.IdSha384); - digestNameToOids.Add("SHA512", NistObjectIdentifiers.IdSha512); - digestNameToOids.Add("SHA512/224", NistObjectIdentifiers.IdSha512_224); - digestNameToOids.Add("SHA512(224)", NistObjectIdentifiers.IdSha512_224); - digestNameToOids.Add("SHA512/256", NistObjectIdentifiers.IdSha512_256); - digestNameToOids.Add("SHA512(256)", NistObjectIdentifiers.IdSha512_256); - - digestNameToOids.Add("SHA3-224", NistObjectIdentifiers.IdSha3_224); - digestNameToOids.Add("SHA3-256", NistObjectIdentifiers.IdSha3_256); - digestNameToOids.Add("SHA3-384", NistObjectIdentifiers.IdSha3_384); - digestNameToOids.Add("SHA3-512", NistObjectIdentifiers.IdSha3_512); - - digestNameToOids.Add("SHAKE-128", NistObjectIdentifiers.IdShake128); - digestNameToOids.Add("SHAKE-256", NistObjectIdentifiers.IdShake256); - - digestNameToOids.Add("GOST3411", CryptoProObjectIdentifiers.GostR3411); - - digestNameToOids.Add("MD2", PkcsObjectIdentifiers.MD2); - digestNameToOids.Add("MD4", PkcsObjectIdentifiers.MD4); - digestNameToOids.Add("MD5", PkcsObjectIdentifiers.MD5); - - digestNameToOids.Add("RIPEMD128", TeleTrusTObjectIdentifiers.RipeMD128); - digestNameToOids.Add("RIPEMD160", TeleTrusTObjectIdentifiers.RipeMD160); - digestNameToOids.Add("RIPEMD256", TeleTrusTObjectIdentifiers.RipeMD256); + m_digestOids.Add(OiwObjectIdentifiers.MD4WithRsaEncryption, PkcsObjectIdentifiers.MD4); + m_digestOids.Add(OiwObjectIdentifiers.MD4WithRsa, PkcsObjectIdentifiers.MD4); + m_digestOids.Add(OiwObjectIdentifiers.MD5WithRsa, PkcsObjectIdentifiers.MD5); + m_digestOids.Add(OiwObjectIdentifiers.Sha1WithRsa, OiwObjectIdentifiers.IdSha1); + m_digestOids.Add(OiwObjectIdentifiers.DsaWithSha1, OiwObjectIdentifiers.IdSha1); + + m_digestOids.Add(PkcsObjectIdentifiers.Sha224WithRsaEncryption, NistObjectIdentifiers.IdSha224); + m_digestOids.Add(PkcsObjectIdentifiers.Sha256WithRsaEncryption, NistObjectIdentifiers.IdSha256); + m_digestOids.Add(PkcsObjectIdentifiers.Sha384WithRsaEncryption, NistObjectIdentifiers.IdSha384); + m_digestOids.Add(PkcsObjectIdentifiers.Sha512WithRsaEncryption, NistObjectIdentifiers.IdSha512); + m_digestOids.Add(PkcsObjectIdentifiers.Sha512_224WithRSAEncryption, NistObjectIdentifiers.IdSha512_224); + m_digestOids.Add(PkcsObjectIdentifiers.Sha512_256WithRSAEncryption, NistObjectIdentifiers.IdSha512_256); + + m_digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224, NistObjectIdentifiers.IdSha3_224); + m_digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256, NistObjectIdentifiers.IdSha3_256); + m_digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384, NistObjectIdentifiers.IdSha3_384); + m_digestOids.Add(NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512, NistObjectIdentifiers.IdSha3_512); + + m_digestOids.Add(PkcsObjectIdentifiers.MD2WithRsaEncryption, PkcsObjectIdentifiers.MD2); + m_digestOids.Add(PkcsObjectIdentifiers.MD4WithRsaEncryption, PkcsObjectIdentifiers.MD4); + m_digestOids.Add(PkcsObjectIdentifiers.MD5WithRsaEncryption, PkcsObjectIdentifiers.MD5); + m_digestOids.Add(PkcsObjectIdentifiers.Sha1WithRsaEncryption, OiwObjectIdentifiers.IdSha1); + + m_digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha1, OiwObjectIdentifiers.IdSha1); + m_digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha224, NistObjectIdentifiers.IdSha224); + m_digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha256, NistObjectIdentifiers.IdSha256); + m_digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha384, NistObjectIdentifiers.IdSha384); + m_digestOids.Add(X9ObjectIdentifiers.ECDsaWithSha512, NistObjectIdentifiers.IdSha512); + m_digestOids.Add(X9ObjectIdentifiers.IdDsaWithSha1, OiwObjectIdentifiers.IdSha1); + + m_digestOids.Add(NistObjectIdentifiers.DsaWithSha224, NistObjectIdentifiers.IdSha224); + m_digestOids.Add(NistObjectIdentifiers.DsaWithSha256, NistObjectIdentifiers.IdSha256); + m_digestOids.Add(NistObjectIdentifiers.DsaWithSha384, NistObjectIdentifiers.IdSha384); + m_digestOids.Add(NistObjectIdentifiers.DsaWithSha512, NistObjectIdentifiers.IdSha512); + + m_digestOids.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128, TeleTrusTObjectIdentifiers.RipeMD128); + m_digestOids.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160, TeleTrusTObjectIdentifiers.RipeMD160); + m_digestOids.Add(TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256, TeleTrusTObjectIdentifiers.RipeMD256); + + m_digestOids.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94, CryptoProObjectIdentifiers.GostR3411); + m_digestOids.Add(CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001, CryptoProObjectIdentifiers.GostR3411); + + m_digestNameToOids.Add("SHA-1", OiwObjectIdentifiers.IdSha1); + m_digestNameToOids.Add("SHA-224", NistObjectIdentifiers.IdSha224); + m_digestNameToOids.Add("SHA-256", NistObjectIdentifiers.IdSha256); + m_digestNameToOids.Add("SHA-384", NistObjectIdentifiers.IdSha384); + m_digestNameToOids.Add("SHA-512", NistObjectIdentifiers.IdSha512); + m_digestNameToOids.Add("SHA-512/224", NistObjectIdentifiers.IdSha512_224); + m_digestNameToOids.Add("SHA-512(224)", NistObjectIdentifiers.IdSha512_224); + m_digestNameToOids.Add("SHA-512/256", NistObjectIdentifiers.IdSha512_256); + m_digestNameToOids.Add("SHA-512(256)", NistObjectIdentifiers.IdSha512_256); + + m_digestNameToOids.Add("SHA1", OiwObjectIdentifiers.IdSha1); + m_digestNameToOids.Add("SHA224", NistObjectIdentifiers.IdSha224); + m_digestNameToOids.Add("SHA256", NistObjectIdentifiers.IdSha256); + m_digestNameToOids.Add("SHA384", NistObjectIdentifiers.IdSha384); + m_digestNameToOids.Add("SHA512", NistObjectIdentifiers.IdSha512); + m_digestNameToOids.Add("SHA512/224", NistObjectIdentifiers.IdSha512_224); + m_digestNameToOids.Add("SHA512(224)", NistObjectIdentifiers.IdSha512_224); + m_digestNameToOids.Add("SHA512/256", NistObjectIdentifiers.IdSha512_256); + m_digestNameToOids.Add("SHA512(256)", NistObjectIdentifiers.IdSha512_256); + + m_digestNameToOids.Add("SHA3-224", NistObjectIdentifiers.IdSha3_224); + m_digestNameToOids.Add("SHA3-256", NistObjectIdentifiers.IdSha3_256); + m_digestNameToOids.Add("SHA3-384", NistObjectIdentifiers.IdSha3_384); + m_digestNameToOids.Add("SHA3-512", NistObjectIdentifiers.IdSha3_512); + + m_digestNameToOids.Add("SHAKE-128", NistObjectIdentifiers.IdShake128); + m_digestNameToOids.Add("SHAKE-256", NistObjectIdentifiers.IdShake256); + + m_digestNameToOids.Add("GOST3411", CryptoProObjectIdentifiers.GostR3411); + + m_digestNameToOids.Add("MD2", PkcsObjectIdentifiers.MD2); + m_digestNameToOids.Add("MD4", PkcsObjectIdentifiers.MD4); + m_digestNameToOids.Add("MD5", PkcsObjectIdentifiers.MD5); + + m_digestNameToOids.Add("RIPEMD128", TeleTrusTObjectIdentifiers.RipeMD128); + m_digestNameToOids.Add("RIPEMD160", TeleTrusTObjectIdentifiers.RipeMD160); + m_digestNameToOids.Add("RIPEMD256", TeleTrusTObjectIdentifiers.RipeMD256); } - public AlgorithmIdentifier find(AlgorithmIdentifier sigAlgId) + public AlgorithmIdentifier Find(AlgorithmIdentifier sigAlgId) { AlgorithmIdentifier digAlgId; @@ -470,15 +469,15 @@ namespace Org.BouncyCastle.Cms } else { - digAlgId = new AlgorithmIdentifier((DerObjectIdentifier)digestOids[sigAlgId.Algorithm], DerNull.Instance); + digAlgId = new AlgorithmIdentifier(m_digestOids[sigAlgId.Algorithm], DerNull.Instance); } return digAlgId; } - public AlgorithmIdentifier find(string digAlgName) + public AlgorithmIdentifier Find(string digAlgName) { - return new AlgorithmIdentifier((DerObjectIdentifier)digestNameToOids[digAlgName], DerNull.Instance); + return new AlgorithmIdentifier(m_digestNameToOids[digAlgName], DerNull.Instance); } } @@ -511,8 +510,9 @@ namespace Org.BouncyCastle.Cms internal List<Asn1Encodable> _certs = new List<Asn1Encodable>(); internal List<Asn1Encodable> _crls = new List<Asn1Encodable>(); - internal IList _signers = Platform.CreateArrayList(); - internal IDictionary _digests = Platform.CreateHashtable(); + internal IList<SignerInformation> _signers = new List<SignerInformation>(); + internal IDictionary<string, byte[]> m_digests = + new Dictionary<string, byte[]>(StringComparer.OrdinalIgnoreCase); internal bool _useDerForCerts = false; internal bool _useDerForCrls = false; @@ -531,12 +531,10 @@ namespace Org.BouncyCastle.Cms this.rand = rand; } - internal protected virtual IDictionary GetBaseParameters( - DerObjectIdentifier contentType, - AlgorithmIdentifier digAlgId, - byte[] hash) + internal protected virtual IDictionary<CmsAttributeTableParameter, object> GetBaseParameters( + DerObjectIdentifier contentType, AlgorithmIdentifier digAlgId, byte[] hash) { - IDictionary param = Platform.CreateHashtable(); + var param = new Dictionary<CmsAttributeTableParameter, object>(); if (contentType != null) { @@ -607,9 +605,9 @@ namespace Org.BouncyCastle.Cms * * @return a map of oids (as string objects) and byte[] representing digests. */ - public IDictionary GetGeneratedDigests() + public IDictionary<string, byte[]> GetGeneratedDigests() { - return Platform.CreateHashtable(_digests); + return new Dictionary<string, byte[]>(m_digests, StringComparer.OrdinalIgnoreCase); } public bool UseDerForCerts diff --git a/crypto/src/cms/CMSSignedHelper.cs b/crypto/src/cms/CMSSignedHelper.cs index e48041a50..0aced112e 100644 --- a/crypto/src/cms/CMSSignedHelper.cs +++ b/crypto/src/cms/CMSSignedHelper.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using Org.BouncyCastle.Asn1; @@ -14,7 +13,6 @@ using Org.BouncyCastle.Asn1.X9; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; -using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.Collections; using Org.BouncyCastle.X509; @@ -30,18 +28,18 @@ namespace Org.BouncyCastle.Cms private static readonly string EncryptionECDsaWithSha384 = X9ObjectIdentifiers.ECDsaWithSha384.Id; private static readonly string EncryptionECDsaWithSha512 = X9ObjectIdentifiers.ECDsaWithSha512.Id; - private static readonly IDictionary encryptionAlgs = Platform.CreateHashtable(); - private static readonly IDictionary digestAlgs = Platform.CreateHashtable(); - private static readonly IDictionary digestAliases = Platform.CreateHashtable(); + private static readonly IDictionary<string, string> m_encryptionAlgs = new Dictionary<string, string>(); + private static readonly IDictionary<string, string> m_digestAlgs = new Dictionary<string, string>(); + private static readonly IDictionary<string, string[]> m_digestAliases = new Dictionary<string, string[]>(); private static readonly HashSet<string> noParams = new HashSet<string>(); - private static readonly IDictionary ecAlgorithms = Platform.CreateHashtable(); + private static readonly IDictionary<string, string> m_ecAlgorithms = new Dictionary<string, string>(); - private static void AddEntries(DerObjectIdentifier oid, string digest, string encryption) + private static void AddEntries(DerObjectIdentifier oid, string digest, string encryption) { string alias = oid.Id; - digestAlgs.Add(alias, digest); - encryptionAlgs.Add(alias, encryption); + m_digestAlgs.Add(alias, digest); + m_encryptionAlgs.Add(alias, encryption); } static CmsSignedHelper() @@ -85,41 +83,41 @@ namespace Org.BouncyCastle.Cms AddEntries(EacObjectIdentifiers.id_TA_RSA_PSS_SHA_1, "SHA1", "RSAandMGF1"); AddEntries(EacObjectIdentifiers.id_TA_RSA_PSS_SHA_256, "SHA256", "RSAandMGF1"); - encryptionAlgs.Add(X9ObjectIdentifiers.IdDsa.Id, "DSA"); - encryptionAlgs.Add(PkcsObjectIdentifiers.RsaEncryption.Id, "RSA"); - encryptionAlgs.Add(TeleTrusTObjectIdentifiers.TeleTrusTRsaSignatureAlgorithm.Id, "RSA"); - encryptionAlgs.Add(X509ObjectIdentifiers.IdEARsa.Id, "RSA"); - encryptionAlgs.Add(CmsSignedGenerator.EncryptionRsaPss, "RSAandMGF1"); - encryptionAlgs.Add(CryptoProObjectIdentifiers.GostR3410x94.Id, "GOST3410"); - encryptionAlgs.Add(CryptoProObjectIdentifiers.GostR3410x2001.Id, "ECGOST3410"); - encryptionAlgs.Add("1.3.6.1.4.1.5849.1.6.2", "ECGOST3410"); - encryptionAlgs.Add("1.3.6.1.4.1.5849.1.1.5", "GOST3410"); - - digestAlgs.Add(PkcsObjectIdentifiers.MD2.Id, "MD2"); - digestAlgs.Add(PkcsObjectIdentifiers.MD4.Id, "MD4"); - digestAlgs.Add(PkcsObjectIdentifiers.MD5.Id, "MD5"); - digestAlgs.Add(OiwObjectIdentifiers.IdSha1.Id, "SHA1"); - digestAlgs.Add(NistObjectIdentifiers.IdSha224.Id, "SHA224"); - digestAlgs.Add(NistObjectIdentifiers.IdSha256.Id, "SHA256"); - digestAlgs.Add(NistObjectIdentifiers.IdSha384.Id, "SHA384"); - digestAlgs.Add(NistObjectIdentifiers.IdSha512.Id, "SHA512"); - digestAlgs.Add(NistObjectIdentifiers.IdSha512_224.Id, "SHA512(224)"); - digestAlgs.Add(NistObjectIdentifiers.IdSha512_256.Id, "SHA512(256)"); - digestAlgs.Add(NistObjectIdentifiers.IdSha3_224.Id, "SHA3-224"); - digestAlgs.Add(NistObjectIdentifiers.IdSha3_256.Id, "SHA3-256"); - digestAlgs.Add(NistObjectIdentifiers.IdSha3_384.Id, "SHA3-384"); - digestAlgs.Add(NistObjectIdentifiers.IdSha3_512.Id, "SHA3-512"); - digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD128.Id, "RIPEMD128"); - digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD160.Id, "RIPEMD160"); - digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD256.Id, "RIPEMD256"); - digestAlgs.Add(CryptoProObjectIdentifiers.GostR3411.Id, "GOST3411"); - digestAlgs.Add("1.3.6.1.4.1.5849.1.2.1", "GOST3411"); - - digestAliases.Add("SHA1", new string[] { "SHA-1" }); - digestAliases.Add("SHA224", new string[] { "SHA-224" }); - digestAliases.Add("SHA256", new string[] { "SHA-256" }); - digestAliases.Add("SHA384", new string[] { "SHA-384" }); - digestAliases.Add("SHA512", new string[] { "SHA-512" }); + m_encryptionAlgs.Add(X9ObjectIdentifiers.IdDsa.Id, "DSA"); + m_encryptionAlgs.Add(PkcsObjectIdentifiers.RsaEncryption.Id, "RSA"); + m_encryptionAlgs.Add(TeleTrusTObjectIdentifiers.TeleTrusTRsaSignatureAlgorithm.Id, "RSA"); + m_encryptionAlgs.Add(X509ObjectIdentifiers.IdEARsa.Id, "RSA"); + m_encryptionAlgs.Add(CmsSignedGenerator.EncryptionRsaPss, "RSAandMGF1"); + m_encryptionAlgs.Add(CryptoProObjectIdentifiers.GostR3410x94.Id, "GOST3410"); + m_encryptionAlgs.Add(CryptoProObjectIdentifiers.GostR3410x2001.Id, "ECGOST3410"); + m_encryptionAlgs.Add("1.3.6.1.4.1.5849.1.6.2", "ECGOST3410"); + m_encryptionAlgs.Add("1.3.6.1.4.1.5849.1.1.5", "GOST3410"); + + m_digestAlgs.Add(PkcsObjectIdentifiers.MD2.Id, "MD2"); + m_digestAlgs.Add(PkcsObjectIdentifiers.MD4.Id, "MD4"); + m_digestAlgs.Add(PkcsObjectIdentifiers.MD5.Id, "MD5"); + m_digestAlgs.Add(OiwObjectIdentifiers.IdSha1.Id, "SHA1"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha224.Id, "SHA224"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha256.Id, "SHA256"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha384.Id, "SHA384"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha512.Id, "SHA512"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha512_224.Id, "SHA512(224)"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha512_256.Id, "SHA512(256)"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_224.Id, "SHA3-224"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_256.Id, "SHA3-256"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_384.Id, "SHA3-384"); + m_digestAlgs.Add(NistObjectIdentifiers.IdSha3_512.Id, "SHA3-512"); + m_digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD128.Id, "RIPEMD128"); + m_digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD160.Id, "RIPEMD160"); + m_digestAlgs.Add(TeleTrusTObjectIdentifiers.RipeMD256.Id, "RIPEMD256"); + m_digestAlgs.Add(CryptoProObjectIdentifiers.GostR3411.Id, "GOST3411"); + m_digestAlgs.Add("1.3.6.1.4.1.5849.1.2.1", "GOST3411"); + + m_digestAliases.Add("SHA1", new string[]{ "SHA-1" }); + m_digestAliases.Add("SHA224", new string[]{ "SHA-224" }); + m_digestAliases.Add("SHA256", new string[]{ "SHA-256" }); + m_digestAliases.Add("SHA384", new string[]{ "SHA-384" }); + m_digestAliases.Add("SHA512", new string[]{ "SHA-512" }); noParams.Add(CmsSignedGenerator.EncryptionDsa); // noParams.Add(EncryptionECDsa); @@ -129,50 +127,36 @@ namespace Org.BouncyCastle.Cms noParams.Add(EncryptionECDsaWithSha384); noParams.Add(EncryptionECDsaWithSha512); - ecAlgorithms.Add(CmsSignedGenerator.DigestSha1, EncryptionECDsaWithSha1); - ecAlgorithms.Add(CmsSignedGenerator.DigestSha224, EncryptionECDsaWithSha224); - ecAlgorithms.Add(CmsSignedGenerator.DigestSha256, EncryptionECDsaWithSha256); - ecAlgorithms.Add(CmsSignedGenerator.DigestSha384, EncryptionECDsaWithSha384); - ecAlgorithms.Add(CmsSignedGenerator.DigestSha512, EncryptionECDsaWithSha512); - } - - + m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha1, EncryptionECDsaWithSha1); + m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha224, EncryptionECDsaWithSha224); + m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha256, EncryptionECDsaWithSha256); + m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha384, EncryptionECDsaWithSha384); + m_ecAlgorithms.Add(CmsSignedGenerator.DigestSha512, EncryptionECDsaWithSha512); + } - /** + /** * Return the digest algorithm using one of the standard JCA string * representations rather than the algorithm identifier (if possible). */ - internal string GetDigestAlgName( - string digestAlgOid) + internal string GetDigestAlgName(string digestAlgOid) { - string algName = (string)digestAlgs[digestAlgOid]; + return m_digestAlgs.TryGetValue(digestAlgOid, out var algName) ? algName : digestAlgOid; + } - if (algName != null) + internal AlgorithmIdentifier GetEncAlgorithmIdentifier(DerObjectIdentifier encOid, + Asn1Encodable sigX509Parameters) + { + if (noParams.Contains(encOid.Id)) { - return algName; + return new AlgorithmIdentifier(encOid); } - return digestAlgOid; - } - - internal AlgorithmIdentifier GetEncAlgorithmIdentifier( - DerObjectIdentifier encOid, - Asn1Encodable sigX509Parameters) - { - if (noParams.Contains(encOid.Id)) - { - return new AlgorithmIdentifier(encOid); - } - - return new AlgorithmIdentifier(encOid, sigX509Parameters); - } + return new AlgorithmIdentifier(encOid, sigX509Parameters); + } - internal string[] GetDigestAliases( - string algName) + internal string[] GetDigestAliases(string algName) { - string[] aliases = (string[]) digestAliases[algName]; - - return aliases == null ? new string[0] : (string[]) aliases.Clone(); + return m_digestAliases.TryGetValue(algName, out var aliases) ? (string[])aliases.Clone() : new string[0]; } /** @@ -180,17 +164,9 @@ namespace Org.BouncyCastle.Cms * JCA string representations rather than the algorithm identifier (if * possible). */ - internal string GetEncryptionAlgName( - string encryptionAlgOid) + internal string GetEncryptionAlgName(string encryptionAlgOid) { - string algName = (string) encryptionAlgs[encryptionAlgOid]; - - if (algName != null) - { - return algName; - } - - return encryptionAlgOid; + return m_encryptionAlgs.TryGetValue(encryptionAlgOid, out var algName) ? algName : encryptionAlgOid; } internal IDigest GetDigestInstance( @@ -278,12 +254,10 @@ namespace Org.BouncyCastle.Cms encOID = CmsSignedGenerator.EncryptionECGost3410; } else - { - // TODO Should we insist on algName being one of "EC" or "ECDSA", as Java does? - encOID = (string)ecAlgorithms[digestOID]; - - if (encOID == null) - throw new ArgumentException("can't mix ECDSA with anything but SHA family digests"); + { + // TODO Should we insist on algName being one of "EC" or "ECDSA", as Java does? + if (!m_ecAlgorithms.TryGetValue(digestOID, out encOID)) + throw new ArgumentException("can't mix ECDSA with anything but SHA family digests"); } } else if (key is Gost3410PrivateKeyParameters) diff --git a/crypto/src/cms/DefaultAuthenticatedAttributeTableGenerator.cs b/crypto/src/cms/DefaultAuthenticatedAttributeTableGenerator.cs index 678d8269b..fcbd2d504 100644 --- a/crypto/src/cms/DefaultAuthenticatedAttributeTableGenerator.cs +++ b/crypto/src/cms/DefaultAuthenticatedAttributeTableGenerator.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using Org.BouncyCastle.Asn1; @@ -52,7 +51,7 @@ namespace Org.BouncyCastle.Cms * @return a filled in IDictionary of attributes. */ protected virtual IDictionary<DerObjectIdentifier, object> CreateStandardAttributeTable( - IDictionary parameters) + IDictionary<CmsAttributeTableParameter, object> parameters) { var std = new Dictionary<DerObjectIdentifier, object>(m_table); @@ -80,7 +79,7 @@ namespace Org.BouncyCastle.Cms * @param parameters source parameters * @return the populated attribute table */ - public virtual AttributeTable GetAttributes(IDictionary parameters) + public virtual AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { var table = CreateStandardAttributeTable(parameters); return new AttributeTable(table); diff --git a/crypto/src/cms/DefaultSignedAttributeTableGenerator.cs b/crypto/src/cms/DefaultSignedAttributeTableGenerator.cs index 8d0bca083..e1bec484a 100644 --- a/crypto/src/cms/DefaultSignedAttributeTableGenerator.cs +++ b/crypto/src/cms/DefaultSignedAttributeTableGenerator.cs @@ -1,10 +1,8 @@ using System; -using System.Collections; using System.Collections.Generic; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; -using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Cms { @@ -51,18 +49,20 @@ namespace Org.BouncyCastle.Cms * * @return a filled in Hashtable of attributes. */ - protected virtual IDictionary<DerObjectIdentifier, object> CreateStandardAttributeTable(IDictionary parameters) + protected virtual IDictionary<DerObjectIdentifier, object> CreateStandardAttributeTable( + IDictionary<CmsAttributeTableParameter, object> parameters) { var std = new Dictionary<DerObjectIdentifier, object>(m_table); DoCreateStandardAttributeTable(parameters, std); return std; } - private void DoCreateStandardAttributeTable(IDictionary parameters, + private void DoCreateStandardAttributeTable(IDictionary<CmsAttributeTableParameter, object> parameters, IDictionary<DerObjectIdentifier, object> std) { // contentType will be absent if we're trying to generate a counter signature. - if (parameters.Contains(CmsAttributeTableParameter.ContentType)) + + if (parameters.ContainsKey(CmsAttributeTableParameter.ContentType)) { if (!std.ContainsKey(CmsAttributes.ContentType)) { @@ -94,8 +94,7 @@ namespace Org.BouncyCastle.Cms * @param parameters source parameters * @return the populated attribute table */ - public virtual AttributeTable GetAttributes( - IDictionary parameters) + public virtual AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { var table = CreateStandardAttributeTable(parameters); return new AttributeTable(table); diff --git a/crypto/src/cms/EnvelopedDataHelper.cs b/crypto/src/cms/EnvelopedDataHelper.cs index 6d1c7bb3a..8c4dd7bf9 100644 --- a/crypto/src/cms/EnvelopedDataHelper.cs +++ b/crypto/src/cms/EnvelopedDataHelper.cs @@ -1,15 +1,11 @@ using System; -using System.Collections; +using System.Collections.Generic; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Nist; -using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto; -using Org.BouncyCastle.Crypto.Digests; -using Org.BouncyCastle.Crypto.Engines; -using Org.BouncyCastle.Crypto.Operators; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Crypto.Utilities; using Org.BouncyCastle.Security; @@ -19,29 +15,32 @@ namespace Org.BouncyCastle.Cms { internal class EnvelopedDataHelper { - private static readonly IDictionary BaseCipherNames = Platform.CreateHashtable(); - private static readonly IDictionary MacAlgNames = Platform.CreateHashtable(); - //private static readonly IDictionary PrfDigests = Platform.CreateHashtable(); + //private static readonly IDictionary<DerObjectIdentifier, string> BaseCipherNames = + // new Dictionary<DerObjectIdentifier, string>(); + //private static readonly IDictionary<DerObjectIdentifier, string> MacAlgNames = + // new Dictionary<DerObjectIdentifier, string>(); + //private static readonly IDictionary<DerObjectIdentifier, string> PrfDigests = + // new Dictionary<DerObjectIdentifier, string>(); - static EnvelopedDataHelper() - { - //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha1, "SHA-1"); - //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha224, "SHA-224"); - //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha256, "SHA-256"); - //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha384, "SHA-384"); - //PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha512, "SHA-512"); + //static EnvelopedDataHelper() + //{ + // PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha1, "SHA-1"); + // PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha224, "SHA-224"); + // PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha256, "SHA-256"); + // PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha384, "SHA-384"); + // PrfDigests.Add(PkcsObjectIdentifiers.IdHmacWithSha512, "SHA-512"); - BaseCipherNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDE"); - BaseCipherNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AES"); - BaseCipherNames.Add(NistObjectIdentifiers.IdAes192Cbc, "AES"); - BaseCipherNames.Add(NistObjectIdentifiers.IdAes256Cbc, "AES"); + // BaseCipherNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDE"); + // BaseCipherNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AES"); + // BaseCipherNames.Add(NistObjectIdentifiers.IdAes192Cbc, "AES"); + // BaseCipherNames.Add(NistObjectIdentifiers.IdAes256Cbc, "AES"); - MacAlgNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDEMac"); - MacAlgNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AESMac"); - MacAlgNames.Add(NistObjectIdentifiers.IdAes192Cbc, "AESMac"); - MacAlgNames.Add(NistObjectIdentifiers.IdAes256Cbc, "AESMac"); - MacAlgNames.Add(PkcsObjectIdentifiers.RC2Cbc, "RC2Mac"); - } + // MacAlgNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDEMac"); + // MacAlgNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AESMac"); + // MacAlgNames.Add(NistObjectIdentifiers.IdAes192Cbc, "AESMac"); + // MacAlgNames.Add(NistObjectIdentifiers.IdAes256Cbc, "AESMac"); + // MacAlgNames.Add(PkcsObjectIdentifiers.RC2Cbc, "RC2Mac"); + //} //internal static IDigest GetPrf(AlgorithmIdentifier algID) //{ @@ -82,7 +81,8 @@ namespace Org.BouncyCastle.Cms return CipherFactory.CreateContentCipher(forEncryption, encKey, encryptionAlgID); } - public AlgorithmIdentifier GenerateEncryptionAlgID(DerObjectIdentifier encryptionOID, KeyParameter encKey, SecureRandom random) + public AlgorithmIdentifier GenerateEncryptionAlgID(DerObjectIdentifier encryptionOID, KeyParameter encKey, + SecureRandom random) { return AlgorithmIdentifierFactory.GenerateEncryptionAlgID(encryptionOID, encKey.GetKey().Length * 8, random); } diff --git a/crypto/src/cms/KeyAgreeRecipientInfoGenerator.cs b/crypto/src/cms/KeyAgreeRecipientInfoGenerator.cs index 6bd2cea91..7686ee422 100644 --- a/crypto/src/cms/KeyAgreeRecipientInfoGenerator.cs +++ b/crypto/src/cms/KeyAgreeRecipientInfoGenerator.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; @@ -11,7 +11,6 @@ using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math; using Org.BouncyCastle.Security; -using Org.BouncyCastle.Utilities; using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms @@ -22,7 +21,7 @@ namespace Org.BouncyCastle.Cms private DerObjectIdentifier keyAgreementOID; private DerObjectIdentifier keyEncryptionOID; - private IList recipientCerts; + private IList<X509Certificate> recipientCerts; private AsymmetricCipherKeyPair senderKeyPair; internal KeyAgreeRecipientInfoGenerator() @@ -39,9 +38,9 @@ namespace Org.BouncyCastle.Cms set { this.keyEncryptionOID = value; } } - internal ICollection RecipientCerts + internal IEnumerable<X509Certificate> RecipientCerts { - set { this.recipientCerts = Platform.CreateArrayList(value); } + set { this.recipientCerts = new List<X509Certificate>(value); } } internal AsymmetricCipherKeyPair SenderKeyPair diff --git a/crypto/src/cms/KeyAgreeRecipientInformation.cs b/crypto/src/cms/KeyAgreeRecipientInformation.cs index 73e57a76a..8843ede0d 100644 --- a/crypto/src/cms/KeyAgreeRecipientInformation.cs +++ b/crypto/src/cms/KeyAgreeRecipientInformation.cs @@ -1,12 +1,11 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Asn1.Cms.Ecc; using Org.BouncyCastle.Asn1.Pkcs; -using Org.BouncyCastle.Asn1.Utilities; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Asn1.X9; using Org.BouncyCastle.Crypto; @@ -14,7 +13,6 @@ using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math; using Org.BouncyCastle.Pkcs; using Org.BouncyCastle.Security; -using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms { @@ -28,7 +26,7 @@ namespace Org.BouncyCastle.Cms private KeyAgreeRecipientInfo info; private Asn1OctetString encryptedKey; - internal static void ReadRecipientInfo(IList infos, KeyAgreeRecipientInfo info, + internal static void ReadRecipientInfo(IList<RecipientInformation> infos, KeyAgreeRecipientInfo info, CmsSecureReadable secureReadable) { try diff --git a/crypto/src/cms/RecipientInformationStore.cs b/crypto/src/cms/RecipientInformationStore.cs index 33b472f9d..06d093805 100644 --- a/crypto/src/cms/RecipientInformationStore.cs +++ b/crypto/src/cms/RecipientInformationStore.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using Org.BouncyCastle.Utilities; @@ -7,26 +7,25 @@ namespace Org.BouncyCastle.Cms { public class RecipientInformationStore { - private readonly IList all; //ArrayList[RecipientInformation] - private readonly IDictionary table = Platform.CreateHashtable(); // Hashtable[RecipientID, ArrayList[RecipientInformation]] + private readonly IList<RecipientInformation> m_all; + private readonly IDictionary<RecipientID, IList<RecipientInformation>> m_table = + new Dictionary<RecipientID, IList<RecipientInformation>>(); - public RecipientInformationStore( - ICollection recipientInfos) + public RecipientInformationStore(IEnumerable<RecipientInformation> recipientInfos) { foreach (RecipientInformation recipientInformation in recipientInfos) { RecipientID rid = recipientInformation.RecipientID; - IList list = (IList)table[rid]; - if (list == null) - { - table[rid] = list = Platform.CreateArrayList(1); + if (!m_table.TryGetValue(rid, out var list)) + { + m_table[rid] = list = new List<RecipientInformation>(1); } list.Add(recipientInformation); } - this.all = Platform.CreateArrayList(recipientInfos); + this.m_all = new List<RecipientInformation>(recipientInfos); } public RecipientInformation this[RecipientID selector] @@ -41,12 +40,12 @@ namespace Org.BouncyCastle.Cms * @param selector to identify a recipient * @return a single RecipientInformation object. Null if none matches. */ - public RecipientInformation GetFirstRecipient( - RecipientID selector) + public RecipientInformation GetFirstRecipient(RecipientID selector) { - IList list = (IList) table[selector]; + if (!m_table.TryGetValue(selector, out var list)) + return null; - return list == null ? null : (RecipientInformation) list[0]; + return list[0]; } /** @@ -56,7 +55,7 @@ namespace Org.BouncyCastle.Cms */ public int Count { - get { return all.Count; } + get { return m_all.Count; } } /** @@ -64,9 +63,9 @@ namespace Org.BouncyCastle.Cms * * @return a collection of recipients. */ - public ICollection GetRecipients() + public IList<RecipientInformation> GetRecipients() { - return Platform.CreateArrayList(all); + return new List<RecipientInformation>(m_all); } /** @@ -75,12 +74,12 @@ namespace Org.BouncyCastle.Cms * @param selector a recipient id to select against. * @return a collection of RecipientInformation objects. */ - public ICollection GetRecipients( - RecipientID selector) + public IList<RecipientInformation> GetRecipients(RecipientID selector) { - IList list = (IList)table[selector]; + if (!m_table.TryGetValue(selector, out var list)) + return new List<RecipientInformation>(0); - return list == null ? Platform.CreateArrayList() : Platform.CreateArrayList(list); + return new List<RecipientInformation>(list); } } } diff --git a/crypto/src/cms/SignerInformation.cs b/crypto/src/cms/SignerInformation.cs index 3ab1c09f9..551d9b737 100644 --- a/crypto/src/cms/SignerInformation.cs +++ b/crypto/src/cms/SignerInformation.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; @@ -256,10 +256,10 @@ namespace Org.BouncyCastle.Cms Asn1.Cms.AttributeTable unsignedAttributeTable = UnsignedAttributes; if (unsignedAttributeTable == null) { - return new SignerInformationStore(Platform.CreateArrayList(0)); + return new SignerInformationStore(new List<SignerInformation>(0)); } - IList counterSignatures = Platform.CreateArrayList(); + var counterSignatures = new List<SignerInformation>(); /* The UnsignedAttributes syntax is defined as a SET OF Attributes. The diff --git a/crypto/src/cms/SignerInformationStore.cs b/crypto/src/cms/SignerInformationStore.cs index 27940865d..7fa3ef678 100644 --- a/crypto/src/cms/SignerInformationStore.cs +++ b/crypto/src/cms/SignerInformationStore.cs @@ -1,30 +1,27 @@ using System; -using System.Collections; -using System.IO; - -using Org.BouncyCastle.Utilities; +using System.Collections.Generic; namespace Org.BouncyCastle.Cms { public class SignerInformationStore { - private readonly IList all; //ArrayList[SignerInformation] - private readonly IDictionary table = Platform.CreateHashtable(); // Hashtable[SignerID, ArrayList[SignerInformation]] + private readonly IList<SignerInformation> all; + private readonly IDictionary<SignerID, IList<SignerInformation>> m_table = + new Dictionary<SignerID, IList<SignerInformation>>(); /** * Create a store containing a single SignerInformation object. * * @param signerInfo the signer information to contain. */ - public SignerInformationStore( - SignerInformation signerInfo) + public SignerInformationStore(SignerInformation signerInfo) { - this.all = Platform.CreateArrayList(1); + this.all = new List<SignerInformation>(1); this.all.Add(signerInfo); SignerID sid = signerInfo.SignerID; - table[sid] = all; + m_table[sid] = all; } /** @@ -32,23 +29,21 @@ namespace Org.BouncyCastle.Cms * * @param signerInfos a collection signer information objects to contain. */ - public SignerInformationStore( - ICollection signerInfos) + public SignerInformationStore(IEnumerable<SignerInformation> signerInfos) { foreach (SignerInformation signer in signerInfos) { SignerID sid = signer.SignerID; - IList list = (IList)table[sid]; - if (list == null) + if (!m_table.TryGetValue(sid, out var list)) { - table[sid] = list = Platform.CreateArrayList(1); + m_table[sid] = list = new List<SignerInformation>(1); } list.Add(signer); } - this.all = Platform.CreateArrayList(signerInfos); + this.all = new List<SignerInformation>(signerInfos); } /** @@ -58,12 +53,12 @@ namespace Org.BouncyCastle.Cms * @param selector to identify a signer * @return a single SignerInformation object. Null if none matches. */ - public SignerInformation GetFirstSigner( - SignerID selector) + public SignerInformation GetFirstSigner(SignerID selector) { - IList list = (IList) table[selector]; + if (m_table.TryGetValue(selector, out var list)) + return list[0]; - return list == null ? null : (SignerInformation) list[0]; + return null; } /// <summary>The number of signers in the collection.</summary> @@ -73,9 +68,9 @@ namespace Org.BouncyCastle.Cms } /// <returns>An ICollection of all signers in the collection</returns> - public ICollection GetSigners() + public IList<SignerInformation> GetSigners() { - return Platform.CreateArrayList(all); + return new List<SignerInformation>(all); } /** @@ -84,12 +79,12 @@ namespace Org.BouncyCastle.Cms * @param selector a signer id to select against. * @return a collection of SignerInformation objects. */ - public ICollection GetSigners( - SignerID selector) + public IList<SignerInformation> GetSigners(SignerID selector) { - IList list = (IList) table[selector]; + if (m_table.TryGetValue(selector, out var list)) + return new List<SignerInformation>(list); - return list == null ? Platform.CreateArrayList() : Platform.CreateArrayList(list); + return new List<SignerInformation>(0); } } } diff --git a/crypto/src/cms/SimpleAttributeTableGenerator.cs b/crypto/src/cms/SimpleAttributeTableGenerator.cs index b3df21c29..7b20ac3e2 100644 --- a/crypto/src/cms/SimpleAttributeTableGenerator.cs +++ b/crypto/src/cms/SimpleAttributeTableGenerator.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using Org.BouncyCastle.Asn1.Cms; @@ -19,8 +19,7 @@ namespace Org.BouncyCastle.Cms this.attributes = attributes; } - public virtual AttributeTable GetAttributes( - IDictionary parameters) + public virtual AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { return attributes; } diff --git a/crypto/src/tsp/TimeStampToken.cs b/crypto/src/tsp/TimeStampToken.cs index 258f14dfb..2b7187cad 100644 --- a/crypto/src/tsp/TimeStampToken.cs +++ b/crypto/src/tsp/TimeStampToken.cs @@ -42,7 +42,7 @@ namespace Org.BouncyCastle.Tsp throw new TspValidationException("ContentInfo object not for a time stamp."); } - ICollection signers = tsToken.GetSignerInfos().GetSigners(); + var signers = tsToken.GetSignerInfos().GetSigners(); if (signers.Count != 1) { diff --git a/crypto/src/tsp/TimeStampTokenGenerator.cs b/crypto/src/tsp/TimeStampTokenGenerator.cs index 7d711eb22..4289d7d24 100644 --- a/crypto/src/tsp/TimeStampTokenGenerator.cs +++ b/crypto/src/tsp/TimeStampTokenGenerator.cs @@ -450,7 +450,8 @@ namespace Org.BouncyCastle.Tsp return sBuild.ToString(); } - private class TableGen : CmsAttributeTableGenerator + private class TableGen + : CmsAttributeTableGenerator { private readonly SignerInfoGenerator infoGen; private readonly EssCertID essCertID; @@ -462,7 +463,7 @@ namespace Org.BouncyCastle.Tsp this.essCertID = essCertID; } - public Asn1.Cms.AttributeTable GetAttributes(IDictionary parameters) + public Asn1.Cms.AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { Asn1.Cms.AttributeTable tab = infoGen.signedGen.GetAttributes(parameters); if (tab[PkcsObjectIdentifiers.IdAASigningCertificate] == null) @@ -473,7 +474,8 @@ namespace Org.BouncyCastle.Tsp } } - private class TableGen2 : CmsAttributeTableGenerator + private class TableGen2 + : CmsAttributeTableGenerator { private readonly SignerInfoGenerator infoGen; private readonly EssCertIDv2 essCertID; @@ -485,7 +487,7 @@ namespace Org.BouncyCastle.Tsp this.essCertID = essCertID; } - public Asn1.Cms.AttributeTable GetAttributes(IDictionary parameters) + public Asn1.Cms.AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { Asn1.Cms.AttributeTable tab = infoGen.signedGen.GetAttributes(parameters); if (tab[PkcsObjectIdentifiers.IdAASigningCertificateV2] == null) diff --git a/crypto/test/src/cms/test/AuthenticatedDataStreamTest.cs b/crypto/test/src/cms/test/AuthenticatedDataStreamTest.cs index 68f38d190..8ae275a69 100644 --- a/crypto/test/src/cms/test/AuthenticatedDataStreamTest.cs +++ b/crypto/test/src/cms/test/AuthenticatedDataStreamTest.cs @@ -1,15 +1,12 @@ using System; -using System.Collections; using System.IO; using System.Text; using NUnit.Framework; -using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Utilities; -using Org.BouncyCastle.Utilities.Encoders; using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms.Tests @@ -94,7 +91,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ad.MacAlgOid, macAlg); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); diff --git a/crypto/test/src/cms/test/AuthenticatedDataTest.cs b/crypto/test/src/cms/test/AuthenticatedDataTest.cs index 55f220265..f1e7103b2 100644 --- a/crypto/test/src/cms/test/AuthenticatedDataTest.cs +++ b/crypto/test/src/cms/test/AuthenticatedDataTest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Text; using NUnit.Framework; @@ -167,7 +166,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(CmsAuthenticatedDataGenerator.DesEde3Cbc, ad.MacAlgOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -199,7 +198,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(CmsAuthenticatedDataGenerator.DesEde3Cbc, ad.MacAlgOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -230,7 +229,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ad.MacAlgOid, macAlg); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -266,7 +265,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(CmsAuthenticatedDataGenerator.DesEde3Cbc, ad.MacAlgOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -297,7 +296,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(CmsAuthenticatedDataGenerator.DesEde3Cbc, ad.MacAlgOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); diff --git a/crypto/test/src/cms/test/CMSTestUtil.cs b/crypto/test/src/cms/test/CMSTestUtil.cs index 596072937..b6818bb8a 100644 --- a/crypto/test/src/cms/test/CMSTestUtil.cs +++ b/crypto/test/src/cms/test/CMSTestUtil.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; diff --git a/crypto/test/src/cms/test/EnvelopedDataStreamTest.cs b/crypto/test/src/cms/test/EnvelopedDataStreamTest.cs index 39776e852..ddf14e9a6 100644 --- a/crypto/test/src/cms/test/EnvelopedDataStreamTest.cs +++ b/crypto/test/src/cms/test/EnvelopedDataStreamTest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.IO; using System.Text; @@ -7,14 +6,12 @@ using NUnit.Framework; using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Pkcs; -using Org.BouncyCastle.Cms; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.Encoders; using Org.BouncyCastle.Utilities.IO; -using Org.BouncyCastle.Utilities.Test; using Org.BouncyCastle.X509; namespace Org.BouncyCastle.Cms.Tests @@ -109,7 +106,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ep.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); // PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyData); // KeyFactory keyFact = KeyFactory.GetInstance("RSA"); @@ -138,7 +135,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ep.EncryptionAlgOid, expectedOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); foreach (RecipientInformation recipient in c) { @@ -319,15 +316,14 @@ namespace Org.BouncyCastle.Cms.Tests outStream.Close(); - CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(bOut.ToArray()); - RecipientInformationStore recipients = ep.GetRecipientInfos(); - ICollection c = recipients.GetRecipients(); - - IEnumerator e = c.GetEnumerator(); + CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(bOut.ToArray()); + RecipientInformationStore recipients = ep.GetRecipientInfos(); + var c = recipients.GetRecipients(); + var e = c.GetEnumerator(); if (e.MoveNext()) { - RecipientInformation recipient = (RecipientInformation) e.Current; + RecipientInformation recipient = e.Current; Assert.AreEqual(recipient.KeyEncryptionAlgOid, PkcsObjectIdentifiers.RsaEncryption.Id); @@ -382,7 +378,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ep.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); foreach (RecipientInformation recipient in c) { @@ -423,7 +419,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ep.EncryptionAlgOid, CmsEnvelopedDataGenerator.DesEde3Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); foreach (RecipientInformation recipient in c) { diff --git a/crypto/test/src/cms/test/EnvelopedDataTest.cs b/crypto/test/src/cms/test/EnvelopedDataTest.cs index 1017d35db..9df25f41e 100644 --- a/crypto/test/src/cms/test/EnvelopedDataTest.cs +++ b/crypto/test/src/cms/test/EnvelopedDataTest.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.Text; using NUnit.Framework; @@ -10,11 +10,9 @@ using Org.BouncyCastle.Asn1.Ntt; using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Cms; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Operators; using Org.BouncyCastle.Crypto.Parameters; -using Org.BouncyCastle.Operators; using Org.BouncyCastle.Security; using Org.BouncyCastle.Utilities; using Org.BouncyCastle.Utilities.Encoders; @@ -194,7 +192,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.DesEde3Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -225,7 +223,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, "1.2.840.113549.3.4"); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -255,7 +253,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, "1.2.840.113549.3.4"); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -284,7 +282,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, OiwObjectIdentifiers.DesCbc.Id); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -314,7 +312,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -344,7 +342,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -373,7 +371,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -410,7 +408,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -443,7 +441,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -537,7 +535,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.IsTrue(asn1Params.IsInstanceOfType(ed.EncryptionAlgorithmID.Parameters)); } - ArrayList c = new ArrayList(recipients.GetRecipients()); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -565,7 +563,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.DesEde3Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -654,7 +652,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.DesEde3Cbc); - ArrayList c = new ArrayList(recipients.GetRecipients()); + var c = recipients.GetRecipients(); Assert.IsTrue(c.Count > 0); @@ -727,7 +725,7 @@ namespace Org.BouncyCastle.Cms.Tests CmsEnvelopedDataGenerator edGen = new CmsEnvelopedDataGenerator(); - ArrayList recipientCerts = new ArrayList(); + var recipientCerts = new List<X509Certificate>(); recipientCerts.Add(ReciECCert); recipientCerts.Add(ReciECCert2); @@ -817,7 +815,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual("1.2.840.113549.3.7", ed.EncryptionAlgOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -844,14 +842,14 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual("1.2.840.113549.3.2", ed.EncryptionAlgOid); - ICollection c = recipients.GetRecipients(); - IEnumerator e = c.GetEnumerator(); + var c = recipients.GetRecipients(); + var e = c.GetEnumerator(); if (e.MoveNext()) { do { - RecipientInformation recipient = (RecipientInformation) e.Current; + RecipientInformation recipient = e.Current; if (recipient is KeyTransRecipientInformation) { @@ -895,7 +893,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -928,7 +926,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(ed.EncryptionAlgOid, CmsEnvelopedDataGenerator.Aes128Cbc); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -956,7 +954,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(wrapAlg, ed.EncryptionAlgOid); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(1, c.Count); @@ -981,7 +979,7 @@ namespace Org.BouncyCastle.Cms.Tests RecipientInformationStore recipients = ed.GetRecipientInfos(); - ICollection c = recipients.GetRecipients(); + var c = recipients.GetRecipients(); Assert.AreEqual(wrapAlg, ed.EncryptionAlgOid); Assert.AreEqual(1, c.Count); diff --git a/crypto/test/src/cms/test/MiscDataStreamTest.cs b/crypto/test/src/cms/test/MiscDataStreamTest.cs index 58259998b..6e665c887 100644 --- a/crypto/test/src/cms/test/MiscDataStreamTest.cs +++ b/crypto/test/src/cms/test/MiscDataStreamTest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; diff --git a/crypto/test/src/cms/test/Rfc4134Test.cs b/crypto/test/src/cms/test/Rfc4134Test.cs index d47dd84ff..072f0655c 100644 --- a/crypto/test/src/cms/test/Rfc4134Test.cs +++ b/crypto/test/src/cms/test/Rfc4134Test.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using NUnit.Framework; @@ -158,15 +157,15 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(envelopedData.EncryptionAlgOid, symAlgorithmOID); - ArrayList c = new ArrayList(recipients.GetRecipients()); + var c = recipients.GetRecipients(); Assert.LessOrEqual(1, c.Count); Assert.GreaterOrEqual(2, c.Count); - VerifyRecipient((RecipientInformation)c[0], privKey); + VerifyRecipient(c[0], privKey); if (c.Count == 2) { - RecipientInformation recInfo = (RecipientInformation)c[1]; + RecipientInformation recInfo = c[1]; Assert.AreEqual(PkcsObjectIdentifiers.IdAlgCmsRC2Wrap.Id, recInfo.KeyEncryptionAlgOid); } @@ -183,7 +182,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(envelopedParser.EncryptionAlgOid, symAlgorithmOID); - ArrayList c = new ArrayList(recipients.GetRecipients()); + var c = recipients.GetRecipients(); Assert.LessOrEqual(1, c.Count); Assert.GreaterOrEqual(2, c.Count); @@ -217,9 +216,9 @@ namespace Org.BouncyCastle.Cms.Tests private SignerInformation GetFirstSignerInfo(SignerInformationStore store) { - IEnumerator e = store.GetSigners().GetEnumerator(); + var e = store.GetSigners().GetEnumerator(); e.MoveNext(); - return (SignerInformation)e.Current; + return e.Current; } private void VerifyCounterSignature(SignerInformation signInfo, byte[] certificate) diff --git a/crypto/test/src/cms/test/SignedDataStreamTest.cs b/crypto/test/src/cms/test/SignedDataStreamTest.cs index 15924cc47..37f41783d 100644 --- a/crypto/test/src/cms/test/SignedDataStreamTest.cs +++ b/crypto/test/src/cms/test/SignedDataStreamTest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; @@ -541,7 +540,7 @@ namespace Org.BouncyCastle.Cms.Tests byte[] contentDigest = (byte[])gen.GetGeneratedDigests()[CmsSignedGenerator.DigestSha1]; - ArrayList signers = new ArrayList(sp.GetSignerInfos().GetSigners()); + var signers = sp.GetSignerInfos().GetSigners(); AttributeTable table = ((SignerInformation) signers[0]).SignedAttributes; Asn1.Cms.Attribute hash = table[CmsAttributes.MessageDigest]; @@ -576,7 +575,7 @@ namespace Org.BouncyCastle.Cms.Tests private class SignedGenAttributeTableGenerator : DefaultSignedAttributeTableGenerator { - public override AttributeTable GetAttributes(IDictionary parameters) + public override AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { var table = CreateStandardAttributeTable(parameters); @@ -592,8 +591,7 @@ namespace Org.BouncyCastle.Cms.Tests private class UnsignedGenAttributeTableGenerator : CmsAttributeTableGenerator { - public AttributeTable GetAttributes( - IDictionary parameters) + public AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { DerOctetString val = new DerOctetString((byte[])parameters[CmsAttributeTableParameter.Signature]); Asn1.Cms.Attribute attr = new Asn1.Cms.Attribute(dummyOid2, new DerSet(val)); @@ -629,7 +627,7 @@ namespace Org.BouncyCastle.Cms.Tests byte[] contentDigest = (byte[])gen.GetGeneratedDigests()[CmsSignedGenerator.DigestSha1]; - ArrayList signers = new ArrayList(sp.GetSignerInfos().GetSigners()); + var signers = sp.GetSignerInfos().GetSigners(); AttributeTable table = ((SignerInformation) signers[0]).SignedAttributes; Asn1.Cms.Attribute hash = table[CmsAttributes.MessageDigest]; @@ -787,9 +785,9 @@ namespace Org.BouncyCastle.Cms.Tests sd = new CmsSignedData(new CmsProcessableByteArray(data), newOut.ToArray()); - IEnumerator signerEnum = sd.GetSignerInfos().GetSigners().GetEnumerator(); + var signerEnum = sd.GetSignerInfos().GetSigners().GetEnumerator(); signerEnum.MoveNext(); - SignerInformation signer = (SignerInformation)signerEnum.Current; + SignerInformation signer = signerEnum.Current; Assert.AreEqual(signer.DigestAlgOid, CmsSignedDataStreamGenerator.DigestSha224); @@ -844,9 +842,9 @@ namespace Org.BouncyCastle.Cms.Tests sd = new CmsSignedData(newOut.ToArray()); - IEnumerator signerEnum = sd.GetSignerInfos().GetSigners().GetEnumerator(); + var signerEnum = sd.GetSignerInfos().GetSigners().GetEnumerator(); signerEnum.MoveNext(); - SignerInformation signer = (SignerInformation) signerEnum.Current; + SignerInformation signer = signerEnum.Current; Assert.AreEqual(signer.DigestAlgOid, CmsSignedDataStreamGenerator.DigestSha224); diff --git a/crypto/test/src/cms/test/SignedDataTest.cs b/crypto/test/src/cms/test/SignedDataTest.cs index 7147bc8da..d0702c836 100644 --- a/crypto/test/src/cms/test/SignedDataTest.cs +++ b/crypto/test/src/cms/test/SignedDataTest.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; @@ -381,7 +380,7 @@ namespace Org.BouncyCastle.Cms.Tests var x509Certs = s.GetCertificates(); SignerInformationStore signers = s.GetSignerInfos(); - ICollection c = signers.GetSigners(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -408,7 +407,7 @@ namespace Org.BouncyCastle.Cms.Tests var x509Certs = s.GetCertificates(); SignerInformationStore signers = s.GetSignerInfos(); - ICollection c = signers.GetSigners(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -444,15 +443,15 @@ namespace Org.BouncyCastle.Cms.Tests var x509Certs = CmsTestUtil.MakeCertStore(OrigCert, SignCert); CmsSignedDataGenerator gen = new CmsSignedDataGenerator(); - gen.AddSigner(OrigKP.Private, OrigCert, CmsSignedDataGenerator.DigestSha1); - gen.AddSigner(OrigKP.Private, OrigCert, CmsSignedDataGenerator.DigestMD5); + gen.AddSigner(OrigKP.Private, OrigCert, CmsSignedGenerator.DigestSha1); + gen.AddSigner(OrigKP.Private, OrigCert, CmsSignedGenerator.DigestMD5); gen.AddCertificates(x509Certs); CmsSignedData s = gen.Generate(msg); - IDictionary hashes = new Hashtable(); - hashes.Add(CmsSignedDataGenerator.DigestSha1, DigestUtilities.CalculateDigest("SHA1", data)); - hashes.Add(CmsSignedDataGenerator.DigestMD5, DigestUtilities.CalculateDigest("MD5", data)); + var hashes = new Dictionary<string, byte[]>(StringComparer.OrdinalIgnoreCase); + hashes.Add(CmsSignedGenerator.DigestSha1, DigestUtilities.CalculateDigest("SHA1", data)); + hashes.Add(CmsSignedGenerator.DigestMD5, DigestUtilities.CalculateDigest("MD5", data)); s = new CmsSignedData(hashes, s.GetEncoded()); @@ -482,7 +481,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(2, signers.Count); SignerID sid = null; - ICollection c = signers.GetSigners(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -576,7 +575,7 @@ namespace Org.BouncyCastle.Cms.Tests Assert.AreEqual(2, signers.Count); SignerID sid = null; - ICollection c = signers.GetSigners(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -969,7 +968,7 @@ namespace Org.BouncyCastle.Cms.Tests gen.AddCrls(x509Crls); CmsSignedData s = gen.Generate(msg, true); - SignerInformation origSigner = (SignerInformation) new ArrayList(s.GetSignerInfos().GetSigners())[0]; + SignerInformation origSigner = s.GetSignerInfos().GetSigners()[0]; SignerInformationStore counterSigners1 = gen.GenerateCounterSigners(origSigner); SignerInformationStore counterSigners2 = gen.GenerateCounterSigners(origSigner); @@ -977,7 +976,7 @@ namespace Org.BouncyCastle.Cms.Tests SignerInformation signer2 = SignerInformation.AddCounterSigners(signer1, counterSigners2); SignerInformationStore cs = signer2.GetCounterSignatures(); - ICollection csSigners = cs.GetSigners(); + var csSigners = cs.GetSigners(); Assert.AreEqual(2, csSigners.Count); foreach (SignerInformation cSigner in csSigners) @@ -1150,7 +1149,7 @@ namespace Org.BouncyCastle.Cms.Tests x509Crls = s.GetCrls(); SignerInformationStore signers = s.GetSignerInfos(); - ICollection c = signers.GetSigners(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -1223,7 +1222,7 @@ namespace Org.BouncyCastle.Cms.Tests var x509Certs = s.GetCertificates(); signers = s.GetSignerInfos(); - ICollection c = signers.GetSigners(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -1245,8 +1244,8 @@ namespace Org.BouncyCastle.Cms.Tests var x509Certs = s.GetCertificates(); - SignerInformationStore signers = s.GetSignerInfos(); - ICollection c = signers.GetSigners(); + SignerInformationStore signers = s.GetSignerInfos(); + var c = signers.GetSigners(); foreach (SignerInformation signer in c) { @@ -1459,9 +1458,9 @@ namespace Org.BouncyCastle.Cms.Tests // CmsSignedData sd = CmsSignedData.ReplaceSigners(original, newSD.GetSignerInfos()); - IEnumerator signerEnum = sd.GetSignerInfos().GetSigners().GetEnumerator(); + var signerEnum = sd.GetSignerInfos().GetSigners().GetEnumerator(); signerEnum.MoveNext(); - SignerInformation signer = (SignerInformation) signerEnum.Current; + SignerInformation signer = signerEnum.Current; Assert.AreEqual(CmsSignedDataGenerator.DigestSha224, signer.DigestAlgOid); @@ -1496,10 +1495,10 @@ namespace Org.BouncyCastle.Cms.Tests CmsSignedData sig = new CmsSignedData(GetInput("counterSig.p7m")); SignerInformationStore ss = sig.GetSignerInfos(); - ArrayList signers = new ArrayList(ss.GetSigners()); + var signers = ss.GetSigners(); SignerInformationStore cs = ((SignerInformation)signers[0]).GetCounterSignatures(); - ArrayList csSigners = new ArrayList(cs.GetSigners()); + var csSigners = cs.GetSigners(); Assert.AreEqual(1, csSigners.Count); foreach (SignerInformation cSigner in csSigners) @@ -1544,7 +1543,7 @@ namespace Org.BouncyCastle.Cms.Tests foreach (SignerInformation sigI in sd.GetSignerInfos().GetSigners()) { SignerInformationStore counter = sigI.GetCounterSignatures(); - IList sigs = new ArrayList(counter.GetSigners()); + var sigs = counter.GetSigners(); Assert.AreEqual(2, sigs.Count); } diff --git a/crypto/test/src/tsp/test/NewTspTest.cs b/crypto/test/src/tsp/test/NewTspTest.cs index 34be0dadf..c188cb26a 100644 --- a/crypto/test/src/tsp/test/NewTspTest.cs +++ b/crypto/test/src/tsp/test/NewTspTest.cs @@ -893,7 +893,8 @@ namespace Org.BouncyCastle.Tsp.Tests .Build(sigfact, cert); } - private class TestAttrGen : CmsAttributeTableGenerator + private class TestAttrGen + : CmsAttributeTableGenerator { private readonly EssCertID mEssCertID; private readonly EssCertIDv2 mEssCertIDv2; @@ -914,15 +915,17 @@ namespace Org.BouncyCastle.Tsp.Tests get { return mEssCertIDv2; } } - public Asn1.Cms.AttributeTable GetAttributes(IDictionary parameters) + public Asn1.Cms.AttributeTable GetAttributes(IDictionary<CmsAttributeTableParameter, object> parameters) { CmsAttributeTableGenerator attrGen = new DefaultSignedAttributeTableGenerator(); Asn1.Cms.AttributeTable table = attrGen.GetAttributes(parameters); - table = table.Add(PkcsObjectIdentifiers.IdAASigningCertificate, new SigningCertificate(EssCertID)); - table = table.Add(PkcsObjectIdentifiers.IdAASigningCertificateV2, new SigningCertificateV2(new EssCertIDv2[] { EssCertIDv2 })); - return table; + return table.Add( + new Asn1.Cms.Attribute(PkcsObjectIdentifiers.IdAASigningCertificate, + new DerSet(new SigningCertificate(EssCertID))), + new Asn1.Cms.Attribute(PkcsObjectIdentifiers.IdAASigningCertificateV2, + new DerSet(new SigningCertificateV2(new EssCertIDv2[]{ EssCertIDv2 })))); } } } |