diff options
Diffstat (limited to 'crypto/src/tsp/TSPUtil.cs')
-rw-r--r-- | crypto/src/tsp/TSPUtil.cs | 132 |
1 files changed, 60 insertions, 72 deletions
diff --git a/crypto/src/tsp/TSPUtil.cs b/crypto/src/tsp/TSPUtil.cs index 34ff53b60..a9402ac6d 100644 --- a/crypto/src/tsp/TSPUtil.cs +++ b/crypto/src/tsp/TSPUtil.cs @@ -1,5 +1,5 @@ using System; -using System.Collections; +using System.Collections.Generic; using System.IO; using Org.BouncyCastle.Asn1; @@ -22,50 +22,47 @@ namespace Org.BouncyCastle.Tsp { public class TspUtil { - private static ISet EmptySet = CollectionUtilities.ReadOnly(new HashSet()); - private static IList EmptyList = CollectionUtilities.ReadOnly(Platform.CreateArrayList()); - - private static readonly IDictionary digestLengths = Platform.CreateHashtable(); - private static readonly IDictionary digestNames = Platform.CreateHashtable(); + private static readonly Dictionary<string, int> DigestLengths = new Dictionary<string, int>(); + private static readonly Dictionary<string, string> DigestNames = new Dictionary<string, string>(); static TspUtil() { - digestLengths.Add(PkcsObjectIdentifiers.MD5.Id, 16); - digestLengths.Add(OiwObjectIdentifiers.IdSha1.Id, 20); - digestLengths.Add(NistObjectIdentifiers.IdSha224.Id, 28); - digestLengths.Add(NistObjectIdentifiers.IdSha256.Id, 32); - digestLengths.Add(NistObjectIdentifiers.IdSha384.Id, 48); - digestLengths.Add(NistObjectIdentifiers.IdSha512.Id, 64); - digestLengths.Add(TeleTrusTObjectIdentifiers.RipeMD128.Id, 16); - digestLengths.Add(TeleTrusTObjectIdentifiers.RipeMD160.Id, 20); - digestLengths.Add(TeleTrusTObjectIdentifiers.RipeMD256.Id, 32); - digestLengths.Add(CryptoProObjectIdentifiers.GostR3411.Id, 32); - digestLengths.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256.Id, 32); - digestLengths.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512.Id, 64); - digestLengths.Add(GMObjectIdentifiers.sm3.Id, 32); - - digestNames.Add(PkcsObjectIdentifiers.MD5.Id, "MD5"); - digestNames.Add(OiwObjectIdentifiers.IdSha1.Id, "SHA1"); - digestNames.Add(NistObjectIdentifiers.IdSha224.Id, "SHA224"); - digestNames.Add(NistObjectIdentifiers.IdSha256.Id, "SHA256"); - digestNames.Add(NistObjectIdentifiers.IdSha384.Id, "SHA384"); - digestNames.Add(NistObjectIdentifiers.IdSha512.Id, "SHA512"); - digestNames.Add(PkcsObjectIdentifiers.MD5WithRsaEncryption.Id, "MD5"); - digestNames.Add(PkcsObjectIdentifiers.Sha1WithRsaEncryption.Id, "SHA1"); - digestNames.Add(PkcsObjectIdentifiers.Sha224WithRsaEncryption.Id, "SHA224"); - digestNames.Add(PkcsObjectIdentifiers.Sha256WithRsaEncryption.Id, "SHA256"); - digestNames.Add(PkcsObjectIdentifiers.Sha384WithRsaEncryption.Id, "SHA384"); - digestNames.Add(PkcsObjectIdentifiers.Sha512WithRsaEncryption.Id, "SHA512"); - digestNames.Add(TeleTrusTObjectIdentifiers.RipeMD128.Id, "RIPEMD128"); - digestNames.Add(TeleTrusTObjectIdentifiers.RipeMD160.Id, "RIPEMD160"); - digestNames.Add(TeleTrusTObjectIdentifiers.RipeMD256.Id, "RIPEMD256"); - digestNames.Add(CryptoProObjectIdentifiers.GostR3411.Id, "GOST3411"); - digestNames.Add(OiwObjectIdentifiers.DsaWithSha1.Id, "SHA1"); - digestNames.Add(OiwObjectIdentifiers.Sha1WithRsa.Id, "SHA1"); - digestNames.Add(OiwObjectIdentifiers.MD5WithRsa.Id, "MD5"); - digestNames.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256.Id, "GOST3411-2012-256"); - digestNames.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512.Id, "GOST3411-2012-512"); - digestNames.Add(GMObjectIdentifiers.sm3.Id, "SM3"); + DigestLengths.Add(PkcsObjectIdentifiers.MD5.Id, 16); + DigestLengths.Add(OiwObjectIdentifiers.IdSha1.Id, 20); + DigestLengths.Add(NistObjectIdentifiers.IdSha224.Id, 28); + DigestLengths.Add(NistObjectIdentifiers.IdSha256.Id, 32); + DigestLengths.Add(NistObjectIdentifiers.IdSha384.Id, 48); + DigestLengths.Add(NistObjectIdentifiers.IdSha512.Id, 64); + DigestLengths.Add(TeleTrusTObjectIdentifiers.RipeMD128.Id, 16); + DigestLengths.Add(TeleTrusTObjectIdentifiers.RipeMD160.Id, 20); + DigestLengths.Add(TeleTrusTObjectIdentifiers.RipeMD256.Id, 32); + DigestLengths.Add(CryptoProObjectIdentifiers.GostR3411.Id, 32); + DigestLengths.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256.Id, 32); + DigestLengths.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512.Id, 64); + DigestLengths.Add(GMObjectIdentifiers.sm3.Id, 32); + + DigestNames.Add(PkcsObjectIdentifiers.MD5.Id, "MD5"); + DigestNames.Add(OiwObjectIdentifiers.IdSha1.Id, "SHA1"); + DigestNames.Add(NistObjectIdentifiers.IdSha224.Id, "SHA224"); + DigestNames.Add(NistObjectIdentifiers.IdSha256.Id, "SHA256"); + DigestNames.Add(NistObjectIdentifiers.IdSha384.Id, "SHA384"); + DigestNames.Add(NistObjectIdentifiers.IdSha512.Id, "SHA512"); + DigestNames.Add(PkcsObjectIdentifiers.MD5WithRsaEncryption.Id, "MD5"); + DigestNames.Add(PkcsObjectIdentifiers.Sha1WithRsaEncryption.Id, "SHA1"); + DigestNames.Add(PkcsObjectIdentifiers.Sha224WithRsaEncryption.Id, "SHA224"); + DigestNames.Add(PkcsObjectIdentifiers.Sha256WithRsaEncryption.Id, "SHA256"); + DigestNames.Add(PkcsObjectIdentifiers.Sha384WithRsaEncryption.Id, "SHA384"); + DigestNames.Add(PkcsObjectIdentifiers.Sha512WithRsaEncryption.Id, "SHA512"); + DigestNames.Add(TeleTrusTObjectIdentifiers.RipeMD128.Id, "RIPEMD128"); + DigestNames.Add(TeleTrusTObjectIdentifiers.RipeMD160.Id, "RIPEMD160"); + DigestNames.Add(TeleTrusTObjectIdentifiers.RipeMD256.Id, "RIPEMD256"); + DigestNames.Add(CryptoProObjectIdentifiers.GostR3411.Id, "GOST3411"); + DigestNames.Add(OiwObjectIdentifiers.DsaWithSha1.Id, "SHA1"); + DigestNames.Add(OiwObjectIdentifiers.Sha1WithRsa.Id, "SHA1"); + DigestNames.Add(OiwObjectIdentifiers.MD5WithRsa.Id, "MD5"); + DigestNames.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256.Id, "GOST3411-2012-256"); + DigestNames.Add(RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512.Id, "GOST3411-2012-512"); + DigestNames.Add(GMObjectIdentifiers.sm3.Id, "SM3"); } @@ -78,10 +75,10 @@ namespace Org.BouncyCastle.Tsp * @return a collection of TimeStampToken objects * @throws TSPValidationException */ - public static ICollection GetSignatureTimestamps( + public static IList<TimeStampToken> GetSignatureTimestamps( SignerInformation signerInfo) { - IList timestamps = Platform.CreateArrayList(); + var timestamps = new List<TimeStampToken>(); Asn1.Cms.AttributeTable unsignedAttrs = signerInfo.UnsignedAttributes; if (unsignedAttrs != null) @@ -161,54 +158,45 @@ namespace Org.BouncyCastle.Tsp /// Return the digest algorithm using one of the standard JCA string /// representations rather than the algorithm identifier (if possible). /// </summary> - internal static string GetDigestAlgName( - string digestAlgOID) + internal static string GetDigestAlgName(string digestAlgOid) { - string digestName = (string) digestNames[digestAlgOID]; - - return digestName != null ? digestName : digestAlgOID; + return CollectionUtilities.GetValueOrKey(DigestNames, digestAlgOid); } - internal static int GetDigestLength( - string digestAlgOID) + internal static int GetDigestLength(string digestAlgOid) { - if (!digestLengths.Contains(digestAlgOID)) + if (!DigestLengths.TryGetValue(digestAlgOid, out int length)) throw new TspException("digest algorithm cannot be found."); - return (int)digestLengths[digestAlgOID]; + return length; } - internal static IDigest CreateDigestInstance( - string digestAlgOID) + internal static IDigest CreateDigestInstance(string digestAlgOID) { string digestName = GetDigestAlgName(digestAlgOID); return DigestUtilities.GetDigest(digestName); } - internal static ISet GetCriticalExtensionOids(X509Extensions extensions) + internal static ISet<DerObjectIdentifier> GetCriticalExtensionOids(X509Extensions extensions) { - if (extensions == null) - return EmptySet; - - return CollectionUtilities.ReadOnly(new HashSet(extensions.GetCriticalExtensionOids())); + return extensions == null + ? new HashSet<DerObjectIdentifier>() + : new HashSet<DerObjectIdentifier>(extensions.GetCriticalExtensionOids()); } - internal static ISet GetNonCriticalExtensionOids(X509Extensions extensions) + internal static ISet<DerObjectIdentifier> GetNonCriticalExtensionOids(X509Extensions extensions) { - if (extensions == null) - return EmptySet; - - // TODO: should probably produce a set that imposes correct ordering - return CollectionUtilities.ReadOnly(new HashSet(extensions.GetNonCriticalExtensionOids())); + return extensions == null + ? new HashSet<DerObjectIdentifier>() + : new HashSet<DerObjectIdentifier>(extensions.GetNonCriticalExtensionOids()); } - - internal static IList GetExtensionOids(X509Extensions extensions) - { - if (extensions == null) - return EmptyList; - return CollectionUtilities.ReadOnly(Platform.CreateArrayList(extensions.GetExtensionOids())); + internal static IList<DerObjectIdentifier> GetExtensionOids(X509Extensions extensions) + { + return extensions == null + ? new List<DerObjectIdentifier>() + : new List<DerObjectIdentifier>(extensions.GetExtensionOids()); } } } |