diff --git a/crypto/src/security/AgreementUtilities.cs b/crypto/src/security/AgreementUtilities.cs
index 26d1628cc..0b7fc2a2b 100644
--- a/crypto/src/security/AgreementUtilities.cs
+++ b/crypto/src/security/AgreementUtilities.cs
@@ -1,4 +1,5 @@
-using System.Collections;
+using System;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.EdEC;
@@ -7,30 +8,26 @@ using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Agreement;
using Org.BouncyCastle.Crypto.Agreement.Kdf;
using Org.BouncyCastle.Crypto.Digests;
-using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <remarks>
/// Utility class for creating IBasicAgreement objects from their names/Oids
/// </remarks>
- public sealed class AgreementUtilities
+ public static class AgreementUtilities
{
- private AgreementUtilities()
- {
- }
-
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- //private static readonly IDictionary oids = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> Algorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
static AgreementUtilities()
{
- algorithms[X9ObjectIdentifiers.DHSinglePassCofactorDHSha1KdfScheme.Id] = "ECCDHWITHSHA1KDF";
- algorithms[X9ObjectIdentifiers.DHSinglePassStdDHSha1KdfScheme.Id] = "ECDHWITHSHA1KDF";
- algorithms[X9ObjectIdentifiers.MqvSinglePassSha1KdfScheme.Id] = "ECMQVWITHSHA1KDF";
+ Algorithms[X9ObjectIdentifiers.DHSinglePassCofactorDHSha1KdfScheme.Id] = "ECCDHWITHSHA1KDF";
+ Algorithms[X9ObjectIdentifiers.DHSinglePassStdDHSha1KdfScheme.Id] = "ECDHWITHSHA1KDF";
+ Algorithms[X9ObjectIdentifiers.MqvSinglePassSha1KdfScheme.Id] = "ECMQVWITHSHA1KDF";
- algorithms[EdECObjectIdentifiers.id_X25519.Id] = "X25519";
- algorithms[EdECObjectIdentifiers.id_X448.Id] = "X448";
+ Algorithms[EdECObjectIdentifiers.id_X25519.Id] = "X25519";
+ Algorithms[EdECObjectIdentifiers.id_X448.Id] = "X448";
}
public static IBasicAgreement GetBasicAgreement(
@@ -94,8 +91,7 @@ namespace Org.BouncyCastle.Security
return GetRawAgreement(oid.Id);
}
- public static IRawAgreement GetRawAgreement(
- string algorithm)
+ public static IRawAgreement GetRawAgreement(string algorithm)
{
string mechanism = GetMechanism(algorithm);
@@ -108,17 +104,16 @@ namespace Org.BouncyCastle.Security
throw new SecurityUtilityException("Raw Agreement " + algorithm + " not recognised.");
}
- public static string GetAlgorithmName(
- DerObjectIdentifier oid)
+ public static string GetAlgorithmName(DerObjectIdentifier oid)
{
- return (string)algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(Algorithms, oid.Id);
}
- private static string GetMechanism(string algorithm)
+ private static string GetMechanism(string algorithm)
{
- string upper = Platform.ToUpperInvariant(algorithm);
- string mechanism = (string)algorithms[upper];
- return mechanism == null ? upper : mechanism;
+ var mechanism = CollectionUtilities.GetValueOrKey(Algorithms, algorithm);
+
+ return mechanism.ToUpperInvariant();
}
}
}
diff --git a/crypto/src/security/CipherUtilities.cs b/crypto/src/security/CipherUtilities.cs
index 3b92add00..a6849c102 100644
--- a/crypto/src/security/CipherUtilities.cs
+++ b/crypto/src/security/CipherUtilities.cs
@@ -1,5 +1,5 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
@@ -19,13 +19,14 @@ using Org.BouncyCastle.Crypto.Macs;
using Org.BouncyCastle.Crypto.Modes;
using Org.BouncyCastle.Crypto.Paddings;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <remarks>
/// Cipher Utility class contains methods that can not be specifically grouped into other classes.
/// </remarks>
- public sealed class CipherUtilities
+ public static class CipherUtilities
{
private enum CipherAlgorithm {
AES,
@@ -111,8 +112,8 @@ namespace Org.BouncyCastle.Security
ZEROBYTEPADDING,
};
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- private static readonly IDictionary oids = Platform.CreateHashtable();
+ private static readonly Dictionary<string, string> Algorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
static CipherUtilities()
{
@@ -123,172 +124,142 @@ namespace Org.BouncyCastle.Security
// TODO Flesh out the list of aliases
- algorithms[NistObjectIdentifiers.IdAes128Cbc.Id] = "AES/CBC/PKCS7PADDING";
- algorithms[NistObjectIdentifiers.IdAes192Cbc.Id] = "AES/CBC/PKCS7PADDING";
- algorithms[NistObjectIdentifiers.IdAes256Cbc.Id] = "AES/CBC/PKCS7PADDING";
-
- algorithms[NistObjectIdentifiers.IdAes128Ccm.Id] = "AES/CCM/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes192Ccm.Id] = "AES/CCM/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes256Ccm.Id] = "AES/CCM/NOPADDING";
-
- algorithms[NistObjectIdentifiers.IdAes128Cfb.Id] = "AES/CFB/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes192Cfb.Id] = "AES/CFB/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes256Cfb.Id] = "AES/CFB/NOPADDING";
-
- algorithms[NistObjectIdentifiers.IdAes128Ecb.Id] = "AES/ECB/PKCS7PADDING";
- algorithms[NistObjectIdentifiers.IdAes192Ecb.Id] = "AES/ECB/PKCS7PADDING";
- algorithms[NistObjectIdentifiers.IdAes256Ecb.Id] = "AES/ECB/PKCS7PADDING";
- algorithms["AES//PKCS7"] = "AES/ECB/PKCS7PADDING";
- algorithms["AES//PKCS7PADDING"] = "AES/ECB/PKCS7PADDING";
- algorithms["AES//PKCS5"] = "AES/ECB/PKCS7PADDING";
- algorithms["AES//PKCS5PADDING"] = "AES/ECB/PKCS7PADDING";
+ Algorithms[NistObjectIdentifiers.IdAes128Cbc.Id] = "AES/CBC/PKCS7PADDING";
+ Algorithms[NistObjectIdentifiers.IdAes192Cbc.Id] = "AES/CBC/PKCS7PADDING";
+ Algorithms[NistObjectIdentifiers.IdAes256Cbc.Id] = "AES/CBC/PKCS7PADDING";
+
+ Algorithms[NistObjectIdentifiers.IdAes128Ccm.Id] = "AES/CCM/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes192Ccm.Id] = "AES/CCM/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes256Ccm.Id] = "AES/CCM/NOPADDING";
+
+ Algorithms[NistObjectIdentifiers.IdAes128Cfb.Id] = "AES/CFB/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes192Cfb.Id] = "AES/CFB/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes256Cfb.Id] = "AES/CFB/NOPADDING";
+
+ Algorithms[NistObjectIdentifiers.IdAes128Ecb.Id] = "AES/ECB/PKCS7PADDING";
+ Algorithms[NistObjectIdentifiers.IdAes192Ecb.Id] = "AES/ECB/PKCS7PADDING";
+ Algorithms[NistObjectIdentifiers.IdAes256Ecb.Id] = "AES/ECB/PKCS7PADDING";
+ Algorithms["AES//PKCS7"] = "AES/ECB/PKCS7PADDING";
+ Algorithms["AES//PKCS7PADDING"] = "AES/ECB/PKCS7PADDING";
+ Algorithms["AES//PKCS5"] = "AES/ECB/PKCS7PADDING";
+ Algorithms["AES//PKCS5PADDING"] = "AES/ECB/PKCS7PADDING";
- algorithms[NistObjectIdentifiers.IdAes128Gcm.Id] = "AES/GCM/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes192Gcm.Id] = "AES/GCM/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes256Gcm.Id] = "AES/GCM/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes128Gcm.Id] = "AES/GCM/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes192Gcm.Id] = "AES/GCM/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes256Gcm.Id] = "AES/GCM/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes128Ofb.Id] = "AES/OFB/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes192Ofb.Id] = "AES/OFB/NOPADDING";
- algorithms[NistObjectIdentifiers.IdAes256Ofb.Id] = "AES/OFB/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes128Ofb.Id] = "AES/OFB/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes192Ofb.Id] = "AES/OFB/NOPADDING";
+ Algorithms[NistObjectIdentifiers.IdAes256Ofb.Id] = "AES/OFB/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_cbc.Id] = "ARIA/CBC/PKCS7PADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_cbc.Id] = "ARIA/CBC/PKCS7PADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_cbc.Id] = "ARIA/CBC/PKCS7PADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_cbc.Id] = "ARIA/CBC/PKCS7PADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_cbc.Id] = "ARIA/CBC/PKCS7PADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_cbc.Id] = "ARIA/CBC/PKCS7PADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_ccm.Id] = "ARIA/CCM/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_ccm.Id] = "ARIA/CCM/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_ccm.Id] = "ARIA/CCM/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_ccm.Id] = "ARIA/CCM/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_ccm.Id] = "ARIA/CCM/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_ccm.Id] = "ARIA/CCM/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_cfb.Id] = "ARIA/CFB/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_cfb.Id] = "ARIA/CFB/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_cfb.Id] = "ARIA/CFB/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_cfb.Id] = "ARIA/CFB/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_cfb.Id] = "ARIA/CFB/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_cfb.Id] = "ARIA/CFB/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_ctr.Id] = "ARIA/CTR/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_ctr.Id] = "ARIA/CTR/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_ctr.Id] = "ARIA/CTR/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_ctr.Id] = "ARIA/CTR/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_ctr.Id] = "ARIA/CTR/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_ctr.Id] = "ARIA/CTR/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_ecb.Id] = "ARIA/ECB/PKCS7PADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_ecb.Id] = "ARIA/ECB/PKCS7PADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_ecb.Id] = "ARIA/ECB/PKCS7PADDING";
- algorithms["ARIA//PKCS7"] = "ARIA/ECB/PKCS7PADDING";
- algorithms["ARIA//PKCS7PADDING"] = "ARIA/ECB/PKCS7PADDING";
- algorithms["ARIA//PKCS5"] = "ARIA/ECB/PKCS7PADDING";
- algorithms["ARIA//PKCS5PADDING"] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_ecb.Id] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_ecb.Id] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_ecb.Id] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms["ARIA//PKCS7"] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms["ARIA//PKCS7PADDING"] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms["ARIA//PKCS5"] = "ARIA/ECB/PKCS7PADDING";
+ Algorithms["ARIA//PKCS5PADDING"] = "ARIA/ECB/PKCS7PADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_gcm.Id] = "ARIA/GCM/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_gcm.Id] = "ARIA/GCM/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_gcm.Id] = "ARIA/GCM/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_gcm.Id] = "ARIA/GCM/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_gcm.Id] = "ARIA/GCM/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_gcm.Id] = "ARIA/GCM/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria128_ofb.Id] = "ARIA/OFB/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria192_ofb.Id] = "ARIA/OFB/NOPADDING";
- algorithms[NsriObjectIdentifiers.id_aria256_ofb.Id] = "ARIA/OFB/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria128_ofb.Id] = "ARIA/OFB/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria192_ofb.Id] = "ARIA/OFB/NOPADDING";
+ Algorithms[NsriObjectIdentifiers.id_aria256_ofb.Id] = "ARIA/OFB/NOPADDING";
- algorithms["RSA/ECB/PKCS1"] = "RSA//PKCS1PADDING";
- algorithms["RSA/ECB/PKCS1PADDING"] = "RSA//PKCS1PADDING";
- algorithms[PkcsObjectIdentifiers.RsaEncryption.Id] = "RSA//PKCS1PADDING";
- algorithms[PkcsObjectIdentifiers.IdRsaesOaep.Id] = "RSA//OAEPPADDING";
+ Algorithms["RSA/ECB/PKCS1"] = "RSA//PKCS1PADDING";
+ Algorithms["RSA/ECB/PKCS1PADDING"] = "RSA//PKCS1PADDING";
+ Algorithms[PkcsObjectIdentifiers.RsaEncryption.Id] = "RSA//PKCS1PADDING";
+ Algorithms[PkcsObjectIdentifiers.IdRsaesOaep.Id] = "RSA//OAEPPADDING";
- algorithms[OiwObjectIdentifiers.DesCbc.Id] = "DES/CBC";
- algorithms[OiwObjectIdentifiers.DesCfb.Id] = "DES/CFB";
- algorithms[OiwObjectIdentifiers.DesEcb.Id] = "DES/ECB";
- algorithms[OiwObjectIdentifiers.DesOfb.Id] = "DES/OFB";
- algorithms[OiwObjectIdentifiers.DesEde.Id] = "DESEDE";
- algorithms["TDEA"] = "DESEDE";
- algorithms[PkcsObjectIdentifiers.DesEde3Cbc.Id] = "DESEDE/CBC";
- algorithms[PkcsObjectIdentifiers.RC2Cbc.Id] = "RC2/CBC";
- algorithms["1.3.6.1.4.1.188.7.1.1.2"] = "IDEA/CBC";
- algorithms["1.2.840.113533.7.66.10"] = "CAST5/CBC";
+ Algorithms[OiwObjectIdentifiers.DesCbc.Id] = "DES/CBC";
+ Algorithms[OiwObjectIdentifiers.DesCfb.Id] = "DES/CFB";
+ Algorithms[OiwObjectIdentifiers.DesEcb.Id] = "DES/ECB";
+ Algorithms[OiwObjectIdentifiers.DesOfb.Id] = "DES/OFB";
+ Algorithms[OiwObjectIdentifiers.DesEde.Id] = "DESEDE";
+ Algorithms["TDEA"] = "DESEDE";
+ Algorithms[PkcsObjectIdentifiers.DesEde3Cbc.Id] = "DESEDE/CBC";
+ Algorithms[PkcsObjectIdentifiers.RC2Cbc.Id] = "RC2/CBC";
+ Algorithms["1.3.6.1.4.1.188.7.1.1.2"] = "IDEA/CBC";
+ Algorithms["1.2.840.113533.7.66.10"] = "CAST5/CBC";
- algorithms["RC4"] = "ARC4";
- algorithms["ARCFOUR"] = "ARC4";
- algorithms["1.2.840.113549.3.4"] = "ARC4";
+ Algorithms["RC4"] = "ARC4";
+ Algorithms["ARCFOUR"] = "ARC4";
+ Algorithms["1.2.840.113549.3.4"] = "ARC4";
- algorithms["PBEWITHSHA1AND128BITRC4"] = "PBEWITHSHAAND128BITRC4";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC4.Id] = "PBEWITHSHAAND128BITRC4";
- algorithms["PBEWITHSHA1AND40BITRC4"] = "PBEWITHSHAAND40BITRC4";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd40BitRC4.Id] = "PBEWITHSHAAND40BITRC4";
+ Algorithms["PBEWITHSHA1AND128BITRC4"] = "PBEWITHSHAAND128BITRC4";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC4.Id] = "PBEWITHSHAAND128BITRC4";
+ Algorithms["PBEWITHSHA1AND40BITRC4"] = "PBEWITHSHAAND40BITRC4";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd40BitRC4.Id] = "PBEWITHSHAAND40BITRC4";
- algorithms["PBEWITHSHA1ANDDES"] = "PBEWITHSHA1ANDDES-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithSha1AndDesCbc.Id] = "PBEWITHSHA1ANDDES-CBC";
- algorithms["PBEWITHSHA1ANDRC2"] = "PBEWITHSHA1ANDRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithSha1AndRC2Cbc.Id] = "PBEWITHSHA1ANDRC2-CBC";
+ Algorithms["PBEWITHSHA1ANDDES"] = "PBEWITHSHA1ANDDES-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithSha1AndDesCbc.Id] = "PBEWITHSHA1ANDDES-CBC";
+ Algorithms["PBEWITHSHA1ANDRC2"] = "PBEWITHSHA1ANDRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithSha1AndRC2Cbc.Id] = "PBEWITHSHA1ANDRC2-CBC";
- algorithms["PBEWITHSHA1AND3-KEYTRIPLEDES-CBC"] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
- algorithms["PBEWITHSHAAND3KEYTRIPLEDES"] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc.Id] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
- algorithms["PBEWITHSHA1ANDDESEDE"] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
+ Algorithms["PBEWITHSHA1AND3-KEYTRIPLEDES-CBC"] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
+ Algorithms["PBEWITHSHAAND3KEYTRIPLEDES"] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc.Id] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
+ Algorithms["PBEWITHSHA1ANDDESEDE"] = "PBEWITHSHAAND3-KEYTRIPLEDES-CBC";
- algorithms["PBEWITHSHA1AND2-KEYTRIPLEDES-CBC"] = "PBEWITHSHAAND2-KEYTRIPLEDES-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc.Id] = "PBEWITHSHAAND2-KEYTRIPLEDES-CBC";
+ Algorithms["PBEWITHSHA1AND2-KEYTRIPLEDES-CBC"] = "PBEWITHSHAAND2-KEYTRIPLEDES-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc.Id] = "PBEWITHSHAAND2-KEYTRIPLEDES-CBC";
- algorithms["PBEWITHSHA1AND128BITRC2-CBC"] = "PBEWITHSHAAND128BITRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC2Cbc.Id] = "PBEWITHSHAAND128BITRC2-CBC";
+ Algorithms["PBEWITHSHA1AND128BITRC2-CBC"] = "PBEWITHSHAAND128BITRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC2Cbc.Id] = "PBEWITHSHAAND128BITRC2-CBC";
- algorithms["PBEWITHSHA1AND40BITRC2-CBC"] = "PBEWITHSHAAND40BITRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbewithShaAnd40BitRC2Cbc.Id] = "PBEWITHSHAAND40BITRC2-CBC";
+ Algorithms["PBEWITHSHA1AND40BITRC2-CBC"] = "PBEWITHSHAAND40BITRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbewithShaAnd40BitRC2Cbc.Id] = "PBEWITHSHAAND40BITRC2-CBC";
- algorithms["PBEWITHSHA1AND128BITAES-CBC-BC"] = "PBEWITHSHAAND128BITAES-CBC-BC";
- algorithms["PBEWITHSHA-1AND128BITAES-CBC-BC"] = "PBEWITHSHAAND128BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA1AND128BITAES-CBC-BC"] = "PBEWITHSHAAND128BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA-1AND128BITAES-CBC-BC"] = "PBEWITHSHAAND128BITAES-CBC-BC";
- algorithms["PBEWITHSHA1AND192BITAES-CBC-BC"] = "PBEWITHSHAAND192BITAES-CBC-BC";
- algorithms["PBEWITHSHA-1AND192BITAES-CBC-BC"] = "PBEWITHSHAAND192BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA1AND192BITAES-CBC-BC"] = "PBEWITHSHAAND192BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA-1AND192BITAES-CBC-BC"] = "PBEWITHSHAAND192BITAES-CBC-BC";
- algorithms["PBEWITHSHA1AND256BITAES-CBC-BC"] = "PBEWITHSHAAND256BITAES-CBC-BC";
- algorithms["PBEWITHSHA-1AND256BITAES-CBC-BC"] = "PBEWITHSHAAND256BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA1AND256BITAES-CBC-BC"] = "PBEWITHSHAAND256BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA-1AND256BITAES-CBC-BC"] = "PBEWITHSHAAND256BITAES-CBC-BC";
- algorithms["PBEWITHSHA-256AND128BITAES-CBC-BC"] = "PBEWITHSHA256AND128BITAES-CBC-BC";
- algorithms["PBEWITHSHA-256AND192BITAES-CBC-BC"] = "PBEWITHSHA256AND192BITAES-CBC-BC";
- algorithms["PBEWITHSHA-256AND256BITAES-CBC-BC"] = "PBEWITHSHA256AND256BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA-256AND128BITAES-CBC-BC"] = "PBEWITHSHA256AND128BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA-256AND192BITAES-CBC-BC"] = "PBEWITHSHA256AND192BITAES-CBC-BC";
+ Algorithms["PBEWITHSHA-256AND256BITAES-CBC-BC"] = "PBEWITHSHA256AND256BITAES-CBC-BC";
- algorithms["GOST"] = "GOST28147";
- algorithms["GOST-28147"] = "GOST28147";
- algorithms[CryptoProObjectIdentifiers.GostR28147Cbc.Id] = "GOST28147/CBC/PKCS7PADDING";
+ Algorithms["GOST"] = "GOST28147";
+ Algorithms["GOST-28147"] = "GOST28147";
+ Algorithms[CryptoProObjectIdentifiers.GostR28147Cbc.Id] = "GOST28147/CBC/PKCS7PADDING";
- algorithms["RC5-32"] = "RC5";
+ Algorithms["RC5-32"] = "RC5";
- algorithms[NttObjectIdentifiers.IdCamellia128Cbc.Id] = "CAMELLIA/CBC/PKCS7PADDING";
- algorithms[NttObjectIdentifiers.IdCamellia192Cbc.Id] = "CAMELLIA/CBC/PKCS7PADDING";
- algorithms[NttObjectIdentifiers.IdCamellia256Cbc.Id] = "CAMELLIA/CBC/PKCS7PADDING";
+ Algorithms[NttObjectIdentifiers.IdCamellia128Cbc.Id] = "CAMELLIA/CBC/PKCS7PADDING";
+ Algorithms[NttObjectIdentifiers.IdCamellia192Cbc.Id] = "CAMELLIA/CBC/PKCS7PADDING";
+ Algorithms[NttObjectIdentifiers.IdCamellia256Cbc.Id] = "CAMELLIA/CBC/PKCS7PADDING";
- algorithms[KisaObjectIdentifiers.IdSeedCbc.Id] = "SEED/CBC/PKCS7PADDING";
+ Algorithms[KisaObjectIdentifiers.IdSeedCbc.Id] = "SEED/CBC/PKCS7PADDING";
- algorithms["1.3.6.1.4.1.3029.1.2"] = "BLOWFISH/CBC";
+ Algorithms["1.3.6.1.4.1.3029.1.2"] = "BLOWFISH/CBC";
- algorithms["CHACHA20"] = "CHACHA7539";
- algorithms[PkcsObjectIdentifiers.IdAlgAeadChaCha20Poly1305.Id] = "CHACHA20-POLY1305";
- }
-
- private CipherUtilities()
- {
- }
-
- /// <summary>
- /// Returns a ObjectIdentifier for a give encoding.
- /// </summary>
- /// <param name="mechanism">A string representation of the encoding.</param>
- /// <returns>A DerObjectIdentifier, null if the Oid is not available.</returns>
- // TODO Don't really want to support this
- public static DerObjectIdentifier GetObjectIdentifier(
- string mechanism)
- {
- if (mechanism == null)
- throw new ArgumentNullException("mechanism");
-
- mechanism = Platform.ToUpperInvariant(mechanism);
- string aliased = (string) algorithms[mechanism];
-
- if (aliased != null)
- mechanism = aliased;
-
- return (DerObjectIdentifier) oids[mechanism];
- }
-
- public static ICollection Algorithms
- {
- get { return oids.Keys; }
+ Algorithms["CHACHA20"] = "CHACHA7539";
+ Algorithms[PkcsObjectIdentifiers.IdAlgAeadChaCha20Poly1305.Id] = "CHACHA20-POLY1305";
}
public static IBufferedCipher GetCipher(
@@ -297,20 +268,12 @@ namespace Org.BouncyCastle.Security
return GetCipher(oid.Id);
}
- public static IBufferedCipher GetCipher(
- string algorithm)
+ public static IBufferedCipher GetCipher(string algorithm)
{
if (algorithm == null)
- throw new ArgumentNullException("algorithm");
+ throw new ArgumentNullException(nameof(algorithm));
- algorithm = Platform.ToUpperInvariant(algorithm);
-
- {
- string aliased = (string) algorithms[algorithm];
-
- if (aliased != null)
- algorithm = aliased;
- }
+ algorithm = CollectionUtilities.GetValueOrKey(Algorithms, algorithm).ToUpperInvariant();
IBasicAgreement iesAgreement = null;
if (algorithm == "IES")
@@ -390,14 +353,7 @@ namespace Org.BouncyCastle.Security
IAsymmetricBlockCipher asymBlockCipher = null;
IStreamCipher streamCipher = null;
- string algorithmName = parts[0];
-
- {
- string aliased = (string)algorithms[algorithmName];
-
- if (aliased != null)
- algorithmName = aliased;
- }
+ string algorithmName = CollectionUtilities.GetValueOrKey(Algorithms, parts[0]).ToUpperInvariant();
CipherAlgorithm cipherAlgorithm;
try
@@ -411,126 +367,126 @@ namespace Org.BouncyCastle.Security
switch (cipherAlgorithm)
{
- case CipherAlgorithm.AES:
- blockCipher = new AesEngine();
- break;
- case CipherAlgorithm.ARC4:
- streamCipher = new RC4Engine();
- break;
- case CipherAlgorithm.ARIA:
- blockCipher = new AriaEngine();
- break;
- case CipherAlgorithm.BLOWFISH:
- blockCipher = new BlowfishEngine();
- break;
- case CipherAlgorithm.CAMELLIA:
- blockCipher = new CamelliaEngine();
- break;
- case CipherAlgorithm.CAST5:
- blockCipher = new Cast5Engine();
- break;
- case CipherAlgorithm.CAST6:
- blockCipher = new Cast6Engine();
- break;
- case CipherAlgorithm.CHACHA:
- streamCipher = new ChaChaEngine();
- break;
- case CipherAlgorithm.CHACHA20_POLY1305:
- aeadCipher = new ChaCha20Poly1305();
- break;
- case CipherAlgorithm.CHACHA7539:
- streamCipher = new ChaCha7539Engine();
- break;
- case CipherAlgorithm.DES:
- blockCipher = new DesEngine();
- break;
- case CipherAlgorithm.DESEDE:
- blockCipher = new DesEdeEngine();
- break;
- case CipherAlgorithm.ELGAMAL:
- asymBlockCipher = new ElGamalEngine();
- break;
- case CipherAlgorithm.GOST28147:
- blockCipher = new Gost28147Engine();
- break;
- case CipherAlgorithm.HC128:
- streamCipher = new HC128Engine();
- break;
- case CipherAlgorithm.HC256:
- streamCipher = new HC256Engine();
- break;
- case CipherAlgorithm.IDEA:
- blockCipher = new IdeaEngine();
- break;
- case CipherAlgorithm.NOEKEON:
- blockCipher = new NoekeonEngine();
- break;
- case CipherAlgorithm.PBEWITHSHAAND128BITRC4:
- case CipherAlgorithm.PBEWITHSHAAND40BITRC4:
- streamCipher = new RC4Engine();
- break;
- case CipherAlgorithm.RC2:
- blockCipher = new RC2Engine();
- break;
- case CipherAlgorithm.RC5:
- blockCipher = new RC532Engine();
- break;
- case CipherAlgorithm.RC5_64:
- blockCipher = new RC564Engine();
- break;
- case CipherAlgorithm.RC6:
- blockCipher = new RC6Engine();
- break;
- case CipherAlgorithm.RIJNDAEL:
- blockCipher = new RijndaelEngine();
- break;
- case CipherAlgorithm.RSA:
- asymBlockCipher = new RsaBlindedEngine();
- break;
- case CipherAlgorithm.SALSA20:
- streamCipher = new Salsa20Engine();
- break;
- case CipherAlgorithm.SEED:
- blockCipher = new SeedEngine();
- break;
- case CipherAlgorithm.SERPENT:
- blockCipher = new SerpentEngine();
- break;
- case CipherAlgorithm.SKIPJACK:
- blockCipher = new SkipjackEngine();
- break;
- case CipherAlgorithm.SM4:
- blockCipher = new SM4Engine();
- break;
- case CipherAlgorithm.TEA:
- blockCipher = new TeaEngine();
- break;
- case CipherAlgorithm.THREEFISH_256:
- blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256);
- break;
- case CipherAlgorithm.THREEFISH_512:
- blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512);
- break;
- case CipherAlgorithm.THREEFISH_1024:
- blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024);
- break;
- case CipherAlgorithm.TNEPRES:
- blockCipher = new TnepresEngine();
- break;
- case CipherAlgorithm.TWOFISH:
- blockCipher = new TwofishEngine();
- break;
- case CipherAlgorithm.VMPC:
- streamCipher = new VmpcEngine();
- break;
- case CipherAlgorithm.VMPC_KSA3:
- streamCipher = new VmpcKsa3Engine();
- break;
- case CipherAlgorithm.XTEA:
- blockCipher = new XteaEngine();
- break;
- default:
- throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
+ case CipherAlgorithm.AES:
+ blockCipher = new AesEngine();
+ break;
+ case CipherAlgorithm.ARC4:
+ streamCipher = new RC4Engine();
+ break;
+ case CipherAlgorithm.ARIA:
+ blockCipher = new AriaEngine();
+ break;
+ case CipherAlgorithm.BLOWFISH:
+ blockCipher = new BlowfishEngine();
+ break;
+ case CipherAlgorithm.CAMELLIA:
+ blockCipher = new CamelliaEngine();
+ break;
+ case CipherAlgorithm.CAST5:
+ blockCipher = new Cast5Engine();
+ break;
+ case CipherAlgorithm.CAST6:
+ blockCipher = new Cast6Engine();
+ break;
+ case CipherAlgorithm.CHACHA:
+ streamCipher = new ChaChaEngine();
+ break;
+ case CipherAlgorithm.CHACHA20_POLY1305:
+ aeadCipher = new ChaCha20Poly1305();
+ break;
+ case CipherAlgorithm.CHACHA7539:
+ streamCipher = new ChaCha7539Engine();
+ break;
+ case CipherAlgorithm.DES:
+ blockCipher = new DesEngine();
+ break;
+ case CipherAlgorithm.DESEDE:
+ blockCipher = new DesEdeEngine();
+ break;
+ case CipherAlgorithm.ELGAMAL:
+ asymBlockCipher = new ElGamalEngine();
+ break;
+ case CipherAlgorithm.GOST28147:
+ blockCipher = new Gost28147Engine();
+ break;
+ case CipherAlgorithm.HC128:
+ streamCipher = new HC128Engine();
+ break;
+ case CipherAlgorithm.HC256:
+ streamCipher = new HC256Engine();
+ break;
+ case CipherAlgorithm.IDEA:
+ blockCipher = new IdeaEngine();
+ break;
+ case CipherAlgorithm.NOEKEON:
+ blockCipher = new NoekeonEngine();
+ break;
+ case CipherAlgorithm.PBEWITHSHAAND128BITRC4:
+ case CipherAlgorithm.PBEWITHSHAAND40BITRC4:
+ streamCipher = new RC4Engine();
+ break;
+ case CipherAlgorithm.RC2:
+ blockCipher = new RC2Engine();
+ break;
+ case CipherAlgorithm.RC5:
+ blockCipher = new RC532Engine();
+ break;
+ case CipherAlgorithm.RC5_64:
+ blockCipher = new RC564Engine();
+ break;
+ case CipherAlgorithm.RC6:
+ blockCipher = new RC6Engine();
+ break;
+ case CipherAlgorithm.RIJNDAEL:
+ blockCipher = new RijndaelEngine();
+ break;
+ case CipherAlgorithm.RSA:
+ asymBlockCipher = new RsaBlindedEngine();
+ break;
+ case CipherAlgorithm.SALSA20:
+ streamCipher = new Salsa20Engine();
+ break;
+ case CipherAlgorithm.SEED:
+ blockCipher = new SeedEngine();
+ break;
+ case CipherAlgorithm.SERPENT:
+ blockCipher = new SerpentEngine();
+ break;
+ case CipherAlgorithm.SKIPJACK:
+ blockCipher = new SkipjackEngine();
+ break;
+ case CipherAlgorithm.SM4:
+ blockCipher = new SM4Engine();
+ break;
+ case CipherAlgorithm.TEA:
+ blockCipher = new TeaEngine();
+ break;
+ case CipherAlgorithm.THREEFISH_256:
+ blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256);
+ break;
+ case CipherAlgorithm.THREEFISH_512:
+ blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512);
+ break;
+ case CipherAlgorithm.THREEFISH_1024:
+ blockCipher = new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024);
+ break;
+ case CipherAlgorithm.TNEPRES:
+ blockCipher = new TnepresEngine();
+ break;
+ case CipherAlgorithm.TWOFISH:
+ blockCipher = new TwofishEngine();
+ break;
+ case CipherAlgorithm.VMPC:
+ streamCipher = new VmpcEngine();
+ break;
+ case CipherAlgorithm.VMPC_KSA3:
+ streamCipher = new VmpcKsa3Engine();
+ break;
+ case CipherAlgorithm.XTEA:
+ blockCipher = new XteaEngine();
+ break;
+ default:
+ throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
}
if (aeadCipher != null)
@@ -585,81 +541,81 @@ namespace Org.BouncyCastle.Security
switch (cipherPadding)
{
- case CipherPadding.NOPADDING:
- padded = false;
- break;
- case CipherPadding.RAW:
- break;
- case CipherPadding.ISO10126PADDING:
- case CipherPadding.ISO10126D2PADDING:
- case CipherPadding.ISO10126_2PADDING:
- padding = new ISO10126d2Padding();
- break;
- case CipherPadding.ISO7816_4PADDING:
- case CipherPadding.ISO9797_1PADDING:
- padding = new ISO7816d4Padding();
- break;
- case CipherPadding.ISO9796_1:
- case CipherPadding.ISO9796_1PADDING:
- asymBlockCipher = new ISO9796d1Encoding(asymBlockCipher);
- break;
- case CipherPadding.OAEP:
- case CipherPadding.OAEPPADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher);
- break;
- case CipherPadding.OAEPWITHMD5ANDMGF1PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new MD5Digest());
- break;
- case CipherPadding.OAEPWITHSHA1ANDMGF1PADDING:
- case CipherPadding.OAEPWITHSHA_1ANDMGF1PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha1Digest());
- break;
- case CipherPadding.OAEPWITHSHA224ANDMGF1PADDING:
- case CipherPadding.OAEPWITHSHA_224ANDMGF1PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha224Digest());
- break;
- case CipherPadding.OAEPWITHSHA256ANDMGF1PADDING:
- case CipherPadding.OAEPWITHSHA_256ANDMGF1PADDING:
- case CipherPadding.OAEPWITHSHA256ANDMGF1WITHSHA256PADDING:
- case CipherPadding.OAEPWITHSHA_256ANDMGF1WITHSHA_256PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha256Digest());
- break;
- case CipherPadding.OAEPWITHSHA256ANDMGF1WITHSHA1PADDING:
- case CipherPadding.OAEPWITHSHA_256ANDMGF1WITHSHA_1PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha256Digest(), new Sha1Digest(), null);
- break;
- case CipherPadding.OAEPWITHSHA384ANDMGF1PADDING:
- case CipherPadding.OAEPWITHSHA_384ANDMGF1PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha384Digest());
- break;
- case CipherPadding.OAEPWITHSHA512ANDMGF1PADDING:
- case CipherPadding.OAEPWITHSHA_512ANDMGF1PADDING:
- asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha512Digest());
- break;
- case CipherPadding.PKCS1:
- case CipherPadding.PKCS1PADDING:
- asymBlockCipher = new Pkcs1Encoding(asymBlockCipher);
- break;
- case CipherPadding.PKCS5:
- case CipherPadding.PKCS5PADDING:
- case CipherPadding.PKCS7:
- case CipherPadding.PKCS7PADDING:
- padding = new Pkcs7Padding();
- break;
- case CipherPadding.TBCPADDING:
- padding = new TbcPadding();
- break;
- case CipherPadding.WITHCTS:
- cts = true;
- break;
- case CipherPadding.X923PADDING:
- padding = new X923Padding();
- break;
- case CipherPadding.ZEROBYTEPADDING:
- padding = new ZeroBytePadding();
- break;
- default:
- throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
+ case CipherPadding.NOPADDING:
+ padded = false;
+ break;
+ case CipherPadding.RAW:
+ break;
+ case CipherPadding.ISO10126PADDING:
+ case CipherPadding.ISO10126D2PADDING:
+ case CipherPadding.ISO10126_2PADDING:
+ padding = new ISO10126d2Padding();
+ break;
+ case CipherPadding.ISO7816_4PADDING:
+ case CipherPadding.ISO9797_1PADDING:
+ padding = new ISO7816d4Padding();
+ break;
+ case CipherPadding.ISO9796_1:
+ case CipherPadding.ISO9796_1PADDING:
+ asymBlockCipher = new ISO9796d1Encoding(asymBlockCipher);
+ break;
+ case CipherPadding.OAEP:
+ case CipherPadding.OAEPPADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher);
+ break;
+ case CipherPadding.OAEPWITHMD5ANDMGF1PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new MD5Digest());
+ break;
+ case CipherPadding.OAEPWITHSHA1ANDMGF1PADDING:
+ case CipherPadding.OAEPWITHSHA_1ANDMGF1PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha1Digest());
+ break;
+ case CipherPadding.OAEPWITHSHA224ANDMGF1PADDING:
+ case CipherPadding.OAEPWITHSHA_224ANDMGF1PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha224Digest());
+ break;
+ case CipherPadding.OAEPWITHSHA256ANDMGF1PADDING:
+ case CipherPadding.OAEPWITHSHA_256ANDMGF1PADDING:
+ case CipherPadding.OAEPWITHSHA256ANDMGF1WITHSHA256PADDING:
+ case CipherPadding.OAEPWITHSHA_256ANDMGF1WITHSHA_256PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha256Digest());
+ break;
+ case CipherPadding.OAEPWITHSHA256ANDMGF1WITHSHA1PADDING:
+ case CipherPadding.OAEPWITHSHA_256ANDMGF1WITHSHA_1PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha256Digest(), new Sha1Digest(), null);
+ break;
+ case CipherPadding.OAEPWITHSHA384ANDMGF1PADDING:
+ case CipherPadding.OAEPWITHSHA_384ANDMGF1PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha384Digest());
+ break;
+ case CipherPadding.OAEPWITHSHA512ANDMGF1PADDING:
+ case CipherPadding.OAEPWITHSHA_512ANDMGF1PADDING:
+ asymBlockCipher = new OaepEncoding(asymBlockCipher, new Sha512Digest());
+ break;
+ case CipherPadding.PKCS1:
+ case CipherPadding.PKCS1PADDING:
+ asymBlockCipher = new Pkcs1Encoding(asymBlockCipher);
+ break;
+ case CipherPadding.PKCS5:
+ case CipherPadding.PKCS5PADDING:
+ case CipherPadding.PKCS7:
+ case CipherPadding.PKCS7PADDING:
+ padding = new Pkcs7Padding();
+ break;
+ case CipherPadding.TBCPADDING:
+ padding = new TbcPadding();
+ break;
+ case CipherPadding.WITHCTS:
+ cts = true;
+ break;
+ case CipherPadding.X923PADDING:
+ padding = new X923Padding();
+ break;
+ case CipherPadding.ZEROBYTEPADDING:
+ padding = new ZeroBytePadding();
+ break;
+ default:
+ throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
}
}
@@ -679,64 +635,64 @@ namespace Org.BouncyCastle.Security
switch (cipherMode)
{
- case CipherMode.ECB:
- case CipherMode.NONE:
- break;
- case CipherMode.CBC:
- blockCipher = new CbcBlockCipher(blockCipher);
- break;
- case CipherMode.CCM:
- aeadBlockCipher = new CcmBlockCipher(blockCipher);
- break;
- case CipherMode.CFB:
- {
- int bits = (di < 0)
- ? 8 * blockCipher.GetBlockSize()
- : int.Parse(mode.Substring(di));
+ case CipherMode.ECB:
+ case CipherMode.NONE:
+ break;
+ case CipherMode.CBC:
+ blockCipher = new CbcBlockCipher(blockCipher);
+ break;
+ case CipherMode.CCM:
+ aeadBlockCipher = new CcmBlockCipher(blockCipher);
+ break;
+ case CipherMode.CFB:
+ {
+ int bits = (di < 0)
+ ? 8 * blockCipher.GetBlockSize()
+ : int.Parse(mode.Substring(di));
- blockCipher = new CfbBlockCipher(blockCipher, bits);
- break;
- }
- case CipherMode.CTR:
- blockCipher = new SicBlockCipher(blockCipher);
- break;
- case CipherMode.CTS:
- cts = true;
- blockCipher = new CbcBlockCipher(blockCipher);
- break;
- case CipherMode.EAX:
- aeadBlockCipher = new EaxBlockCipher(blockCipher);
- break;
- case CipherMode.GCM:
- aeadBlockCipher = new GcmBlockCipher(blockCipher);
- break;
- case CipherMode.GOFB:
- blockCipher = new GOfbBlockCipher(blockCipher);
- break;
- case CipherMode.OCB:
- aeadBlockCipher = new OcbBlockCipher(blockCipher, CreateBlockCipher(cipherAlgorithm));
- break;
- case CipherMode.OFB:
- {
- int bits = (di < 0)
- ? 8 * blockCipher.GetBlockSize()
- : int.Parse(mode.Substring(di));
+ blockCipher = new CfbBlockCipher(blockCipher, bits);
+ break;
+ }
+ case CipherMode.CTR:
+ blockCipher = new SicBlockCipher(blockCipher);
+ break;
+ case CipherMode.CTS:
+ cts = true;
+ blockCipher = new CbcBlockCipher(blockCipher);
+ break;
+ case CipherMode.EAX:
+ aeadBlockCipher = new EaxBlockCipher(blockCipher);
+ break;
+ case CipherMode.GCM:
+ aeadBlockCipher = new GcmBlockCipher(blockCipher);
+ break;
+ case CipherMode.GOFB:
+ blockCipher = new GOfbBlockCipher(blockCipher);
+ break;
+ case CipherMode.OCB:
+ aeadBlockCipher = new OcbBlockCipher(blockCipher, CreateBlockCipher(cipherAlgorithm));
+ break;
+ case CipherMode.OFB:
+ {
+ int bits = (di < 0)
+ ? 8 * blockCipher.GetBlockSize()
+ : int.Parse(mode.Substring(di));
- blockCipher = new OfbBlockCipher(blockCipher, bits);
- break;
+ blockCipher = new OfbBlockCipher(blockCipher, bits);
+ break;
+ }
+ case CipherMode.OPENPGPCFB:
+ blockCipher = new OpenPgpCfbBlockCipher(blockCipher);
+ break;
+ case CipherMode.SIC:
+ if (blockCipher.GetBlockSize() < 16)
+ {
+ throw new ArgumentException("Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)");
}
- case CipherMode.OPENPGPCFB:
- blockCipher = new OpenPgpCfbBlockCipher(blockCipher);
- break;
- case CipherMode.SIC:
- if (blockCipher.GetBlockSize() < 16)
- {
- throw new ArgumentException("Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)");
- }
- blockCipher = new SicBlockCipher(blockCipher);
- break;
- default:
- throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
+ blockCipher = new SicBlockCipher(blockCipher);
+ break;
+ default:
+ throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
}
}
catch (ArgumentException)
@@ -783,14 +739,12 @@ namespace Org.BouncyCastle.Security
throw new SecurityUtilityException("Cipher " + algorithm + " not recognised.");
}
- public static string GetAlgorithmName(
- DerObjectIdentifier oid)
+ public static string GetAlgorithmName(DerObjectIdentifier oid)
{
- return (string) algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(Algorithms, oid.Id);
}
- private static int GetDigitIndex(
- string s)
+ private static int GetDigitIndex(string s)
{
for (int i = 0; i < s.Length; ++i)
{
@@ -805,35 +759,35 @@ namespace Org.BouncyCastle.Security
{
switch (cipherAlgorithm)
{
- case CipherAlgorithm.AES: return new AesEngine();
- case CipherAlgorithm.ARIA: return new AriaEngine();
- case CipherAlgorithm.BLOWFISH: return new BlowfishEngine();
- case CipherAlgorithm.CAMELLIA: return new CamelliaEngine();
- case CipherAlgorithm.CAST5: return new Cast5Engine();
- case CipherAlgorithm.CAST6: return new Cast6Engine();
- case CipherAlgorithm.DES: return new DesEngine();
- case CipherAlgorithm.DESEDE: return new DesEdeEngine();
- case CipherAlgorithm.GOST28147: return new Gost28147Engine();
- case CipherAlgorithm.IDEA: return new IdeaEngine();
- case CipherAlgorithm.NOEKEON: return new NoekeonEngine();
- case CipherAlgorithm.RC2: return new RC2Engine();
- case CipherAlgorithm.RC5: return new RC532Engine();
- case CipherAlgorithm.RC5_64: return new RC564Engine();
- case CipherAlgorithm.RC6: return new RC6Engine();
- case CipherAlgorithm.RIJNDAEL: return new RijndaelEngine();
- case CipherAlgorithm.SEED: return new SeedEngine();
- case CipherAlgorithm.SERPENT: return new SerpentEngine();
- case CipherAlgorithm.SKIPJACK: return new SkipjackEngine();
- case CipherAlgorithm.SM4: return new SM4Engine();
- case CipherAlgorithm.TEA: return new TeaEngine();
- case CipherAlgorithm.THREEFISH_256: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256);
- case CipherAlgorithm.THREEFISH_512: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512);
- case CipherAlgorithm.THREEFISH_1024: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024);
- case CipherAlgorithm.TNEPRES: return new TnepresEngine();
- case CipherAlgorithm.TWOFISH: return new TwofishEngine();
- case CipherAlgorithm.XTEA: return new XteaEngine();
- default:
- throw new SecurityUtilityException("Cipher " + cipherAlgorithm + " not recognised or not a block cipher");
+ case CipherAlgorithm.AES: return new AesEngine();
+ case CipherAlgorithm.ARIA: return new AriaEngine();
+ case CipherAlgorithm.BLOWFISH: return new BlowfishEngine();
+ case CipherAlgorithm.CAMELLIA: return new CamelliaEngine();
+ case CipherAlgorithm.CAST5: return new Cast5Engine();
+ case CipherAlgorithm.CAST6: return new Cast6Engine();
+ case CipherAlgorithm.DES: return new DesEngine();
+ case CipherAlgorithm.DESEDE: return new DesEdeEngine();
+ case CipherAlgorithm.GOST28147: return new Gost28147Engine();
+ case CipherAlgorithm.IDEA: return new IdeaEngine();
+ case CipherAlgorithm.NOEKEON: return new NoekeonEngine();
+ case CipherAlgorithm.RC2: return new RC2Engine();
+ case CipherAlgorithm.RC5: return new RC532Engine();
+ case CipherAlgorithm.RC5_64: return new RC564Engine();
+ case CipherAlgorithm.RC6: return new RC6Engine();
+ case CipherAlgorithm.RIJNDAEL: return new RijndaelEngine();
+ case CipherAlgorithm.SEED: return new SeedEngine();
+ case CipherAlgorithm.SERPENT: return new SerpentEngine();
+ case CipherAlgorithm.SKIPJACK: return new SkipjackEngine();
+ case CipherAlgorithm.SM4: return new SM4Engine();
+ case CipherAlgorithm.TEA: return new TeaEngine();
+ case CipherAlgorithm.THREEFISH_256: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_256);
+ case CipherAlgorithm.THREEFISH_512: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_512);
+ case CipherAlgorithm.THREEFISH_1024: return new ThreefishEngine(ThreefishEngine.BLOCKSIZE_1024);
+ case CipherAlgorithm.TNEPRES: return new TnepresEngine();
+ case CipherAlgorithm.TWOFISH: return new TwofishEngine();
+ case CipherAlgorithm.XTEA: return new XteaEngine();
+ default:
+ throw new SecurityUtilityException("Cipher " + cipherAlgorithm + " not recognised or not a block cipher");
}
}
}
diff --git a/crypto/src/security/DigestUtilities.cs b/crypto/src/security/DigestUtilities.cs
index c67dd8b72..2c9e89277 100644
--- a/crypto/src/security/DigestUtilities.cs
+++ b/crypto/src/security/DigestUtilities.cs
@@ -1,5 +1,5 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
@@ -11,17 +11,17 @@ using Org.BouncyCastle.Asn1.Oiw;
using Org.BouncyCastle.Asn1.Rosstandart;
using Org.BouncyCastle.Asn1.TeleTrust;
using Org.BouncyCastle.Asn1.UA;
-using Org.BouncyCastle.Security;
-using Org.BouncyCastle.Crypto.Digests;
using Org.BouncyCastle.Crypto;
+using Org.BouncyCastle.Crypto.Digests;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <remarks>
/// Utility class for creating IDigest objects from their names/Oids
/// </remarks>
- public sealed class DigestUtilities
+ public static class DigestUtilities
{
private enum DigestAlgorithm {
BLAKE2B_160, BLAKE2B_256, BLAKE2B_384, BLAKE2B_512,
@@ -42,130 +42,128 @@ namespace Org.BouncyCastle.Security
WHIRLPOOL,
};
- private DigestUtilities()
- {
- }
-
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- private static readonly IDictionary oids = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> Aliases =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private static readonly IDictionary<string, DerObjectIdentifier> Oids =
+ new Dictionary<string, DerObjectIdentifier>(StringComparer.OrdinalIgnoreCase);
static DigestUtilities()
{
// Signal to obfuscation tools not to change enum constants
((DigestAlgorithm)Enums.GetArbitraryValue(typeof(DigestAlgorithm))).ToString();
- algorithms[PkcsObjectIdentifiers.MD2.Id] = "MD2";
- algorithms[PkcsObjectIdentifiers.MD4.Id] = "MD4";
- algorithms[PkcsObjectIdentifiers.MD5.Id] = "MD5";
-
- algorithms["SHA1"] = "SHA-1";
- algorithms[OiwObjectIdentifiers.IdSha1.Id] = "SHA-1";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha1.Id] = "SHA-1";
- algorithms[MiscObjectIdentifiers.HMAC_SHA1.Id] = "SHA-1";
- algorithms["SHA224"] = "SHA-224";
- algorithms[NistObjectIdentifiers.IdSha224.Id] = "SHA-224";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha224.Id] = "SHA-224";
- algorithms["SHA256"] = "SHA-256";
- algorithms[NistObjectIdentifiers.IdSha256.Id] = "SHA-256";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha256.Id] = "SHA-256";
- algorithms["SHA384"] = "SHA-384";
- algorithms[NistObjectIdentifiers.IdSha384.Id] = "SHA-384";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha384.Id] = "SHA-384";
- algorithms["SHA512"] = "SHA-512";
- algorithms[NistObjectIdentifiers.IdSha512.Id] = "SHA-512";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha512.Id] = "SHA-512";
-
- algorithms["SHA512/224"] = "SHA-512/224";
- algorithms["SHA512(224)"] = "SHA-512/224";
- algorithms["SHA-512(224)"] = "SHA-512/224";
- algorithms[NistObjectIdentifiers.IdSha512_224.Id] = "SHA-512/224";
- algorithms["SHA512/256"] = "SHA-512/256";
- algorithms["SHA512(256)"] = "SHA-512/256";
- algorithms["SHA-512(256)"] = "SHA-512/256";
- algorithms[NistObjectIdentifiers.IdSha512_256.Id] = "SHA-512/256";
-
- algorithms["RIPEMD-128"] = "RIPEMD128";
- algorithms[TeleTrusTObjectIdentifiers.RipeMD128.Id] = "RIPEMD128";
- algorithms["RIPEMD-160"] = "RIPEMD160";
- algorithms[TeleTrusTObjectIdentifiers.RipeMD160.Id] = "RIPEMD160";
- algorithms["RIPEMD-256"] = "RIPEMD256";
- algorithms[TeleTrusTObjectIdentifiers.RipeMD256.Id] = "RIPEMD256";
- algorithms["RIPEMD-320"] = "RIPEMD320";
-// algorithms[TeleTrusTObjectIdentifiers.RipeMD320.Id] = "RIPEMD320";
-
- algorithms[CryptoProObjectIdentifiers.GostR3411.Id] = "GOST3411";
-
- algorithms["KECCAK224"] = "KECCAK-224";
- algorithms["KECCAK256"] = "KECCAK-256";
- algorithms["KECCAK288"] = "KECCAK-288";
- algorithms["KECCAK384"] = "KECCAK-384";
- algorithms["KECCAK512"] = "KECCAK-512";
-
- algorithms[NistObjectIdentifiers.IdSha3_224.Id] = "SHA3-224";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_224.Id] = "SHA3-224";
- algorithms[NistObjectIdentifiers.IdSha3_256.Id] = "SHA3-256";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_256.Id] = "SHA3-256";
- algorithms[NistObjectIdentifiers.IdSha3_384.Id] = "SHA3-384";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_384.Id] = "SHA3-384";
- algorithms[NistObjectIdentifiers.IdSha3_512.Id] = "SHA3-512";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_512.Id] = "SHA3-512";
- algorithms["SHAKE128"] = "SHAKE128-256";
- algorithms[NistObjectIdentifiers.IdShake128.Id] = "SHAKE128-256";
- algorithms["SHAKE256"] = "SHAKE256-512";
- algorithms[NistObjectIdentifiers.IdShake256.Id] = "SHAKE256-512";
-
- algorithms[GMObjectIdentifiers.sm3.Id] = "SM3";
-
- algorithms[MiscObjectIdentifiers.id_blake2b160.Id] = "BLAKE2B-160";
- algorithms[MiscObjectIdentifiers.id_blake2b256.Id] = "BLAKE2B-256";
- algorithms[MiscObjectIdentifiers.id_blake2b384.Id] = "BLAKE2B-384";
- algorithms[MiscObjectIdentifiers.id_blake2b512.Id] = "BLAKE2B-512";
- algorithms[MiscObjectIdentifiers.id_blake2s128.Id] = "BLAKE2S-128";
- algorithms[MiscObjectIdentifiers.id_blake2s160.Id] = "BLAKE2S-160";
- algorithms[MiscObjectIdentifiers.id_blake2s224.Id] = "BLAKE2S-224";
- algorithms[MiscObjectIdentifiers.id_blake2s256.Id] = "BLAKE2S-256";
-
- algorithms[RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256.Id] = "GOST3411-2012-256";
- algorithms[RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512.Id] = "GOST3411-2012-512";
-
- algorithms[UAObjectIdentifiers.dstu7564digest_256.Id] = "DSTU7564-256";
- algorithms[UAObjectIdentifiers.dstu7564digest_384.Id] = "DSTU7564-384";
- algorithms[UAObjectIdentifiers.dstu7564digest_512.Id] = "DSTU7564-512";
-
- oids["MD2"] = PkcsObjectIdentifiers.MD2;
- oids["MD4"] = PkcsObjectIdentifiers.MD4;
- oids["MD5"] = PkcsObjectIdentifiers.MD5;
- oids["SHA-1"] = OiwObjectIdentifiers.IdSha1;
- oids["SHA-224"] = NistObjectIdentifiers.IdSha224;
- oids["SHA-256"] = NistObjectIdentifiers.IdSha256;
- oids["SHA-384"] = NistObjectIdentifiers.IdSha384;
- oids["SHA-512"] = NistObjectIdentifiers.IdSha512;
- oids["SHA-512/224"] = NistObjectIdentifiers.IdSha512_224;
- oids["SHA-512/256"] = NistObjectIdentifiers.IdSha512_256;
- oids["SHA3-224"] = NistObjectIdentifiers.IdSha3_224;
- oids["SHA3-256"] = NistObjectIdentifiers.IdSha3_256;
- oids["SHA3-384"] = NistObjectIdentifiers.IdSha3_384;
- oids["SHA3-512"] = NistObjectIdentifiers.IdSha3_512;
- oids["SHAKE128-256"] = NistObjectIdentifiers.IdShake128;
- oids["SHAKE256-512"] = NistObjectIdentifiers.IdShake256;
- oids["RIPEMD128"] = TeleTrusTObjectIdentifiers.RipeMD128;
- oids["RIPEMD160"] = TeleTrusTObjectIdentifiers.RipeMD160;
- oids["RIPEMD256"] = TeleTrusTObjectIdentifiers.RipeMD256;
- oids["GOST3411"] = CryptoProObjectIdentifiers.GostR3411;
- oids["SM3"] = GMObjectIdentifiers.sm3;
- oids["BLAKE2B-160"] = MiscObjectIdentifiers.id_blake2b160;
- oids["BLAKE2B-256"] = MiscObjectIdentifiers.id_blake2b256;
- oids["BLAKE2B-384"] = MiscObjectIdentifiers.id_blake2b384;
- oids["BLAKE2B-512"] = MiscObjectIdentifiers.id_blake2b512;
- oids["BLAKE2S-128"] = MiscObjectIdentifiers.id_blake2s128;
- oids["BLAKE2S-160"] = MiscObjectIdentifiers.id_blake2s160;
- oids["BLAKE2S-224"] = MiscObjectIdentifiers.id_blake2s224;
- oids["BLAKE2S-256"] = MiscObjectIdentifiers.id_blake2s256;
- oids["GOST3411-2012-256"] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256;
- oids["GOST3411-2012-512"] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512;
- oids["DSTU7564-256"] = UAObjectIdentifiers.dstu7564digest_256;
- oids["DSTU7564-384"] = UAObjectIdentifiers.dstu7564digest_384;
- oids["DSTU7564-512"] = UAObjectIdentifiers.dstu7564digest_512;
+ Aliases[PkcsObjectIdentifiers.MD2.Id] = "MD2";
+ Aliases[PkcsObjectIdentifiers.MD4.Id] = "MD4";
+ Aliases[PkcsObjectIdentifiers.MD5.Id] = "MD5";
+
+ Aliases["SHA1"] = "SHA-1";
+ Aliases[OiwObjectIdentifiers.IdSha1.Id] = "SHA-1";
+ Aliases[PkcsObjectIdentifiers.IdHmacWithSha1.Id] = "SHA-1";
+ Aliases[MiscObjectIdentifiers.HMAC_SHA1.Id] = "SHA-1";
+ Aliases["SHA224"] = "SHA-224";
+ Aliases[NistObjectIdentifiers.IdSha224.Id] = "SHA-224";
+ Aliases[PkcsObjectIdentifiers.IdHmacWithSha224.Id] = "SHA-224";
+ Aliases["SHA256"] = "SHA-256";
+ Aliases[NistObjectIdentifiers.IdSha256.Id] = "SHA-256";
+ Aliases[PkcsObjectIdentifiers.IdHmacWithSha256.Id] = "SHA-256";
+ Aliases["SHA384"] = "SHA-384";
+ Aliases[NistObjectIdentifiers.IdSha384.Id] = "SHA-384";
+ Aliases[PkcsObjectIdentifiers.IdHmacWithSha384.Id] = "SHA-384";
+ Aliases["SHA512"] = "SHA-512";
+ Aliases[NistObjectIdentifiers.IdSha512.Id] = "SHA-512";
+ Aliases[PkcsObjectIdentifiers.IdHmacWithSha512.Id] = "SHA-512";
+
+ Aliases["SHA512/224"] = "SHA-512/224";
+ Aliases["SHA512(224)"] = "SHA-512/224";
+ Aliases["SHA-512(224)"] = "SHA-512/224";
+ Aliases[NistObjectIdentifiers.IdSha512_224.Id] = "SHA-512/224";
+ Aliases["SHA512/256"] = "SHA-512/256";
+ Aliases["SHA512(256)"] = "SHA-512/256";
+ Aliases["SHA-512(256)"] = "SHA-512/256";
+ Aliases[NistObjectIdentifiers.IdSha512_256.Id] = "SHA-512/256";
+
+ Aliases["RIPEMD-128"] = "RIPEMD128";
+ Aliases[TeleTrusTObjectIdentifiers.RipeMD128.Id] = "RIPEMD128";
+ Aliases["RIPEMD-160"] = "RIPEMD160";
+ Aliases[TeleTrusTObjectIdentifiers.RipeMD160.Id] = "RIPEMD160";
+ Aliases["RIPEMD-256"] = "RIPEMD256";
+ Aliases[TeleTrusTObjectIdentifiers.RipeMD256.Id] = "RIPEMD256";
+ Aliases["RIPEMD-320"] = "RIPEMD320";
+ //Aliases[TeleTrusTObjectIdentifiers.RipeMD320.Id] = "RIPEMD320";
+
+ Aliases[CryptoProObjectIdentifiers.GostR3411.Id] = "GOST3411";
+
+ Aliases["KECCAK224"] = "KECCAK-224";
+ Aliases["KECCAK256"] = "KECCAK-256";
+ Aliases["KECCAK288"] = "KECCAK-288";
+ Aliases["KECCAK384"] = "KECCAK-384";
+ Aliases["KECCAK512"] = "KECCAK-512";
+
+ Aliases[NistObjectIdentifiers.IdSha3_224.Id] = "SHA3-224";
+ Aliases[NistObjectIdentifiers.IdHMacWithSha3_224.Id] = "SHA3-224";
+ Aliases[NistObjectIdentifiers.IdSha3_256.Id] = "SHA3-256";
+ Aliases[NistObjectIdentifiers.IdHMacWithSha3_256.Id] = "SHA3-256";
+ Aliases[NistObjectIdentifiers.IdSha3_384.Id] = "SHA3-384";
+ Aliases[NistObjectIdentifiers.IdHMacWithSha3_384.Id] = "SHA3-384";
+ Aliases[NistObjectIdentifiers.IdSha3_512.Id] = "SHA3-512";
+ Aliases[NistObjectIdentifiers.IdHMacWithSha3_512.Id] = "SHA3-512";
+ Aliases["SHAKE128"] = "SHAKE128-256";
+ Aliases[NistObjectIdentifiers.IdShake128.Id] = "SHAKE128-256";
+ Aliases["SHAKE256"] = "SHAKE256-512";
+ Aliases[NistObjectIdentifiers.IdShake256.Id] = "SHAKE256-512";
+
+ Aliases[GMObjectIdentifiers.sm3.Id] = "SM3";
+
+ Aliases[MiscObjectIdentifiers.id_blake2b160.Id] = "BLAKE2B-160";
+ Aliases[MiscObjectIdentifiers.id_blake2b256.Id] = "BLAKE2B-256";
+ Aliases[MiscObjectIdentifiers.id_blake2b384.Id] = "BLAKE2B-384";
+ Aliases[MiscObjectIdentifiers.id_blake2b512.Id] = "BLAKE2B-512";
+ Aliases[MiscObjectIdentifiers.id_blake2s128.Id] = "BLAKE2S-128";
+ Aliases[MiscObjectIdentifiers.id_blake2s160.Id] = "BLAKE2S-160";
+ Aliases[MiscObjectIdentifiers.id_blake2s224.Id] = "BLAKE2S-224";
+ Aliases[MiscObjectIdentifiers.id_blake2s256.Id] = "BLAKE2S-256";
+
+ Aliases[RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256.Id] = "GOST3411-2012-256";
+ Aliases[RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512.Id] = "GOST3411-2012-512";
+
+ Aliases[UAObjectIdentifiers.dstu7564digest_256.Id] = "DSTU7564-256";
+ Aliases[UAObjectIdentifiers.dstu7564digest_384.Id] = "DSTU7564-384";
+ Aliases[UAObjectIdentifiers.dstu7564digest_512.Id] = "DSTU7564-512";
+
+ Oids["MD2"] = PkcsObjectIdentifiers.MD2;
+ Oids["MD4"] = PkcsObjectIdentifiers.MD4;
+ Oids["MD5"] = PkcsObjectIdentifiers.MD5;
+ Oids["SHA-1"] = OiwObjectIdentifiers.IdSha1;
+ Oids["SHA-224"] = NistObjectIdentifiers.IdSha224;
+ Oids["SHA-256"] = NistObjectIdentifiers.IdSha256;
+ Oids["SHA-384"] = NistObjectIdentifiers.IdSha384;
+ Oids["SHA-512"] = NistObjectIdentifiers.IdSha512;
+ Oids["SHA-512/224"] = NistObjectIdentifiers.IdSha512_224;
+ Oids["SHA-512/256"] = NistObjectIdentifiers.IdSha512_256;
+ Oids["SHA3-224"] = NistObjectIdentifiers.IdSha3_224;
+ Oids["SHA3-256"] = NistObjectIdentifiers.IdSha3_256;
+ Oids["SHA3-384"] = NistObjectIdentifiers.IdSha3_384;
+ Oids["SHA3-512"] = NistObjectIdentifiers.IdSha3_512;
+ Oids["SHAKE128-256"] = NistObjectIdentifiers.IdShake128;
+ Oids["SHAKE256-512"] = NistObjectIdentifiers.IdShake256;
+ Oids["RIPEMD128"] = TeleTrusTObjectIdentifiers.RipeMD128;
+ Oids["RIPEMD160"] = TeleTrusTObjectIdentifiers.RipeMD160;
+ Oids["RIPEMD256"] = TeleTrusTObjectIdentifiers.RipeMD256;
+ Oids["GOST3411"] = CryptoProObjectIdentifiers.GostR3411;
+ Oids["SM3"] = GMObjectIdentifiers.sm3;
+ Oids["BLAKE2B-160"] = MiscObjectIdentifiers.id_blake2b160;
+ Oids["BLAKE2B-256"] = MiscObjectIdentifiers.id_blake2b256;
+ Oids["BLAKE2B-384"] = MiscObjectIdentifiers.id_blake2b384;
+ Oids["BLAKE2B-512"] = MiscObjectIdentifiers.id_blake2b512;
+ Oids["BLAKE2S-128"] = MiscObjectIdentifiers.id_blake2s128;
+ Oids["BLAKE2S-160"] = MiscObjectIdentifiers.id_blake2s160;
+ Oids["BLAKE2S-224"] = MiscObjectIdentifiers.id_blake2s224;
+ Oids["BLAKE2S-256"] = MiscObjectIdentifiers.id_blake2s256;
+ Oids["GOST3411-2012-256"] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256;
+ Oids["GOST3411-2012-512"] = RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512;
+ Oids["DSTU7564-256"] = UAObjectIdentifiers.dstu7564digest_256;
+ Oids["DSTU7564-384"] = UAObjectIdentifiers.dstu7564digest_384;
+ Oids["DSTU7564-512"] = UAObjectIdentifiers.dstu7564digest_512;
}
/// <summary>
@@ -174,42 +172,27 @@ namespace Org.BouncyCastle.Security
/// <param name="mechanism">A string representation of the digest meanism.</param>
/// <returns>A DerObjectIdentifier, null if the Oid is not available.</returns>
- public static DerObjectIdentifier GetObjectIdentifier(
- string mechanism)
+ public static DerObjectIdentifier GetObjectIdentifier(string mechanism)
{
if (mechanism == null)
- throw new System.ArgumentNullException("mechanism");
-
- mechanism = Platform.ToUpperInvariant(mechanism);
- string aliased = (string) algorithms[mechanism];
+ throw new ArgumentNullException(nameof(mechanism));
- if (aliased != null)
- mechanism = aliased;
+ mechanism = CollectionUtilities.GetValueOrKey(Aliases, mechanism).ToUpperInvariant();
- return (DerObjectIdentifier) oids[mechanism];
+ return CollectionUtilities.GetValueOrNull(Oids, mechanism);
}
- public static ICollection Algorithms
- {
- get { return oids.Keys; }
- }
-
- public static IDigest GetDigest(
- DerObjectIdentifier id)
+ public static IDigest GetDigest(DerObjectIdentifier id)
{
return GetDigest(id.Id);
}
- public static IDigest GetDigest(
- string algorithm)
+ public static IDigest GetDigest(string algorithm)
{
- string upper = Platform.ToUpperInvariant(algorithm);
- string mechanism = (string) algorithms[upper];
+ if (algorithm == null)
+ throw new ArgumentNullException(nameof(algorithm));
- if (mechanism == null)
- {
- mechanism = upper;
- }
+ string mechanism = CollectionUtilities.GetValueOrKey(Aliases, algorithm).ToUpperInvariant();
try
{
@@ -218,49 +201,49 @@ namespace Org.BouncyCastle.Security
switch (digestAlgorithm)
{
- case DigestAlgorithm.BLAKE2B_160: return new Blake2bDigest(160);
- case DigestAlgorithm.BLAKE2B_256: return new Blake2bDigest(256);
- case DigestAlgorithm.BLAKE2B_384: return new Blake2bDigest(384);
- case DigestAlgorithm.BLAKE2B_512: return new Blake2bDigest(512);
- case DigestAlgorithm.BLAKE2S_128: return new Blake2sDigest(128);
- case DigestAlgorithm.BLAKE2S_160: return new Blake2sDigest(160);
- case DigestAlgorithm.BLAKE2S_224: return new Blake2sDigest(224);
- case DigestAlgorithm.BLAKE2S_256: return new Blake2sDigest(256);
- case DigestAlgorithm.DSTU7564_256: return new Dstu7564Digest(256);
- case DigestAlgorithm.DSTU7564_384: return new Dstu7564Digest(384);
- case DigestAlgorithm.DSTU7564_512: return new Dstu7564Digest(512);
- case DigestAlgorithm.GOST3411: return new Gost3411Digest();
- case DigestAlgorithm.GOST3411_2012_256: return new Gost3411_2012_256Digest();
- case DigestAlgorithm.GOST3411_2012_512: return new Gost3411_2012_512Digest();
- case DigestAlgorithm.KECCAK_224: return new KeccakDigest(224);
- case DigestAlgorithm.KECCAK_256: return new KeccakDigest(256);
- case DigestAlgorithm.KECCAK_288: return new KeccakDigest(288);
- case DigestAlgorithm.KECCAK_384: return new KeccakDigest(384);
- case DigestAlgorithm.KECCAK_512: return new KeccakDigest(512);
- case DigestAlgorithm.MD2: return new MD2Digest();
- case DigestAlgorithm.MD4: return new MD4Digest();
- case DigestAlgorithm.MD5: return new MD5Digest();
- case DigestAlgorithm.NONE: return new NullDigest();
- case DigestAlgorithm.RIPEMD128: return new RipeMD128Digest();
- case DigestAlgorithm.RIPEMD160: return new RipeMD160Digest();
- case DigestAlgorithm.RIPEMD256: return new RipeMD256Digest();
- case DigestAlgorithm.RIPEMD320: return new RipeMD320Digest();
- case DigestAlgorithm.SHA_1: return new Sha1Digest();
- case DigestAlgorithm.SHA_224: return new Sha224Digest();
- case DigestAlgorithm.SHA_256: return new Sha256Digest();
- case DigestAlgorithm.SHA_384: return new Sha384Digest();
- case DigestAlgorithm.SHA_512: return new Sha512Digest();
- case DigestAlgorithm.SHA_512_224: return new Sha512tDigest(224);
- case DigestAlgorithm.SHA_512_256: return new Sha512tDigest(256);
- case DigestAlgorithm.SHA3_224: return new Sha3Digest(224);
- case DigestAlgorithm.SHA3_256: return new Sha3Digest(256);
- case DigestAlgorithm.SHA3_384: return new Sha3Digest(384);
- case DigestAlgorithm.SHA3_512: return new Sha3Digest(512);
- case DigestAlgorithm.SHAKE128_256: return new ShakeDigest(128);
- case DigestAlgorithm.SHAKE256_512: return new ShakeDigest(256);
- case DigestAlgorithm.SM3: return new SM3Digest();
- case DigestAlgorithm.TIGER: return new TigerDigest();
- case DigestAlgorithm.WHIRLPOOL: return new WhirlpoolDigest();
+ case DigestAlgorithm.BLAKE2B_160: return new Blake2bDigest(160);
+ case DigestAlgorithm.BLAKE2B_256: return new Blake2bDigest(256);
+ case DigestAlgorithm.BLAKE2B_384: return new Blake2bDigest(384);
+ case DigestAlgorithm.BLAKE2B_512: return new Blake2bDigest(512);
+ case DigestAlgorithm.BLAKE2S_128: return new Blake2sDigest(128);
+ case DigestAlgorithm.BLAKE2S_160: return new Blake2sDigest(160);
+ case DigestAlgorithm.BLAKE2S_224: return new Blake2sDigest(224);
+ case DigestAlgorithm.BLAKE2S_256: return new Blake2sDigest(256);
+ case DigestAlgorithm.DSTU7564_256: return new Dstu7564Digest(256);
+ case DigestAlgorithm.DSTU7564_384: return new Dstu7564Digest(384);
+ case DigestAlgorithm.DSTU7564_512: return new Dstu7564Digest(512);
+ case DigestAlgorithm.GOST3411: return new Gost3411Digest();
+ case DigestAlgorithm.GOST3411_2012_256: return new Gost3411_2012_256Digest();
+ case DigestAlgorithm.GOST3411_2012_512: return new Gost3411_2012_512Digest();
+ case DigestAlgorithm.KECCAK_224: return new KeccakDigest(224);
+ case DigestAlgorithm.KECCAK_256: return new KeccakDigest(256);
+ case DigestAlgorithm.KECCAK_288: return new KeccakDigest(288);
+ case DigestAlgorithm.KECCAK_384: return new KeccakDigest(384);
+ case DigestAlgorithm.KECCAK_512: return new KeccakDigest(512);
+ case DigestAlgorithm.MD2: return new MD2Digest();
+ case DigestAlgorithm.MD4: return new MD4Digest();
+ case DigestAlgorithm.MD5: return new MD5Digest();
+ case DigestAlgorithm.NONE: return new NullDigest();
+ case DigestAlgorithm.RIPEMD128: return new RipeMD128Digest();
+ case DigestAlgorithm.RIPEMD160: return new RipeMD160Digest();
+ case DigestAlgorithm.RIPEMD256: return new RipeMD256Digest();
+ case DigestAlgorithm.RIPEMD320: return new RipeMD320Digest();
+ case DigestAlgorithm.SHA_1: return new Sha1Digest();
+ case DigestAlgorithm.SHA_224: return new Sha224Digest();
+ case DigestAlgorithm.SHA_256: return new Sha256Digest();
+ case DigestAlgorithm.SHA_384: return new Sha384Digest();
+ case DigestAlgorithm.SHA_512: return new Sha512Digest();
+ case DigestAlgorithm.SHA_512_224: return new Sha512tDigest(224);
+ case DigestAlgorithm.SHA_512_256: return new Sha512tDigest(256);
+ case DigestAlgorithm.SHA3_224: return new Sha3Digest(224);
+ case DigestAlgorithm.SHA3_256: return new Sha3Digest(256);
+ case DigestAlgorithm.SHA3_384: return new Sha3Digest(384);
+ case DigestAlgorithm.SHA3_512: return new Sha3Digest(512);
+ case DigestAlgorithm.SHAKE128_256: return new ShakeDigest(128);
+ case DigestAlgorithm.SHAKE256_512: return new ShakeDigest(256);
+ case DigestAlgorithm.SM3: return new SM3Digest();
+ case DigestAlgorithm.TIGER: return new TigerDigest();
+ case DigestAlgorithm.WHIRLPOOL: return new WhirlpoolDigest();
}
}
catch (ArgumentException)
@@ -270,10 +253,9 @@ namespace Org.BouncyCastle.Security
throw new SecurityUtilityException("Digest " + mechanism + " not recognised.");
}
- public static string GetAlgorithmName(
- DerObjectIdentifier oid)
+ public static string GetAlgorithmName(DerObjectIdentifier oid)
{
- return (string) algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(Aliases, oid.Id);
}
public static byte[] CalculateDigest(DerObjectIdentifier id, byte[] input)
@@ -288,17 +270,14 @@ namespace Org.BouncyCastle.Security
return DoFinal(digest);
}
- public static byte[] DoFinal(
- IDigest digest)
+ public static byte[] DoFinal(IDigest digest)
{
byte[] b = new byte[digest.GetDigestSize()];
digest.DoFinal(b, 0);
return b;
}
- public static byte[] DoFinal(
- IDigest digest,
- byte[] input)
+ public static byte[] DoFinal(IDigest digest, byte[] input)
{
digest.BlockUpdate(input, 0, input.Length);
return DoFinal(digest);
diff --git a/crypto/src/security/DotNetUtilities.cs b/crypto/src/security/DotNetUtilities.cs
index 0a83ab88c..d37e27abd 100644
--- a/crypto/src/security/DotNetUtilities.cs
+++ b/crypto/src/security/DotNetUtilities.cs
@@ -17,12 +17,8 @@ namespace Org.BouncyCastle.Security
/// <summary>
/// A class containing methods to interface the BouncyCastle world to the .NET Crypto world.
/// </summary>
- public sealed class DotNetUtilities
+ public static class DotNetUtilities
{
- private DotNetUtilities()
- {
- }
-
/// <summary>
/// Create an System.Security.Cryptography.X509Certificate from an X509Certificate Structure.
/// </summary>
diff --git a/crypto/src/security/GeneratorUtilities.cs b/crypto/src/security/GeneratorUtilities.cs
index 8f996bcc6..c48a71f2e 100644
--- a/crypto/src/security/GeneratorUtilities.cs
+++ b/crypto/src/security/GeneratorUtilities.cs
@@ -1,4 +1,5 @@
-using System.Collections;
+using System;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
@@ -15,18 +16,18 @@ using Org.BouncyCastle.Asn1.X9;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
- public sealed class GeneratorUtilities
+ public static class GeneratorUtilities
{
- private GeneratorUtilities()
- {
- }
-
- private static readonly IDictionary kgAlgorithms = Platform.CreateHashtable();
- private static readonly IDictionary kpgAlgorithms = Platform.CreateHashtable();
- private static readonly IDictionary defaultKeySizes = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> KgAlgorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private static readonly IDictionary<string, string> KpgAlgorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private static readonly IDictionary<string, int> DefaultKeySizes =
+ new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
static GeneratorUtilities()
{
@@ -263,72 +264,62 @@ namespace Org.BouncyCastle.Security
{
foreach (string algorithm in algorithms)
{
- defaultKeySizes.Add(algorithm, size);
+ DefaultKeySizes.Add(algorithm, size);
}
}
- private static void AddKgAlgorithm(
- string canonicalName,
- params object[] aliases)
+ private static void AddKgAlgorithm(string canonicalName, params object[] aliases)
{
- kgAlgorithms[Platform.ToUpperInvariant(canonicalName)] = canonicalName;
+ KgAlgorithms[canonicalName] = canonicalName;
foreach (object alias in aliases)
{
- kgAlgorithms[Platform.ToUpperInvariant(alias.ToString())] = canonicalName;
+ KgAlgorithms[alias.ToString()] = canonicalName;
}
}
- private static void AddKpgAlgorithm(
- string canonicalName,
- params object[] aliases)
+ private static void AddKpgAlgorithm(string canonicalName, params object[] aliases)
{
- kpgAlgorithms[Platform.ToUpperInvariant(canonicalName)] = canonicalName;
+ KpgAlgorithms[canonicalName] = canonicalName;
foreach (object alias in aliases)
{
- kpgAlgorithms[Platform.ToUpperInvariant(alias.ToString())] = canonicalName;
+ KpgAlgorithms[alias.ToString()] = canonicalName;
}
}
- private static void AddHMacKeyGenerator(
- string algorithm,
- params object[] aliases)
+ private static void AddHMacKeyGenerator(string algorithm, params object[] aliases)
{
string mainName = "HMAC" + algorithm;
- kgAlgorithms[mainName] = mainName;
- kgAlgorithms["HMAC-" + algorithm] = mainName;
- kgAlgorithms["HMAC/" + algorithm] = mainName;
+ KgAlgorithms[mainName] = mainName;
+ KgAlgorithms["HMAC-" + algorithm] = mainName;
+ KgAlgorithms["HMAC/" + algorithm] = mainName;
foreach (object alias in aliases)
{
- kgAlgorithms[Platform.ToUpperInvariant(alias.ToString())] = mainName;
+ KgAlgorithms[alias.ToString()] = mainName;
}
}
// TODO Consider making this public
- internal static string GetCanonicalKeyGeneratorAlgorithm(
- string algorithm)
+ internal static string GetCanonicalKeyGeneratorAlgorithm(string algorithm)
{
- return (string) kgAlgorithms[Platform.ToUpperInvariant(algorithm)];
+ return CollectionUtilities.GetValueOrNull(KgAlgorithms, algorithm);
}
// TODO Consider making this public
- internal static string GetCanonicalKeyPairGeneratorAlgorithm(
- string algorithm)
+ internal static string GetCanonicalKeyPairGeneratorAlgorithm(string algorithm)
{
- return (string)kpgAlgorithms[Platform.ToUpperInvariant(algorithm)];
+ return CollectionUtilities.GetValueOrNull(KpgAlgorithms, algorithm);
}
- public static CipherKeyGenerator GetKeyGenerator(
- DerObjectIdentifier oid)
+ public static CipherKeyGenerator GetKeyGenerator(DerObjectIdentifier oid)
{
return GetKeyGenerator(oid.Id);
}
- public static CipherKeyGenerator GetKeyGenerator(
- string algorithm)
+ public static CipherKeyGenerator GetKeyGenerator(string algorithm)
{
string canonicalName = GetCanonicalKeyGeneratorAlgorithm(algorithm);
@@ -349,14 +340,12 @@ namespace Org.BouncyCastle.Security
return new CipherKeyGenerator(defaultKeySize);
}
- public static IAsymmetricCipherKeyPairGenerator GetKeyPairGenerator(
- DerObjectIdentifier oid)
+ public static IAsymmetricCipherKeyPairGenerator GetKeyPairGenerator(DerObjectIdentifier oid)
{
return GetKeyPairGenerator(oid.Id);
}
- public static IAsymmetricCipherKeyPairGenerator GetKeyPairGenerator(
- string algorithm)
+ public static IAsymmetricCipherKeyPairGenerator GetKeyPairGenerator(string algorithm)
{
string canonicalName = GetCanonicalKeyPairGeneratorAlgorithm(algorithm);
@@ -398,14 +387,12 @@ namespace Org.BouncyCastle.Security
+ " (" + canonicalName + ") not supported.");
}
- internal static int GetDefaultKeySize(
- DerObjectIdentifier oid)
+ internal static int GetDefaultKeySize(DerObjectIdentifier oid)
{
return GetDefaultKeySize(oid.Id);
}
- internal static int GetDefaultKeySize(
- string algorithm)
+ internal static int GetDefaultKeySize(string algorithm)
{
string canonicalName = GetCanonicalKeyGeneratorAlgorithm(algorithm);
@@ -420,13 +407,9 @@ namespace Org.BouncyCastle.Security
return defaultKeySize;
}
- private static int FindDefaultKeySize(
- string canonicalName)
+ private static int FindDefaultKeySize(string canonicalName)
{
- if (!defaultKeySizes.Contains(canonicalName))
- return -1;
-
- return (int)defaultKeySizes[canonicalName];
+ return DefaultKeySizes.TryGetValue(canonicalName, out int keySize) ? keySize : -1;
}
}
}
diff --git a/crypto/src/security/MacUtilities.cs b/crypto/src/security/MacUtilities.cs
index f36fc6ae4..f9f586d29 100644
--- a/crypto/src/security/MacUtilities.cs
+++ b/crypto/src/security/MacUtilities.cs
@@ -1,6 +1,5 @@
using System;
-using System.Collections;
-using System.Globalization;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Iana;
@@ -13,118 +12,86 @@ using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Macs;
using Org.BouncyCastle.Crypto.Paddings;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <remarks>
/// Utility class for creating HMac object from their names/Oids
/// </remarks>
- public sealed class MacUtilities
+ public static class MacUtilities
{
- private MacUtilities()
- {
- }
-
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- //private static readonly IDictionary oids = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> Algorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
static MacUtilities()
{
- algorithms[IanaObjectIdentifiers.HmacMD5.Id] = "HMAC-MD5";
- algorithms[IanaObjectIdentifiers.HmacRipeMD160.Id] = "HMAC-RIPEMD160";
- algorithms[IanaObjectIdentifiers.HmacSha1.Id] = "HMAC-SHA1";
- algorithms[IanaObjectIdentifiers.HmacTiger.Id] = "HMAC-TIGER";
-
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha1.Id] = "HMAC-SHA1";
- algorithms[MiscObjectIdentifiers.HMAC_SHA1.Id] = "HMAC-SHA1";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha224.Id] = "HMAC-SHA224";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha256.Id] = "HMAC-SHA256";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha384.Id] = "HMAC-SHA384";
- algorithms[PkcsObjectIdentifiers.IdHmacWithSha512.Id] = "HMAC-SHA512";
-
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_224.Id] = "HMAC-SHA3-224";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_256.Id] = "HMAC-SHA3-256";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_384.Id] = "HMAC-SHA3-384";
- algorithms[NistObjectIdentifiers.IdHMacWithSha3_512.Id] = "HMAC-SHA3-512";
-
- algorithms[RosstandartObjectIdentifiers.id_tc26_hmac_gost_3411_12_256.Id] = "HMAC-GOST3411-2012-256";
- algorithms[RosstandartObjectIdentifiers.id_tc26_hmac_gost_3411_12_512.Id] = "HMAC-GOST3411-2012-512";
+ Algorithms[IanaObjectIdentifiers.HmacMD5.Id] = "HMAC-MD5";
+ Algorithms[IanaObjectIdentifiers.HmacRipeMD160.Id] = "HMAC-RIPEMD160";
+ Algorithms[IanaObjectIdentifiers.HmacSha1.Id] = "HMAC-SHA1";
+ Algorithms[IanaObjectIdentifiers.HmacTiger.Id] = "HMAC-TIGER";
+
+ Algorithms[PkcsObjectIdentifiers.IdHmacWithSha1.Id] = "HMAC-SHA1";
+ Algorithms[MiscObjectIdentifiers.HMAC_SHA1.Id] = "HMAC-SHA1";
+ Algorithms[PkcsObjectIdentifiers.IdHmacWithSha224.Id] = "HMAC-SHA224";
+ Algorithms[PkcsObjectIdentifiers.IdHmacWithSha256.Id] = "HMAC-SHA256";
+ Algorithms[PkcsObjectIdentifiers.IdHmacWithSha384.Id] = "HMAC-SHA384";
+ Algorithms[PkcsObjectIdentifiers.IdHmacWithSha512.Id] = "HMAC-SHA512";
+
+ Algorithms[NistObjectIdentifiers.IdHMacWithSha3_224.Id] = "HMAC-SHA3-224";
+ Algorithms[NistObjectIdentifiers.IdHMacWithSha3_256.Id] = "HMAC-SHA3-256";
+ Algorithms[NistObjectIdentifiers.IdHMacWithSha3_384.Id] = "HMAC-SHA3-384";
+ Algorithms[NistObjectIdentifiers.IdHMacWithSha3_512.Id] = "HMAC-SHA3-512";
+
+ Algorithms[RosstandartObjectIdentifiers.id_tc26_hmac_gost_3411_12_256.Id] = "HMAC-GOST3411-2012-256";
+ Algorithms[RosstandartObjectIdentifiers.id_tc26_hmac_gost_3411_12_512.Id] = "HMAC-GOST3411-2012-512";
// TODO AESMAC?
- algorithms["DES"] = "DESMAC";
- algorithms["DES/CFB8"] = "DESMAC/CFB8";
- algorithms["DES64"] = "DESMAC64";
- algorithms["DESEDE"] = "DESEDEMAC";
- algorithms[PkcsObjectIdentifiers.DesEde3Cbc.Id] = "DESEDEMAC";
- algorithms["DESEDE/CFB8"] = "DESEDEMAC/CFB8";
- algorithms["DESISO9797MAC"] = "DESWITHISO9797";
- algorithms["DESEDE64"] = "DESEDEMAC64";
-
- algorithms["DESEDE64WITHISO7816-4PADDING"] = "DESEDEMAC64WITHISO7816-4PADDING";
- algorithms["DESEDEISO9797ALG1MACWITHISO7816-4PADDING"] = "DESEDEMAC64WITHISO7816-4PADDING";
- algorithms["DESEDEISO9797ALG1WITHISO7816-4PADDING"] = "DESEDEMAC64WITHISO7816-4PADDING";
-
- algorithms["ISO9797ALG3"] = "ISO9797ALG3MAC";
- algorithms["ISO9797ALG3MACWITHISO7816-4PADDING"] = "ISO9797ALG3WITHISO7816-4PADDING";
-
- algorithms["SKIPJACK"] = "SKIPJACKMAC";
- algorithms["SKIPJACK/CFB8"] = "SKIPJACKMAC/CFB8";
- algorithms["IDEA"] = "IDEAMAC";
- algorithms["IDEA/CFB8"] = "IDEAMAC/CFB8";
- algorithms["RC2"] = "RC2MAC";
- algorithms["RC2/CFB8"] = "RC2MAC/CFB8";
- algorithms["RC5"] = "RC5MAC";
- algorithms["RC5/CFB8"] = "RC5MAC/CFB8";
- algorithms["GOST28147"] = "GOST28147MAC";
- algorithms["VMPC"] = "VMPCMAC";
- algorithms["VMPC-MAC"] = "VMPCMAC";
- algorithms["SIPHASH"] = "SIPHASH-2-4";
-
- algorithms["PBEWITHHMACSHA"] = "PBEWITHHMACSHA1";
- algorithms["1.3.14.3.2.26"] = "PBEWITHHMACSHA1";
+ Algorithms["DES"] = "DESMAC";
+ Algorithms["DES/CFB8"] = "DESMAC/CFB8";
+ Algorithms["DES64"] = "DESMAC64";
+ Algorithms["DESEDE"] = "DESEDEMAC";
+ Algorithms[PkcsObjectIdentifiers.DesEde3Cbc.Id] = "DESEDEMAC";
+ Algorithms["DESEDE/CFB8"] = "DESEDEMAC/CFB8";
+ Algorithms["DESISO9797MAC"] = "DESWITHISO9797";
+ Algorithms["DESEDE64"] = "DESEDEMAC64";
+
+ Algorithms["DESEDE64WITHISO7816-4PADDING"] = "DESEDEMAC64WITHISO7816-4PADDING";
+ Algorithms["DESEDEISO9797ALG1MACWITHISO7816-4PADDING"] = "DESEDEMAC64WITHISO7816-4PADDING";
+ Algorithms["DESEDEISO9797ALG1WITHISO7816-4PADDING"] = "DESEDEMAC64WITHISO7816-4PADDING";
+
+ Algorithms["ISO9797ALG3"] = "ISO9797ALG3MAC";
+ Algorithms["ISO9797ALG3MACWITHISO7816-4PADDING"] = "ISO9797ALG3WITHISO7816-4PADDING";
+
+ Algorithms["SKIPJACK"] = "SKIPJACKMAC";
+ Algorithms["SKIPJACK/CFB8"] = "SKIPJACKMAC/CFB8";
+ Algorithms["IDEA"] = "IDEAMAC";
+ Algorithms["IDEA/CFB8"] = "IDEAMAC/CFB8";
+ Algorithms["RC2"] = "RC2MAC";
+ Algorithms["RC2/CFB8"] = "RC2MAC/CFB8";
+ Algorithms["RC5"] = "RC5MAC";
+ Algorithms["RC5/CFB8"] = "RC5MAC/CFB8";
+ Algorithms["GOST28147"] = "GOST28147MAC";
+ Algorithms["VMPC"] = "VMPCMAC";
+ Algorithms["VMPC-MAC"] = "VMPCMAC";
+ Algorithms["SIPHASH"] = "SIPHASH-2-4";
+
+ Algorithms["PBEWITHHMACSHA"] = "PBEWITHHMACSHA1";
+ Algorithms["1.3.14.3.2.26"] = "PBEWITHHMACSHA1";
}
-// /// <summary>
-// /// Returns a ObjectIdentifier for a given digest mechanism.
-// /// </summary>
-// /// <param name="mechanism">A string representation of the digest meanism.</param>
-// /// <returns>A DerObjectIdentifier, null if the Oid is not available.</returns>
-// public static DerObjectIdentifier GetObjectIdentifier(
-// string mechanism)
-// {
-// mechanism = (string) algorithms[Platform.ToUpperInvariant(mechanism)];
-//
-// if (mechanism != null)
-// {
-// return (DerObjectIdentifier)oids[mechanism];
-// }
-//
-// return null;
-// }
-
-// public static ICollection Algorithms
-// {
-// get { return oids.Keys; }
-// }
-
- public static IMac GetMac(
- DerObjectIdentifier id)
+ public static IMac GetMac(DerObjectIdentifier id)
{
return GetMac(id.Id);
}
- public static IMac GetMac(
- string algorithm)
+ public static IMac GetMac(string algorithm)
{
- string upper = Platform.ToUpperInvariant(algorithm);
+ if (algorithm == null)
+ throw new ArgumentNullException(nameof(algorithm));
- string mechanism = (string) algorithms[upper];
-
- if (mechanism == null)
- {
- mechanism = upper;
- }
+ string mechanism = CollectionUtilities.GetValueOrKey(Algorithms, algorithm).ToUpperInvariant();
if (Platform.StartsWith(mechanism, "PBEWITH"))
{
@@ -238,10 +205,9 @@ namespace Org.BouncyCastle.Security
throw new SecurityUtilityException("Mac " + mechanism + " not recognised.");
}
- public static string GetAlgorithmName(
- DerObjectIdentifier oid)
+ public static string GetAlgorithmName(DerObjectIdentifier oid)
{
- return (string) algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(Algorithms, oid.Id);
}
public static byte[] CalculateMac(string algorithm, ICipherParameters cp, byte[] input)
diff --git a/crypto/src/security/ParameterUtilities.cs b/crypto/src/security/ParameterUtilities.cs
index fdb8d86be..5a407fc9d 100644
--- a/crypto/src/security/ParameterUtilities.cs
+++ b/crypto/src/security/ParameterUtilities.cs
@@ -1,5 +1,5 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
@@ -12,18 +12,16 @@ using Org.BouncyCastle.Asn1.Oiw;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
-using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
- public sealed class ParameterUtilities
+ public static class ParameterUtilities
{
- private ParameterUtilities()
- {
- }
-
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- private static readonly IDictionary basicIVSizes = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> Algorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private static readonly IDictionary<string, int> BasicIVSizes =
+ new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
static ParameterUtilities()
{
@@ -164,15 +162,13 @@ namespace Org.BouncyCastle.Security
// "RIJNDAEL", "SKIPJACK", "TWOFISH"
}
- private static void AddAlgorithm(
- string canonicalName,
- params object[] aliases)
+ private static void AddAlgorithm(string canonicalName, params object[] aliases)
{
- algorithms[canonicalName] = canonicalName;
+ Algorithms[canonicalName] = canonicalName;
foreach (object alias in aliases)
{
- algorithms[alias.ToString()] = canonicalName;
+ Algorithms[alias.ToString()] = canonicalName;
}
}
@@ -180,26 +176,21 @@ namespace Org.BouncyCastle.Security
{
foreach (string algorithm in algorithms)
{
- basicIVSizes.Add(algorithm, size);
+ BasicIVSizes.Add(algorithm, size);
}
}
- public static string GetCanonicalAlgorithmName(
- string algorithm)
+ public static string GetCanonicalAlgorithmName(string algorithm)
{
- return (string) algorithms[Platform.ToUpperInvariant(algorithm)];
+ return CollectionUtilities.GetValueOrNull(Algorithms, algorithm);
}
- public static KeyParameter CreateKeyParameter(
- DerObjectIdentifier algOid,
- byte[] keyBytes)
+ public static KeyParameter CreateKeyParameter(DerObjectIdentifier algOid, byte[] keyBytes)
{
return CreateKeyParameter(algOid.Id, keyBytes, 0, keyBytes.Length);
}
- public static KeyParameter CreateKeyParameter(
- string algorithm,
- byte[] keyBytes)
+ public static KeyParameter CreateKeyParameter(string algorithm, byte[] keyBytes)
{
return CreateKeyParameter(algorithm, keyBytes, 0, keyBytes.Length);
}
@@ -220,7 +211,7 @@ namespace Org.BouncyCastle.Security
int length)
{
if (algorithm == null)
- throw new ArgumentNullException("algorithm");
+ throw new ArgumentNullException(nameof(algorithm));
string canonical = GetCanonicalAlgorithmName(algorithm);
@@ -348,9 +339,7 @@ namespace Org.BouncyCastle.Security
return cp;
}
- private static Asn1OctetString CreateIVOctetString(
- SecureRandom random,
- int ivLength)
+ private static Asn1OctetString CreateIVOctetString(SecureRandom random, int ivLength)
{
return new DerOctetString(CreateIV(random, ivLength));
}
@@ -360,13 +349,9 @@ namespace Org.BouncyCastle.Security
return SecureRandom.GetNextBytes(random, ivLength);
}
- private static int FindBasicIVSize(
- string canonicalName)
+ private static int FindBasicIVSize(string canonicalName)
{
- if (!basicIVSizes.Contains(canonicalName))
- return -1;
-
- return (int)basicIVSizes[canonicalName];
+ return BasicIVSizes.TryGetValue(canonicalName, out int keySize) ? keySize : -1;
}
}
}
diff --git a/crypto/src/security/PbeUtilities.cs b/crypto/src/security/PbeUtilities.cs
index 622c6dd43..4121ddd7d 100644
--- a/crypto/src/security/PbeUtilities.cs
+++ b/crypto/src/security/PbeUtilities.cs
@@ -1,5 +1,5 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.BC;
@@ -10,40 +10,36 @@ using Org.BouncyCastle.Asn1.TeleTrust;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Digests;
-using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Generators;
-using Org.BouncyCastle.Crypto.Macs;
-using Org.BouncyCastle.Crypto.Modes;
-using Org.BouncyCastle.Crypto.Paddings;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <summary>
///
/// </summary>
- public sealed class PbeUtilities
+ public static class PbeUtilities
{
- private PbeUtilities()
- {
- }
-
const string Pkcs5S1 = "Pkcs5S1";
const string Pkcs5S2 = "Pkcs5S2";
const string Pkcs12 = "Pkcs12";
const string OpenSsl = "OpenSsl";
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- private static readonly IDictionary algorithmType = Platform.CreateHashtable();
- private static readonly IDictionary oids = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> Algorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private static readonly IDictionary<string, string> AlgorithmType =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ private static readonly IDictionary<string, DerObjectIdentifier> Oids =
+ new Dictionary<string, DerObjectIdentifier>(StringComparer.OrdinalIgnoreCase);
static PbeUtilities()
{
- algorithms["PKCS5SCHEME1"] = "Pkcs5scheme1";
- algorithms["PKCS5SCHEME2"] = "Pkcs5scheme2";
- algorithms["PBKDF2"] = "Pkcs5scheme2";
- algorithms[PkcsObjectIdentifiers.IdPbeS2.Id] = "Pkcs5scheme2";
+ Algorithms["PKCS5SCHEME1"] = "Pkcs5scheme1";
+ Algorithms["PKCS5SCHEME2"] = "Pkcs5scheme2";
+ Algorithms["PBKDF2"] = "Pkcs5scheme2";
+ Algorithms[PkcsObjectIdentifiers.IdPbeS2.Id] = "Pkcs5scheme2";
// algorithms[PkcsObjectIdentifiers.IdPbkdf2.Id] = "Pkcs5scheme2";
// FIXME Add support for these? (see Pkcs8Generator)
@@ -52,155 +48,155 @@ namespace Org.BouncyCastle.Security
// algorithms[NistObjectIdentifiers.IdAes192Cbc.Id] = "Pkcs5scheme2";
// algorithms[NistObjectIdentifiers.IdAes256Cbc.Id] = "Pkcs5scheme2";
- algorithms["PBEWITHMD2ANDDES-CBC"] = "PBEwithMD2andDES-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithMD2AndDesCbc.Id] = "PBEwithMD2andDES-CBC";
- algorithms["PBEWITHMD2ANDRC2-CBC"] = "PBEwithMD2andRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithMD2AndRC2Cbc.Id] = "PBEwithMD2andRC2-CBC";
- algorithms["PBEWITHMD5ANDDES-CBC"] = "PBEwithMD5andDES-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithMD5AndDesCbc.Id] = "PBEwithMD5andDES-CBC";
- algorithms["PBEWITHMD5ANDRC2-CBC"] = "PBEwithMD5andRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithMD5AndRC2Cbc.Id] = "PBEwithMD5andRC2-CBC";
- algorithms["PBEWITHSHA1ANDDES"] = "PBEwithSHA-1andDES-CBC";
- algorithms["PBEWITHSHA-1ANDDES"] = "PBEwithSHA-1andDES-CBC";
- algorithms["PBEWITHSHA1ANDDES-CBC"] = "PBEwithSHA-1andDES-CBC";
- algorithms["PBEWITHSHA-1ANDDES-CBC"] = "PBEwithSHA-1andDES-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithSha1AndDesCbc.Id] = "PBEwithSHA-1andDES-CBC";
- algorithms["PBEWITHSHA1ANDRC2"] = "PBEwithSHA-1andRC2-CBC";
- algorithms["PBEWITHSHA-1ANDRC2"] = "PBEwithSHA-1andRC2-CBC";
- algorithms["PBEWITHSHA1ANDRC2-CBC"] = "PBEwithSHA-1andRC2-CBC";
- algorithms["PBEWITHSHA-1ANDRC2-CBC"] = "PBEwithSHA-1andRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithSha1AndRC2Cbc.Id] = "PBEwithSHA-1andRC2-CBC";
- algorithms["PKCS12"] = "Pkcs12";
- algorithms[BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.Id] = "PBEwithSHA-1and128bitAES-CBC-BC";
- algorithms[BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.Id] = "PBEwithSHA-1and192bitAES-CBC-BC";
- algorithms[BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.Id] = "PBEwithSHA-1and256bitAES-CBC-BC";
- algorithms[BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.Id] = "PBEwithSHA-256and128bitAES-CBC-BC";
- algorithms[BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.Id] = "PBEwithSHA-256and192bitAES-CBC-BC";
- algorithms[BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.Id] = "PBEwithSHA-256and256bitAES-CBC-BC";
- algorithms["PBEWITHSHAAND128BITRC4"] = "PBEwithSHA-1and128bitRC4";
- algorithms["PBEWITHSHA1AND128BITRC4"] = "PBEwithSHA-1and128bitRC4";
- algorithms["PBEWITHSHA-1AND128BITRC4"] = "PBEwithSHA-1and128bitRC4";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC4.Id] = "PBEwithSHA-1and128bitRC4";
- algorithms["PBEWITHSHAAND40BITRC4"] = "PBEwithSHA-1and40bitRC4";
- algorithms["PBEWITHSHA1AND40BITRC4"] = "PBEwithSHA-1and40bitRC4";
- algorithms["PBEWITHSHA-1AND40BITRC4"] = "PBEwithSHA-1and40bitRC4";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd40BitRC4.Id] = "PBEwithSHA-1and40bitRC4";
- algorithms["PBEWITHSHAAND3-KEYDESEDE-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms["PBEWITHSHAAND3-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms["PBEWITHSHA1AND3-KEYDESEDE-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms["PBEWITHSHA1AND3-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms["PBEWITHSHA-1AND3-KEYDESEDE-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms["PBEWITHSHA-1AND3-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc.Id] = "PBEwithSHA-1and3-keyDESEDE-CBC";
- algorithms["PBEWITHSHAAND2-KEYDESEDE-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms["PBEWITHSHAAND2-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms["PBEWITHSHA1AND2-KEYDESEDE-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms["PBEWITHSHA1AND2-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms["PBEWITHSHA-1AND2-KEYDESEDE-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms["PBEWITHSHA-1AND2-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc.Id] = "PBEwithSHA-1and2-keyDESEDE-CBC";
- algorithms["PBEWITHSHAAND128BITRC2-CBC"] = "PBEwithSHA-1and128bitRC2-CBC";
- algorithms["PBEWITHSHA1AND128BITRC2-CBC"] = "PBEwithSHA-1and128bitRC2-CBC";
- algorithms["PBEWITHSHA-1AND128BITRC2-CBC"] = "PBEwithSHA-1and128bitRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC2Cbc.Id] = "PBEwithSHA-1and128bitRC2-CBC";
- algorithms["PBEWITHSHAAND40BITRC2-CBC"] = "PBEwithSHA-1and40bitRC2-CBC";
- algorithms["PBEWITHSHA1AND40BITRC2-CBC"] = "PBEwithSHA-1and40bitRC2-CBC";
- algorithms["PBEWITHSHA-1AND40BITRC2-CBC"] = "PBEwithSHA-1and40bitRC2-CBC";
- algorithms[PkcsObjectIdentifiers.PbewithShaAnd40BitRC2Cbc.Id] = "PBEwithSHA-1and40bitRC2-CBC";
- algorithms["PBEWITHSHAAND128BITAES-CBC-BC"] = "PBEwithSHA-1and128bitAES-CBC-BC";
- algorithms["PBEWITHSHA1AND128BITAES-CBC-BC"] = "PBEwithSHA-1and128bitAES-CBC-BC";
- algorithms["PBEWITHSHA-1AND128BITAES-CBC-BC"] = "PBEwithSHA-1and128bitAES-CBC-BC";
- algorithms["PBEWITHSHAAND192BITAES-CBC-BC"] = "PBEwithSHA-1and192bitAES-CBC-BC";
- algorithms["PBEWITHSHA1AND192BITAES-CBC-BC"] = "PBEwithSHA-1and192bitAES-CBC-BC";
- algorithms["PBEWITHSHA-1AND192BITAES-CBC-BC"] = "PBEwithSHA-1and192bitAES-CBC-BC";
- algorithms["PBEWITHSHAAND256BITAES-CBC-BC"] = "PBEwithSHA-1and256bitAES-CBC-BC";
- algorithms["PBEWITHSHA1AND256BITAES-CBC-BC"] = "PBEwithSHA-1and256bitAES-CBC-BC";
- algorithms["PBEWITHSHA-1AND256BITAES-CBC-BC"] = "PBEwithSHA-1and256bitAES-CBC-BC";
- algorithms["PBEWITHSHA256AND128BITAES-CBC-BC"] = "PBEwithSHA-256and128bitAES-CBC-BC";
- algorithms["PBEWITHSHA-256AND128BITAES-CBC-BC"] = "PBEwithSHA-256and128bitAES-CBC-BC";
- algorithms["PBEWITHSHA256AND192BITAES-CBC-BC"] = "PBEwithSHA-256and192bitAES-CBC-BC";
- algorithms["PBEWITHSHA-256AND192BITAES-CBC-BC"] = "PBEwithSHA-256and192bitAES-CBC-BC";
- algorithms["PBEWITHSHA256AND256BITAES-CBC-BC"] = "PBEwithSHA-256and256bitAES-CBC-BC";
- algorithms["PBEWITHSHA-256AND256BITAES-CBC-BC"] = "PBEwithSHA-256and256bitAES-CBC-BC";
- algorithms["PBEWITHSHAANDIDEA"] = "PBEwithSHA-1andIDEA-CBC";
- algorithms["PBEWITHSHAANDIDEA-CBC"] = "PBEwithSHA-1andIDEA-CBC";
- algorithms["PBEWITHSHAANDTWOFISH"] = "PBEwithSHA-1andTWOFISH-CBC";
- algorithms["PBEWITHSHAANDTWOFISH-CBC"] = "PBEwithSHA-1andTWOFISH-CBC";
- algorithms["PBEWITHHMACSHA1"] = "PBEwithHmacSHA-1";
- algorithms["PBEWITHHMACSHA-1"] = "PBEwithHmacSHA-1";
- algorithms[OiwObjectIdentifiers.IdSha1.Id] = "PBEwithHmacSHA-1";
- algorithms["PBEWITHHMACSHA224"] = "PBEwithHmacSHA-224";
- algorithms["PBEWITHHMACSHA-224"] = "PBEwithHmacSHA-224";
- algorithms[NistObjectIdentifiers.IdSha224.Id] = "PBEwithHmacSHA-224";
- algorithms["PBEWITHHMACSHA256"] = "PBEwithHmacSHA-256";
- algorithms["PBEWITHHMACSHA-256"] = "PBEwithHmacSHA-256";
- algorithms[NistObjectIdentifiers.IdSha256.Id] = "PBEwithHmacSHA-256";
- algorithms["PBEWITHHMACRIPEMD128"] = "PBEwithHmacRipeMD128";
- algorithms[TeleTrusTObjectIdentifiers.RipeMD128.Id] = "PBEwithHmacRipeMD128";
- algorithms["PBEWITHHMACRIPEMD160"] = "PBEwithHmacRipeMD160";
- algorithms[TeleTrusTObjectIdentifiers.RipeMD160.Id] = "PBEwithHmacRipeMD160";
- algorithms["PBEWITHHMACRIPEMD256"] = "PBEwithHmacRipeMD256";
- algorithms[TeleTrusTObjectIdentifiers.RipeMD256.Id] = "PBEwithHmacRipeMD256";
- algorithms["PBEWITHHMACTIGER"] = "PBEwithHmacTiger";
-
- algorithms["PBEWITHMD5AND128BITAES-CBC-OPENSSL"] = "PBEwithMD5and128bitAES-CBC-OpenSSL";
- algorithms["PBEWITHMD5AND192BITAES-CBC-OPENSSL"] = "PBEwithMD5and192bitAES-CBC-OpenSSL";
- algorithms["PBEWITHMD5AND256BITAES-CBC-OPENSSL"] = "PBEwithMD5and256bitAES-CBC-OpenSSL";
-
- algorithmType["Pkcs5scheme1"] = Pkcs5S1;
- algorithmType["Pkcs5scheme2"] = Pkcs5S2;
- algorithmType["PBEwithMD2andDES-CBC"] = Pkcs5S1;
- algorithmType["PBEwithMD2andRC2-CBC"] = Pkcs5S1;
- algorithmType["PBEwithMD5andDES-CBC"] = Pkcs5S1;
- algorithmType["PBEwithMD5andRC2-CBC"] = Pkcs5S1;
- algorithmType["PBEwithSHA-1andDES-CBC"] = Pkcs5S1;
- algorithmType["PBEwithSHA-1andRC2-CBC"] = Pkcs5S1;
- algorithmType["Pkcs12"] = Pkcs12;
- algorithmType["PBEwithSHA-1and128bitRC4"] = Pkcs12;
- algorithmType["PBEwithSHA-1and40bitRC4"] = Pkcs12;
- algorithmType["PBEwithSHA-1and3-keyDESEDE-CBC"] = Pkcs12;
- algorithmType["PBEwithSHA-1and2-keyDESEDE-CBC"] = Pkcs12;
- algorithmType["PBEwithSHA-1and128bitRC2-CBC"] = Pkcs12;
- algorithmType["PBEwithSHA-1and40bitRC2-CBC"] = Pkcs12;
- algorithmType["PBEwithSHA-1and128bitAES-CBC-BC"] = Pkcs12;
- algorithmType["PBEwithSHA-1and192bitAES-CBC-BC"] = Pkcs12;
- algorithmType["PBEwithSHA-1and256bitAES-CBC-BC"] = Pkcs12;
- algorithmType["PBEwithSHA-256and128bitAES-CBC-BC"] = Pkcs12;
- algorithmType["PBEwithSHA-256and192bitAES-CBC-BC"] = Pkcs12;
- algorithmType["PBEwithSHA-256and256bitAES-CBC-BC"] = Pkcs12;
- algorithmType["PBEwithSHA-1andIDEA-CBC"] = Pkcs12;
- algorithmType["PBEwithSHA-1andTWOFISH-CBC"] = Pkcs12;
- algorithmType["PBEwithHmacSHA-1"] = Pkcs12;
- algorithmType["PBEwithHmacSHA-224"] = Pkcs12;
- algorithmType["PBEwithHmacSHA-256"] = Pkcs12;
- algorithmType["PBEwithHmacRipeMD128"] = Pkcs12;
- algorithmType["PBEwithHmacRipeMD160"] = Pkcs12;
- algorithmType["PBEwithHmacRipeMD256"] = Pkcs12;
- algorithmType["PBEwithHmacTiger"] = Pkcs12;
-
- algorithmType["PBEwithMD5and128bitAES-CBC-OpenSSL"] = OpenSsl;
- algorithmType["PBEwithMD5and192bitAES-CBC-OpenSSL"] = OpenSsl;
- algorithmType["PBEwithMD5and256bitAES-CBC-OpenSSL"] = OpenSsl;
-
- oids["PBEwithMD2andDES-CBC"] = PkcsObjectIdentifiers.PbeWithMD2AndDesCbc;
- oids["PBEwithMD2andRC2-CBC"] = PkcsObjectIdentifiers.PbeWithMD2AndRC2Cbc;
- oids["PBEwithMD5andDES-CBC"] = PkcsObjectIdentifiers.PbeWithMD5AndDesCbc;
- oids["PBEwithMD5andRC2-CBC"] = PkcsObjectIdentifiers.PbeWithMD5AndRC2Cbc;
- oids["PBEwithSHA-1andDES-CBC"] = PkcsObjectIdentifiers.PbeWithSha1AndDesCbc;
- oids["PBEwithSHA-1andRC2-CBC"] = PkcsObjectIdentifiers.PbeWithSha1AndRC2Cbc;
- oids["PBEwithSHA-1and128bitRC4"] = PkcsObjectIdentifiers.PbeWithShaAnd128BitRC4;
- oids["PBEwithSHA-1and40bitRC4"] = PkcsObjectIdentifiers.PbeWithShaAnd40BitRC4;
- oids["PBEwithSHA-1and3-keyDESEDE-CBC"] = PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc;
- oids["PBEwithSHA-1and2-keyDESEDE-CBC"] = PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc;
- oids["PBEwithSHA-1and128bitRC2-CBC"] = PkcsObjectIdentifiers.PbeWithShaAnd128BitRC2Cbc;
- oids["PBEwithSHA-1and40bitRC2-CBC"] = PkcsObjectIdentifiers.PbewithShaAnd40BitRC2Cbc;
- oids["PBEwithHmacSHA-1"] = OiwObjectIdentifiers.IdSha1;
- oids["PBEwithHmacSHA-224"] = NistObjectIdentifiers.IdSha224;
- oids["PBEwithHmacSHA-256"] = NistObjectIdentifiers.IdSha256;
- oids["PBEwithHmacRipeMD128"] = TeleTrusTObjectIdentifiers.RipeMD128;
- oids["PBEwithHmacRipeMD160"] = TeleTrusTObjectIdentifiers.RipeMD160;
- oids["PBEwithHmacRipeMD256"] = TeleTrusTObjectIdentifiers.RipeMD256;
- oids["Pkcs5scheme2"] = PkcsObjectIdentifiers.IdPbeS2;
+ Algorithms["PBEWITHMD2ANDDES-CBC"] = "PBEwithMD2andDES-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithMD2AndDesCbc.Id] = "PBEwithMD2andDES-CBC";
+ Algorithms["PBEWITHMD2ANDRC2-CBC"] = "PBEwithMD2andRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithMD2AndRC2Cbc.Id] = "PBEwithMD2andRC2-CBC";
+ Algorithms["PBEWITHMD5ANDDES-CBC"] = "PBEwithMD5andDES-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithMD5AndDesCbc.Id] = "PBEwithMD5andDES-CBC";
+ Algorithms["PBEWITHMD5ANDRC2-CBC"] = "PBEwithMD5andRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithMD5AndRC2Cbc.Id] = "PBEwithMD5andRC2-CBC";
+ Algorithms["PBEWITHSHA1ANDDES"] = "PBEwithSHA-1andDES-CBC";
+ Algorithms["PBEWITHSHA-1ANDDES"] = "PBEwithSHA-1andDES-CBC";
+ Algorithms["PBEWITHSHA1ANDDES-CBC"] = "PBEwithSHA-1andDES-CBC";
+ Algorithms["PBEWITHSHA-1ANDDES-CBC"] = "PBEwithSHA-1andDES-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithSha1AndDesCbc.Id] = "PBEwithSHA-1andDES-CBC";
+ Algorithms["PBEWITHSHA1ANDRC2"] = "PBEwithSHA-1andRC2-CBC";
+ Algorithms["PBEWITHSHA-1ANDRC2"] = "PBEwithSHA-1andRC2-CBC";
+ Algorithms["PBEWITHSHA1ANDRC2-CBC"] = "PBEwithSHA-1andRC2-CBC";
+ Algorithms["PBEWITHSHA-1ANDRC2-CBC"] = "PBEwithSHA-1andRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithSha1AndRC2Cbc.Id] = "PBEwithSHA-1andRC2-CBC";
+ Algorithms["PKCS12"] = "Pkcs12";
+ Algorithms[BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.Id] = "PBEwithSHA-1and128bitAES-CBC-BC";
+ Algorithms[BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.Id] = "PBEwithSHA-1and192bitAES-CBC-BC";
+ Algorithms[BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.Id] = "PBEwithSHA-1and256bitAES-CBC-BC";
+ Algorithms[BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.Id] = "PBEwithSHA-256and128bitAES-CBC-BC";
+ Algorithms[BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.Id] = "PBEwithSHA-256and192bitAES-CBC-BC";
+ Algorithms[BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.Id] = "PBEwithSHA-256and256bitAES-CBC-BC";
+ Algorithms["PBEWITHSHAAND128BITRC4"] = "PBEwithSHA-1and128bitRC4";
+ Algorithms["PBEWITHSHA1AND128BITRC4"] = "PBEwithSHA-1and128bitRC4";
+ Algorithms["PBEWITHSHA-1AND128BITRC4"] = "PBEwithSHA-1and128bitRC4";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC4.Id] = "PBEwithSHA-1and128bitRC4";
+ Algorithms["PBEWITHSHAAND40BITRC4"] = "PBEwithSHA-1and40bitRC4";
+ Algorithms["PBEWITHSHA1AND40BITRC4"] = "PBEwithSHA-1and40bitRC4";
+ Algorithms["PBEWITHSHA-1AND40BITRC4"] = "PBEwithSHA-1and40bitRC4";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd40BitRC4.Id] = "PBEwithSHA-1and40bitRC4";
+ Algorithms["PBEWITHSHAAND3-KEYDESEDE-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHAAND3-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA1AND3-KEYDESEDE-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA1AND3-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA-1AND3-KEYDESEDE-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA-1AND3-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc.Id] = "PBEwithSHA-1and3-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHAAND2-KEYDESEDE-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHAAND2-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA1AND2-KEYDESEDE-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA1AND2-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA-1AND2-KEYDESEDE-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHA-1AND2-KEYTRIPLEDES-CBC"] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc.Id] = "PBEwithSHA-1and2-keyDESEDE-CBC";
+ Algorithms["PBEWITHSHAAND128BITRC2-CBC"] = "PBEwithSHA-1and128bitRC2-CBC";
+ Algorithms["PBEWITHSHA1AND128BITRC2-CBC"] = "PBEwithSHA-1and128bitRC2-CBC";
+ Algorithms["PBEWITHSHA-1AND128BITRC2-CBC"] = "PBEwithSHA-1and128bitRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbeWithShaAnd128BitRC2Cbc.Id] = "PBEwithSHA-1and128bitRC2-CBC";
+ Algorithms["PBEWITHSHAAND40BITRC2-CBC"] = "PBEwithSHA-1and40bitRC2-CBC";
+ Algorithms["PBEWITHSHA1AND40BITRC2-CBC"] = "PBEwithSHA-1and40bitRC2-CBC";
+ Algorithms["PBEWITHSHA-1AND40BITRC2-CBC"] = "PBEwithSHA-1and40bitRC2-CBC";
+ Algorithms[PkcsObjectIdentifiers.PbewithShaAnd40BitRC2Cbc.Id] = "PBEwithSHA-1and40bitRC2-CBC";
+ Algorithms["PBEWITHSHAAND128BITAES-CBC-BC"] = "PBEwithSHA-1and128bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA1AND128BITAES-CBC-BC"] = "PBEwithSHA-1and128bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA-1AND128BITAES-CBC-BC"] = "PBEwithSHA-1and128bitAES-CBC-BC";
+ Algorithms["PBEWITHSHAAND192BITAES-CBC-BC"] = "PBEwithSHA-1and192bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA1AND192BITAES-CBC-BC"] = "PBEwithSHA-1and192bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA-1AND192BITAES-CBC-BC"] = "PBEwithSHA-1and192bitAES-CBC-BC";
+ Algorithms["PBEWITHSHAAND256BITAES-CBC-BC"] = "PBEwithSHA-1and256bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA1AND256BITAES-CBC-BC"] = "PBEwithSHA-1and256bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA-1AND256BITAES-CBC-BC"] = "PBEwithSHA-1and256bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA256AND128BITAES-CBC-BC"] = "PBEwithSHA-256and128bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA-256AND128BITAES-CBC-BC"] = "PBEwithSHA-256and128bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA256AND192BITAES-CBC-BC"] = "PBEwithSHA-256and192bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA-256AND192BITAES-CBC-BC"] = "PBEwithSHA-256and192bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA256AND256BITAES-CBC-BC"] = "PBEwithSHA-256and256bitAES-CBC-BC";
+ Algorithms["PBEWITHSHA-256AND256BITAES-CBC-BC"] = "PBEwithSHA-256and256bitAES-CBC-BC";
+ Algorithms["PBEWITHSHAANDIDEA"] = "PBEwithSHA-1andIDEA-CBC";
+ Algorithms["PBEWITHSHAANDIDEA-CBC"] = "PBEwithSHA-1andIDEA-CBC";
+ Algorithms["PBEWITHSHAANDTWOFISH"] = "PBEwithSHA-1andTWOFISH-CBC";
+ Algorithms["PBEWITHSHAANDTWOFISH-CBC"] = "PBEwithSHA-1andTWOFISH-CBC";
+ Algorithms["PBEWITHHMACSHA1"] = "PBEwithHmacSHA-1";
+ Algorithms["PBEWITHHMACSHA-1"] = "PBEwithHmacSHA-1";
+ Algorithms[OiwObjectIdentifiers.IdSha1.Id] = "PBEwithHmacSHA-1";
+ Algorithms["PBEWITHHMACSHA224"] = "PBEwithHmacSHA-224";
+ Algorithms["PBEWITHHMACSHA-224"] = "PBEwithHmacSHA-224";
+ Algorithms[NistObjectIdentifiers.IdSha224.Id] = "PBEwithHmacSHA-224";
+ Algorithms["PBEWITHHMACSHA256"] = "PBEwithHmacSHA-256";
+ Algorithms["PBEWITHHMACSHA-256"] = "PBEwithHmacSHA-256";
+ Algorithms[NistObjectIdentifiers.IdSha256.Id] = "PBEwithHmacSHA-256";
+ Algorithms["PBEWITHHMACRIPEMD128"] = "PBEwithHmacRipeMD128";
+ Algorithms[TeleTrusTObjectIdentifiers.RipeMD128.Id] = "PBEwithHmacRipeMD128";
+ Algorithms["PBEWITHHMACRIPEMD160"] = "PBEwithHmacRipeMD160";
+ Algorithms[TeleTrusTObjectIdentifiers.RipeMD160.Id] = "PBEwithHmacRipeMD160";
+ Algorithms["PBEWITHHMACRIPEMD256"] = "PBEwithHmacRipeMD256";
+ Algorithms[TeleTrusTObjectIdentifiers.RipeMD256.Id] = "PBEwithHmacRipeMD256";
+ Algorithms["PBEWITHHMACTIGER"] = "PBEwithHmacTiger";
+
+ Algorithms["PBEWITHMD5AND128BITAES-CBC-OPENSSL"] = "PBEwithMD5and128bitAES-CBC-OpenSSL";
+ Algorithms["PBEWITHMD5AND192BITAES-CBC-OPENSSL"] = "PBEwithMD5and192bitAES-CBC-OpenSSL";
+ Algorithms["PBEWITHMD5AND256BITAES-CBC-OPENSSL"] = "PBEwithMD5and256bitAES-CBC-OpenSSL";
+
+ AlgorithmType["Pkcs5scheme1"] = Pkcs5S1;
+ AlgorithmType["Pkcs5scheme2"] = Pkcs5S2;
+ AlgorithmType["PBEwithMD2andDES-CBC"] = Pkcs5S1;
+ AlgorithmType["PBEwithMD2andRC2-CBC"] = Pkcs5S1;
+ AlgorithmType["PBEwithMD5andDES-CBC"] = Pkcs5S1;
+ AlgorithmType["PBEwithMD5andRC2-CBC"] = Pkcs5S1;
+ AlgorithmType["PBEwithSHA-1andDES-CBC"] = Pkcs5S1;
+ AlgorithmType["PBEwithSHA-1andRC2-CBC"] = Pkcs5S1;
+ AlgorithmType["Pkcs12"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and128bitRC4"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and40bitRC4"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and3-keyDESEDE-CBC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and2-keyDESEDE-CBC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and128bitRC2-CBC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and40bitRC2-CBC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and128bitAES-CBC-BC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and192bitAES-CBC-BC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1and256bitAES-CBC-BC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-256and128bitAES-CBC-BC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-256and192bitAES-CBC-BC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-256and256bitAES-CBC-BC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1andIDEA-CBC"] = Pkcs12;
+ AlgorithmType["PBEwithSHA-1andTWOFISH-CBC"] = Pkcs12;
+ AlgorithmType["PBEwithHmacSHA-1"] = Pkcs12;
+ AlgorithmType["PBEwithHmacSHA-224"] = Pkcs12;
+ AlgorithmType["PBEwithHmacSHA-256"] = Pkcs12;
+ AlgorithmType["PBEwithHmacRipeMD128"] = Pkcs12;
+ AlgorithmType["PBEwithHmacRipeMD160"] = Pkcs12;
+ AlgorithmType["PBEwithHmacRipeMD256"] = Pkcs12;
+ AlgorithmType["PBEwithHmacTiger"] = Pkcs12;
+
+ AlgorithmType["PBEwithMD5and128bitAES-CBC-OpenSSL"] = OpenSsl;
+ AlgorithmType["PBEwithMD5and192bitAES-CBC-OpenSSL"] = OpenSsl;
+ AlgorithmType["PBEwithMD5and256bitAES-CBC-OpenSSL"] = OpenSsl;
+
+ Oids["PBEwithMD2andDES-CBC"] = PkcsObjectIdentifiers.PbeWithMD2AndDesCbc;
+ Oids["PBEwithMD2andRC2-CBC"] = PkcsObjectIdentifiers.PbeWithMD2AndRC2Cbc;
+ Oids["PBEwithMD5andDES-CBC"] = PkcsObjectIdentifiers.PbeWithMD5AndDesCbc;
+ Oids["PBEwithMD5andRC2-CBC"] = PkcsObjectIdentifiers.PbeWithMD5AndRC2Cbc;
+ Oids["PBEwithSHA-1andDES-CBC"] = PkcsObjectIdentifiers.PbeWithSha1AndDesCbc;
+ Oids["PBEwithSHA-1andRC2-CBC"] = PkcsObjectIdentifiers.PbeWithSha1AndRC2Cbc;
+ Oids["PBEwithSHA-1and128bitRC4"] = PkcsObjectIdentifiers.PbeWithShaAnd128BitRC4;
+ Oids["PBEwithSHA-1and40bitRC4"] = PkcsObjectIdentifiers.PbeWithShaAnd40BitRC4;
+ Oids["PBEwithSHA-1and3-keyDESEDE-CBC"] = PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc;
+ Oids["PBEwithSHA-1and2-keyDESEDE-CBC"] = PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc;
+ Oids["PBEwithSHA-1and128bitRC2-CBC"] = PkcsObjectIdentifiers.PbeWithShaAnd128BitRC2Cbc;
+ Oids["PBEwithSHA-1and40bitRC2-CBC"] = PkcsObjectIdentifiers.PbewithShaAnd40BitRC2Cbc;
+ Oids["PBEwithHmacSHA-1"] = OiwObjectIdentifiers.IdSha1;
+ Oids["PBEwithHmacSHA-224"] = NistObjectIdentifiers.IdSha224;
+ Oids["PBEwithHmacSHA-256"] = NistObjectIdentifiers.IdSha256;
+ Oids["PBEwithHmacRipeMD128"] = TeleTrusTObjectIdentifiers.RipeMD128;
+ Oids["PBEwithHmacRipeMD160"] = TeleTrusTObjectIdentifiers.RipeMD160;
+ Oids["PBEwithHmacRipeMD256"] = TeleTrusTObjectIdentifiers.RipeMD256;
+ Oids["Pkcs5scheme2"] = PkcsObjectIdentifiers.IdPbeS2;
}
static PbeParametersGenerator MakePbeGenerator(
@@ -242,60 +238,65 @@ namespace Org.BouncyCastle.Security
/// </summary>
/// <param name="mechanism">A string representation of the encoding.</param>
/// <returns>A DerObjectIdentifier, null if the Oid is not available.</returns>
- public static DerObjectIdentifier GetObjectIdentifier(
- string mechanism)
+ public static DerObjectIdentifier GetObjectIdentifier(string mechanism)
{
- mechanism = (string) algorithms[Platform.ToUpperInvariant(mechanism)];
- if (mechanism != null)
- {
- return (DerObjectIdentifier)oids[mechanism];
- }
- return null;
- }
+ if (!Algorithms.TryGetValue(mechanism, out var algorithm))
+ return null;
- public static ICollection Algorithms
- {
- get { return oids.Keys; }
+ return CollectionUtilities.GetValueOrNull(Oids, algorithm);
}
- public static bool IsPkcs12(
- string algorithm)
+ //public static ICollection Algorithms
+ //{
+ // get { return oids.Keys; }
+ //}
+
+ public static bool IsPkcs12(string algorithm)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ if (!Algorithms.TryGetValue(algorithm, out var mechanism))
+ return false;
+ if (!AlgorithmType.TryGetValue(mechanism, out var algorithmType))
+ return false;
- return mechanism != null && Pkcs12.Equals(algorithmType[mechanism]);
+ return Pkcs12.Equals(algorithmType);
}
- public static bool IsPkcs5Scheme1(
- string algorithm)
+ public static bool IsPkcs5Scheme1(string algorithm)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ if (!Algorithms.TryGetValue(algorithm, out var mechanism))
+ return false;
+ if (!AlgorithmType.TryGetValue(mechanism, out var algorithmType))
+ return false;
- return mechanism != null && Pkcs5S1.Equals(algorithmType[mechanism]);
+ return Pkcs5S1.Equals(algorithmType);
}
- public static bool IsPkcs5Scheme2(
- string algorithm)
+ public static bool IsPkcs5Scheme2(string algorithm)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ if (!Algorithms.TryGetValue(algorithm, out var mechanism))
+ return false;
+ if (!AlgorithmType.TryGetValue(mechanism, out var algorithmType))
+ return false;
- return mechanism != null && Pkcs5S2.Equals(algorithmType[mechanism]);
+ return Pkcs5S2.Equals(algorithmType);
}
- public static bool IsOpenSsl(
- string algorithm)
+ public static bool IsOpenSsl(string algorithm)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ if (!Algorithms.TryGetValue(algorithm, out var mechanism))
+ return false;
+ if (!AlgorithmType.TryGetValue(mechanism, out var algorithmType))
+ return false;
- return mechanism != null && OpenSsl.Equals(algorithmType[mechanism]);
+ return OpenSsl.Equals(algorithmType);
}
- public static bool IsPbeAlgorithm(
- string algorithm)
+ public static bool IsPbeAlgorithm(string algorithm)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ if (!Algorithms.TryGetValue(algorithm, out var mechanism))
+ return false;
- return mechanism != null && algorithmType[mechanism] != null;
+ return AlgorithmType.ContainsKey(mechanism);
}
public static Asn1Encodable GenerateAlgorithmParameters(
@@ -400,7 +401,7 @@ namespace Org.BouncyCastle.Security
bool wrongPkcs12Zero,
Asn1Encodable pbeParameters)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ string mechanism = CollectionUtilities.GetValueOrNull(Algorithms, algorithm);
byte[] keyBytes = null;
byte[] salt = null;
@@ -457,7 +458,7 @@ namespace Org.BouncyCastle.Security
: GeneratorUtilities.GetDefaultKeySize(encOid);
PbeParametersGenerator gen = MakePbeGenerator(
- (string)algorithmType[mechanism], digest, keyBytes, salt, iterationCount);
+ AlgorithmType[mechanism], digest, keyBytes, salt, iterationCount);
parameters = gen.GenerateDerivedParameters(encOid.Id, keyLength);
@@ -477,7 +478,7 @@ namespace Org.BouncyCastle.Security
else if (Platform.StartsWith(mechanism, "PBEwithSHA-1"))
{
PbeParametersGenerator generator = MakePbeGenerator(
- (string) algorithmType[mechanism], new Sha1Digest(), keyBytes, salt, iterationCount);
+ AlgorithmType[mechanism], new Sha1Digest(), keyBytes, salt, iterationCount);
if (mechanism.Equals("PBEwithSHA-1and128bitAES-CBC-BC"))
{
@@ -527,7 +528,7 @@ namespace Org.BouncyCastle.Security
else if (Platform.StartsWith(mechanism, "PBEwithSHA-256"))
{
PbeParametersGenerator generator = MakePbeGenerator(
- (string) algorithmType[mechanism], new Sha256Digest(), keyBytes, salt, iterationCount);
+ AlgorithmType[mechanism], new Sha256Digest(), keyBytes, salt, iterationCount);
if (mechanism.Equals("PBEwithSHA-256and128bitAES-CBC-BC"))
{
@@ -545,7 +546,7 @@ namespace Org.BouncyCastle.Security
else if (Platform.StartsWith(mechanism, "PBEwithMD5"))
{
PbeParametersGenerator generator = MakePbeGenerator(
- (string)algorithmType[mechanism], new MD5Digest(), keyBytes, salt, iterationCount);
+ AlgorithmType[mechanism], new MD5Digest(), keyBytes, salt, iterationCount);
if (mechanism.Equals("PBEwithMD5andDES-CBC"))
{
@@ -571,7 +572,7 @@ namespace Org.BouncyCastle.Security
else if (Platform.StartsWith(mechanism, "PBEwithMD2"))
{
PbeParametersGenerator generator = MakePbeGenerator(
- (string)algorithmType[mechanism], new MD2Digest(), keyBytes, salt, iterationCount);
+ AlgorithmType[mechanism], new MD2Digest(), keyBytes, salt, iterationCount);
if (mechanism.Equals("PBEwithMD2andDES-CBC"))
{
parameters = generator.GenerateDerivedParameters("DES", 64, 64);
@@ -587,7 +588,7 @@ namespace Org.BouncyCastle.Security
IDigest digest = DigestUtilities.GetDigest(digestName);
PbeParametersGenerator generator = MakePbeGenerator(
- (string) algorithmType[mechanism], digest, keyBytes, salt, iterationCount);
+ AlgorithmType[mechanism], digest, keyBytes, salt, iterationCount);
int bitLen = digest.GetDigestSize() * 8;
parameters = generator.GenerateDerivedMacParameters(bitLen);
@@ -619,10 +620,9 @@ namespace Org.BouncyCastle.Security
return CreateEngine(algorithm);
}
- public static object CreateEngine(
- string algorithm)
+ public static object CreateEngine(string algorithm)
{
- string mechanism = (string)algorithms[Platform.ToUpperInvariant(algorithm)];
+ string mechanism = CollectionUtilities.GetValueOrNull(Algorithms, algorithm);
if (Platform.StartsWith(mechanism, "PBEwithHmac"))
{
@@ -665,10 +665,9 @@ namespace Org.BouncyCastle.Security
return null;
}
- public static string GetEncodingName(
- DerObjectIdentifier oid)
+ public static string GetEncodingName(DerObjectIdentifier oid)
{
- return (string) algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(Algorithms, oid.Id);
}
private static ICipherParameters FixDesParity(string mechanism, ICipherParameters parameters)
diff --git a/crypto/src/security/PrivateKeyFactory.cs b/crypto/src/security/PrivateKeyFactory.cs
index 93f8a2260..3c57297fe 100644
--- a/crypto/src/security/PrivateKeyFactory.cs
+++ b/crypto/src/security/PrivateKeyFactory.cs
@@ -1,7 +1,5 @@
using System;
-using System.Collections;
using System.IO;
-using System.Text;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
diff --git a/crypto/src/security/PublicKeyFactory.cs b/crypto/src/security/PublicKeyFactory.cs
index 65baf003c..49ad49dd0 100644
--- a/crypto/src/security/PublicKeyFactory.cs
+++ b/crypto/src/security/PublicKeyFactory.cs
@@ -1,7 +1,5 @@
using System;
-using System.Collections;
using System.IO;
-using System.Text;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.CryptoPro;
@@ -9,7 +7,6 @@ using Org.BouncyCastle.Asn1.EdEC;
using Org.BouncyCastle.Asn1.Oiw;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.Rosstandart;
-using Org.BouncyCastle.Asn1.Sec;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Asn1.X9;
using Org.BouncyCastle.Crypto;
@@ -18,7 +15,6 @@ using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Math.EC;
using Org.BouncyCastle.Utilities;
-using Org.BouncyCastle.Utilities.Encoders;
namespace Org.BouncyCastle.Security
{
diff --git a/crypto/src/security/SecureRandom.cs b/crypto/src/security/SecureRandom.cs
index eb5d69618..e8cac56f5 100644
--- a/crypto/src/security/SecureRandom.cs
+++ b/crypto/src/security/SecureRandom.cs
@@ -62,15 +62,16 @@ namespace Org.BouncyCastle.Security
/// <param name="autoSeed">If true, the instance will be auto-seeded.</param>
public static SecureRandom GetInstance(string algorithm, bool autoSeed)
{
- string upper = Platform.ToUpperInvariant(algorithm);
- if (Platform.EndsWith(upper, "PRNG"))
+ if (algorithm == null)
+ throw new ArgumentNullException(nameof(algorithm));
+
+ if (algorithm.EndsWith("PRNG", StringComparison.OrdinalIgnoreCase))
{
- string digestName = upper.Substring(0, upper.Length - "PRNG".Length);
+ string digestName = algorithm.Substring(0, algorithm.Length - "PRNG".Length);
+
DigestRandomGenerator prng = CreatePrng(digestName, autoSeed);
if (prng != null)
- {
return new SecureRandom(prng);
- }
}
throw new ArgumentException("Unrecognised PRNG algorithm: " + algorithm, "algorithm");
diff --git a/crypto/src/security/SignerUtilities.cs b/crypto/src/security/SignerUtilities.cs
index b3a49dea8..e42e217cc 100644
--- a/crypto/src/security/SignerUtilities.cs
+++ b/crypto/src/security/SignerUtilities.cs
@@ -1,6 +1,5 @@
using System;
-using System.Collections;
-using System.IO;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Bsi;
@@ -14,439 +13,437 @@ using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.TeleTrust;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Asn1.X9;
-using Org.BouncyCastle.Security;
using Org.BouncyCastle.Crypto.Digests;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Signers;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <summary>
/// Signer Utility class contains methods that can not be specifically grouped into other classes.
/// </summary>
- public sealed class SignerUtilities
+ public static class SignerUtilities
{
- private SignerUtilities()
- {
- }
-
- internal static readonly IDictionary algorithms = Platform.CreateHashtable();
- internal static readonly IDictionary oids = Platform.CreateHashtable();
+ internal static readonly IDictionary<string, string> AlgorithmMap =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ internal static readonly IDictionary<string, DerObjectIdentifier> Oids =
+ new Dictionary<string, DerObjectIdentifier>(StringComparer.OrdinalIgnoreCase);
static SignerUtilities()
{
- algorithms["MD2WITHRSA"] = "MD2withRSA";
- algorithms["MD2WITHRSAENCRYPTION"] = "MD2withRSA";
- algorithms[PkcsObjectIdentifiers.MD2WithRsaEncryption.Id] = "MD2withRSA";
-
- algorithms["MD4WITHRSA"] = "MD4withRSA";
- algorithms["MD4WITHRSAENCRYPTION"] = "MD4withRSA";
- algorithms[PkcsObjectIdentifiers.MD4WithRsaEncryption.Id] = "MD4withRSA";
- algorithms[OiwObjectIdentifiers.MD4WithRsa.Id] = "MD4withRSA";
- algorithms[OiwObjectIdentifiers.MD4WithRsaEncryption.Id] = "MD4withRSA";
-
- algorithms["MD5WITHRSA"] = "MD5withRSA";
- algorithms["MD5WITHRSAENCRYPTION"] = "MD5withRSA";
- algorithms[PkcsObjectIdentifiers.MD5WithRsaEncryption.Id] = "MD5withRSA";
- algorithms[OiwObjectIdentifiers.MD5WithRsa.Id] = "MD5withRSA";
-
- algorithms["SHA1WITHRSA"] = "SHA-1withRSA";
- algorithms["SHA-1WITHRSA"] = "SHA-1withRSA";
- algorithms["SHA1WITHRSAENCRYPTION"] = "SHA-1withRSA";
- algorithms["SHA-1WITHRSAENCRYPTION"] = "SHA-1withRSA";
- algorithms[PkcsObjectIdentifiers.Sha1WithRsaEncryption.Id] = "SHA-1withRSA";
- algorithms[OiwObjectIdentifiers.Sha1WithRsa.Id] = "SHA-1withRSA";
-
- algorithms["SHA224WITHRSA"] = "SHA-224withRSA";
- algorithms["SHA-224WITHRSA"] = "SHA-224withRSA";
- algorithms["SHA224WITHRSAENCRYPTION"] = "SHA-224withRSA";
- algorithms["SHA-224WITHRSAENCRYPTION"] = "SHA-224withRSA";
- algorithms[PkcsObjectIdentifiers.Sha224WithRsaEncryption.Id] = "SHA-224withRSA";
-
- algorithms["SHA256WITHRSA"] = "SHA-256withRSA";
- algorithms["SHA-256WITHRSA"] = "SHA-256withRSA";
- algorithms["SHA256WITHRSAENCRYPTION"] = "SHA-256withRSA";
- algorithms["SHA-256WITHRSAENCRYPTION"] = "SHA-256withRSA";
- algorithms[PkcsObjectIdentifiers.Sha256WithRsaEncryption.Id] = "SHA-256withRSA";
-
- algorithms["SHA384WITHRSA"] = "SHA-384withRSA";
- algorithms["SHA-384WITHRSA"] = "SHA-384withRSA";
- algorithms["SHA384WITHRSAENCRYPTION"] = "SHA-384withRSA";
- algorithms["SHA-384WITHRSAENCRYPTION"] = "SHA-384withRSA";
- algorithms[PkcsObjectIdentifiers.Sha384WithRsaEncryption.Id] = "SHA-384withRSA";
-
- algorithms["SHA512WITHRSA"] = "SHA-512withRSA";
- algorithms["SHA-512WITHRSA"] = "SHA-512withRSA";
- algorithms["SHA512WITHRSAENCRYPTION"] = "SHA-512withRSA";
- algorithms["SHA-512WITHRSAENCRYPTION"] = "SHA-512withRSA";
- algorithms[PkcsObjectIdentifiers.Sha512WithRsaEncryption.Id] = "SHA-512withRSA";
-
- algorithms["SHA512(224)WITHRSA"] = "SHA-512(224)withRSA";
- algorithms["SHA-512(224)WITHRSA"] = "SHA-512(224)withRSA";
- algorithms["SHA512(224)WITHRSAENCRYPTION"] = "SHA-512(224)withRSA";
- algorithms["SHA-512(224)WITHRSAENCRYPTION"] = "SHA-512(224)withRSA";
- algorithms[PkcsObjectIdentifiers.Sha512_224WithRSAEncryption.Id] = "SHA-512(224)withRSA";
-
- algorithms["SHA512(256)WITHRSA"] = "SHA-512(256)withRSA";
- algorithms["SHA-512(256)WITHRSA"] = "SHA-512(256)withRSA";
- algorithms["SHA512(256)WITHRSAENCRYPTION"] = "SHA-512(256)withRSA";
- algorithms["SHA-512(256)WITHRSAENCRYPTION"] = "SHA-512(256)withRSA";
- algorithms[PkcsObjectIdentifiers.Sha512_256WithRSAEncryption.Id] = "SHA-512(256)withRSA";
-
- algorithms["SHA3-224WITHRSA"] = "SHA3-224withRSA";
- algorithms["SHA3-224WITHRSAENCRYPTION"] = "SHA3-224withRSA";
- algorithms[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224.Id] = "SHA3-224withRSA";
- algorithms["SHA3-256WITHRSA"] = "SHA3-256withRSA";
- algorithms["SHA3-256WITHRSAENCRYPTION"] = "SHA3-256withRSA";
- algorithms[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256.Id] = "SHA3-256withRSA";
- algorithms["SHA3-384WITHRSA"] = "SHA3-384withRSA";
- algorithms["SHA3-384WITHRSAENCRYPTION"] = "SHA3-384withRSA";
- algorithms[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384.Id] = "SHA3-384withRSA";
- algorithms["SHA3-512WITHRSA"] = "SHA3-512withRSA";
- algorithms["SHA3-512WITHRSAENCRYPTION"] = "SHA3-512withRSA";
- algorithms[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512.Id] = "SHA3-512withRSA";
-
- algorithms["PSSWITHRSA"] = "PSSwithRSA";
- algorithms["RSASSA-PSS"] = "PSSwithRSA";
- algorithms[PkcsObjectIdentifiers.IdRsassaPss.Id] = "PSSwithRSA";
- algorithms["RSAPSS"] = "PSSwithRSA";
-
- algorithms["SHA1WITHRSAANDMGF1"] = "SHA-1withRSAandMGF1";
- algorithms["SHA-1WITHRSAANDMGF1"] = "SHA-1withRSAandMGF1";
- algorithms["SHA1WITHRSA/PSS"] = "SHA-1withRSAandMGF1";
- algorithms["SHA-1WITHRSA/PSS"] = "SHA-1withRSAandMGF1";
- algorithms["SHA1WITHRSASSA-PSS"] = "SHA-1withRSAandMGF1";
- algorithms["SHA-1WITHRSASSA-PSS"] = "SHA-1withRSAandMGF1";
-
- algorithms["SHA224WITHRSAANDMGF1"] = "SHA-224withRSAandMGF1";
- algorithms["SHA-224WITHRSAANDMGF1"] = "SHA-224withRSAandMGF1";
- algorithms["SHA224WITHRSA/PSS"] = "SHA-224withRSAandMGF1";
- algorithms["SHA-224WITHRSA/PSS"] = "SHA-224withRSAandMGF1";
- algorithms["SHA224WITHRSASSA-PSS"] = "SHA-224withRSAandMGF1";
- algorithms["SHA-224WITHRSASSA-PSS"] = "SHA-224withRSAandMGF1";
-
- algorithms["SHA256WITHRSAANDMGF1"] = "SHA-256withRSAandMGF1";
- algorithms["SHA-256WITHRSAANDMGF1"] = "SHA-256withRSAandMGF1";
- algorithms["SHA256WITHRSA/PSS"] = "SHA-256withRSAandMGF1";
- algorithms["SHA-256WITHRSA/PSS"] = "SHA-256withRSAandMGF1";
- algorithms["SHA256WITHRSASSA-PSS"] = "SHA-256withRSAandMGF1";
- algorithms["SHA-256WITHRSASSA-PSS"] = "SHA-256withRSAandMGF1";
-
- algorithms["SHA384WITHRSAANDMGF1"] = "SHA-384withRSAandMGF1";
- algorithms["SHA-384WITHRSAANDMGF1"] = "SHA-384withRSAandMGF1";
- algorithms["SHA384WITHRSA/PSS"] = "SHA-384withRSAandMGF1";
- algorithms["SHA-384WITHRSA/PSS"] = "SHA-384withRSAandMGF1";
- algorithms["SHA384WITHRSASSA-PSS"] = "SHA-384withRSAandMGF1";
- algorithms["SHA-384WITHRSASSA-PSS"] = "SHA-384withRSAandMGF1";
-
- algorithms["SHA512WITHRSAANDMGF1"] = "SHA-512withRSAandMGF1";
- algorithms["SHA-512WITHRSAANDMGF1"] = "SHA-512withRSAandMGF1";
- algorithms["SHA512WITHRSA/PSS"] = "SHA-512withRSAandMGF1";
- algorithms["SHA-512WITHRSA/PSS"] = "SHA-512withRSAandMGF1";
- algorithms["SHA512WITHRSASSA-PSS"] = "SHA-512withRSAandMGF1";
- algorithms["SHA-512WITHRSASSA-PSS"] = "SHA-512withRSAandMGF1";
-
- algorithms["RIPEMD128WITHRSA"] = "RIPEMD128withRSA";
- algorithms["RIPEMD128WITHRSAENCRYPTION"] = "RIPEMD128withRSA";
- algorithms[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128.Id] = "RIPEMD128withRSA";
-
- algorithms["RIPEMD160WITHRSA"] = "RIPEMD160withRSA";
- algorithms["RIPEMD160WITHRSAENCRYPTION"] = "RIPEMD160withRSA";
- algorithms[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160.Id] = "RIPEMD160withRSA";
-
- algorithms["RIPEMD256WITHRSA"] = "RIPEMD256withRSA";
- algorithms["RIPEMD256WITHRSAENCRYPTION"] = "RIPEMD256withRSA";
- algorithms[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256.Id] = "RIPEMD256withRSA";
-
- algorithms["NONEWITHRSA"] = "RSA";
- algorithms["RSAWITHNONE"] = "RSA";
- algorithms["RAWRSA"] = "RSA";
-
- algorithms["RAWRSAPSS"] = "RAWRSASSA-PSS";
- algorithms["NONEWITHRSAPSS"] = "RAWRSASSA-PSS";
- algorithms["NONEWITHRSASSA-PSS"] = "RAWRSASSA-PSS";
-
- algorithms["NONEWITHDSA"] = "NONEwithDSA";
- algorithms["DSAWITHNONE"] = "NONEwithDSA";
- algorithms["RAWDSA"] = "NONEwithDSA";
-
- algorithms["DSA"] = "SHA-1withDSA";
- algorithms["DSAWITHSHA1"] = "SHA-1withDSA";
- algorithms["DSAWITHSHA-1"] = "SHA-1withDSA";
- algorithms["SHA/DSA"] = "SHA-1withDSA";
- algorithms["SHA1/DSA"] = "SHA-1withDSA";
- algorithms["SHA-1/DSA"] = "SHA-1withDSA";
- algorithms["SHA1WITHDSA"] = "SHA-1withDSA";
- algorithms["SHA-1WITHDSA"] = "SHA-1withDSA";
- algorithms[X9ObjectIdentifiers.IdDsaWithSha1.Id] = "SHA-1withDSA";
- algorithms[OiwObjectIdentifiers.DsaWithSha1.Id] = "SHA-1withDSA";
-
- algorithms["DSAWITHSHA224"] = "SHA-224withDSA";
- algorithms["DSAWITHSHA-224"] = "SHA-224withDSA";
- algorithms["SHA224/DSA"] = "SHA-224withDSA";
- algorithms["SHA-224/DSA"] = "SHA-224withDSA";
- algorithms["SHA224WITHDSA"] = "SHA-224withDSA";
- algorithms["SHA-224WITHDSA"] = "SHA-224withDSA";
- algorithms[NistObjectIdentifiers.DsaWithSha224.Id] = "SHA-224withDSA";
-
- algorithms["DSAWITHSHA256"] = "SHA-256withDSA";
- algorithms["DSAWITHSHA-256"] = "SHA-256withDSA";
- algorithms["SHA256/DSA"] = "SHA-256withDSA";
- algorithms["SHA-256/DSA"] = "SHA-256withDSA";
- algorithms["SHA256WITHDSA"] = "SHA-256withDSA";
- algorithms["SHA-256WITHDSA"] = "SHA-256withDSA";
- algorithms[NistObjectIdentifiers.DsaWithSha256.Id] = "SHA-256withDSA";
-
- algorithms["DSAWITHSHA384"] = "SHA-384withDSA";
- algorithms["DSAWITHSHA-384"] = "SHA-384withDSA";
- algorithms["SHA384/DSA"] = "SHA-384withDSA";
- algorithms["SHA-384/DSA"] = "SHA-384withDSA";
- algorithms["SHA384WITHDSA"] = "SHA-384withDSA";
- algorithms["SHA-384WITHDSA"] = "SHA-384withDSA";
- algorithms[NistObjectIdentifiers.DsaWithSha384.Id] = "SHA-384withDSA";
-
- algorithms["DSAWITHSHA512"] = "SHA-512withDSA";
- algorithms["DSAWITHSHA-512"] = "SHA-512withDSA";
- algorithms["SHA512/DSA"] = "SHA-512withDSA";
- algorithms["SHA-512/DSA"] = "SHA-512withDSA";
- algorithms["SHA512WITHDSA"] = "SHA-512withDSA";
- algorithms["SHA-512WITHDSA"] = "SHA-512withDSA";
- algorithms[NistObjectIdentifiers.DsaWithSha512.Id] = "SHA-512withDSA";
-
- algorithms["NONEWITHECDSA"] = "NONEwithECDSA";
- algorithms["ECDSAWITHNONE"] = "NONEwithECDSA";
-
- algorithms["ECDSA"] = "SHA-1withECDSA";
- algorithms["SHA1/ECDSA"] = "SHA-1withECDSA";
- algorithms["SHA-1/ECDSA"] = "SHA-1withECDSA";
- algorithms["ECDSAWITHSHA1"] = "SHA-1withECDSA";
- algorithms["ECDSAWITHSHA-1"] = "SHA-1withECDSA";
- algorithms["SHA1WITHECDSA"] = "SHA-1withECDSA";
- algorithms["SHA-1WITHECDSA"] = "SHA-1withECDSA";
- algorithms[X9ObjectIdentifiers.ECDsaWithSha1.Id] = "SHA-1withECDSA";
- algorithms[TeleTrusTObjectIdentifiers.ECSignWithSha1.Id] = "SHA-1withECDSA";
-
- algorithms["SHA224/ECDSA"] = "SHA-224withECDSA";
- algorithms["SHA-224/ECDSA"] = "SHA-224withECDSA";
- algorithms["ECDSAWITHSHA224"] = "SHA-224withECDSA";
- algorithms["ECDSAWITHSHA-224"] = "SHA-224withECDSA";
- algorithms["SHA224WITHECDSA"] = "SHA-224withECDSA";
- algorithms["SHA-224WITHECDSA"] = "SHA-224withECDSA";
- algorithms[X9ObjectIdentifiers.ECDsaWithSha224.Id] = "SHA-224withECDSA";
-
- algorithms["SHA256/ECDSA"] = "SHA-256withECDSA";
- algorithms["SHA-256/ECDSA"] = "SHA-256withECDSA";
- algorithms["ECDSAWITHSHA256"] = "SHA-256withECDSA";
- algorithms["ECDSAWITHSHA-256"] = "SHA-256withECDSA";
- algorithms["SHA256WITHECDSA"] = "SHA-256withECDSA";
- algorithms["SHA-256WITHECDSA"] = "SHA-256withECDSA";
- algorithms[X9ObjectIdentifiers.ECDsaWithSha256.Id] = "SHA-256withECDSA";
-
- algorithms["SHA384/ECDSA"] = "SHA-384withECDSA";
- algorithms["SHA-384/ECDSA"] = "SHA-384withECDSA";
- algorithms["ECDSAWITHSHA384"] = "SHA-384withECDSA";
- algorithms["ECDSAWITHSHA-384"] = "SHA-384withECDSA";
- algorithms["SHA384WITHECDSA"] = "SHA-384withECDSA";
- algorithms["SHA-384WITHECDSA"] = "SHA-384withECDSA";
- algorithms[X9ObjectIdentifiers.ECDsaWithSha384.Id] = "SHA-384withECDSA";
-
- algorithms["SHA512/ECDSA"] = "SHA-512withECDSA";
- algorithms["SHA-512/ECDSA"] = "SHA-512withECDSA";
- algorithms["ECDSAWITHSHA512"] = "SHA-512withECDSA";
- algorithms["ECDSAWITHSHA-512"] = "SHA-512withECDSA";
- algorithms["SHA512WITHECDSA"] = "SHA-512withECDSA";
- algorithms["SHA-512WITHECDSA"] = "SHA-512withECDSA";
- algorithms[X9ObjectIdentifiers.ECDsaWithSha512.Id] = "SHA-512withECDSA";
-
- algorithms["RIPEMD160/ECDSA"] = "RIPEMD160withECDSA";
- algorithms["ECDSAWITHRIPEMD160"] = "RIPEMD160withECDSA";
- algorithms["RIPEMD160WITHECDSA"] = "RIPEMD160withECDSA";
- algorithms[TeleTrusTObjectIdentifiers.ECSignWithRipeMD160.Id] = "RIPEMD160withECDSA";
-
- algorithms["NONEWITHCVC-ECDSA"] = "NONEwithCVC-ECDSA";
- algorithms["CVC-ECDSAWITHNONE"] = "NONEwithCVC-ECDSA";
-
- algorithms["SHA1/CVC-ECDSA"] = "SHA-1withCVC-ECDSA";
- algorithms["SHA-1/CVC-ECDSA"] = "SHA-1withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA1"] = "SHA-1withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA-1"] = "SHA-1withCVC-ECDSA";
- algorithms["SHA1WITHCVC-ECDSA"] = "SHA-1withCVC-ECDSA";
- algorithms["SHA-1WITHCVC-ECDSA"] = "SHA-1withCVC-ECDSA";
- algorithms[EacObjectIdentifiers.id_TA_ECDSA_SHA_1.Id] = "SHA-1withCVC-ECDSA";
-
- algorithms["SHA224/CVC-ECDSA"] = "SHA-224withCVC-ECDSA";
- algorithms["SHA-224/CVC-ECDSA"] = "SHA-224withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA224"] = "SHA-224withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA-224"] = "SHA-224withCVC-ECDSA";
- algorithms["SHA224WITHCVC-ECDSA"] = "SHA-224withCVC-ECDSA";
- algorithms["SHA-224WITHCVC-ECDSA"] = "SHA-224withCVC-ECDSA";
- algorithms[EacObjectIdentifiers.id_TA_ECDSA_SHA_224.Id] = "SHA-224withCVC-ECDSA";
-
- algorithms["SHA256/CVC-ECDSA"] = "SHA-256withCVC-ECDSA";
- algorithms["SHA-256/CVC-ECDSA"] = "SHA-256withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA256"] = "SHA-256withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA-256"] = "SHA-256withCVC-ECDSA";
- algorithms["SHA256WITHCVC-ECDSA"] = "SHA-256withCVC-ECDSA";
- algorithms["SHA-256WITHCVC-ECDSA"] = "SHA-256withCVC-ECDSA";
- algorithms[EacObjectIdentifiers.id_TA_ECDSA_SHA_256.Id] = "SHA-256withCVC-ECDSA";
-
- algorithms["SHA384/CVC-ECDSA"] = "SHA-384withCVC-ECDSA";
- algorithms["SHA-384/CVC-ECDSA"] = "SHA-384withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA384"] = "SHA-384withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA-384"] = "SHA-384withCVC-ECDSA";
- algorithms["SHA384WITHCVC-ECDSA"] = "SHA-384withCVC-ECDSA";
- algorithms["SHA-384WITHCVC-ECDSA"] = "SHA-384withCVC-ECDSA";
- algorithms[EacObjectIdentifiers.id_TA_ECDSA_SHA_384.Id] = "SHA-384withCVC-ECDSA";
-
- algorithms["SHA512/CVC-ECDSA"] = "SHA-512withCVC-ECDSA";
- algorithms["SHA-512/CVC-ECDSA"] = "SHA-512withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA512"] = "SHA-512withCVC-ECDSA";
- algorithms["CVC-ECDSAWITHSHA-512"] = "SHA-512withCVC-ECDSA";
- algorithms["SHA512WITHCVC-ECDSA"] = "SHA-512withCVC-ECDSA";
- algorithms["SHA-512WITHCVC-ECDSA"] = "SHA-512withCVC-ECDSA";
- algorithms[EacObjectIdentifiers.id_TA_ECDSA_SHA_512.Id] = "SHA-512withCVC-ECDSA";
-
- algorithms["NONEWITHPLAIN-ECDSA"] = "NONEwithPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHNONE"] = "NONEwithPLAIN-ECDSA";
-
- algorithms["SHA1/PLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
- algorithms["SHA-1/PLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA1"] = "SHA-1withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA-1"] = "SHA-1withPLAIN-ECDSA";
- algorithms["SHA1WITHPLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
- algorithms["SHA-1WITHPLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
- algorithms[BsiObjectIdentifiers.ecdsa_plain_SHA1.Id] = "SHA-1withPLAIN-ECDSA";
-
- algorithms["SHA224/PLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
- algorithms["SHA-224/PLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA224"] = "SHA-224withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA-224"] = "SHA-224withPLAIN-ECDSA";
- algorithms["SHA224WITHPLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
- algorithms["SHA-224WITHPLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
- algorithms[BsiObjectIdentifiers.ecdsa_plain_SHA224.Id] = "SHA-224withPLAIN-ECDSA";
-
- algorithms["SHA256/PLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
- algorithms["SHA-256/PLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA256"] = "SHA-256withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA-256"] = "SHA-256withPLAIN-ECDSA";
- algorithms["SHA256WITHPLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
- algorithms["SHA-256WITHPLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
- algorithms[BsiObjectIdentifiers.ecdsa_plain_SHA256.Id] = "SHA-256withPLAIN-ECDSA";
-
- algorithms["SHA384/PLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
- algorithms["SHA-384/PLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA384"] = "SHA-384withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA-384"] = "SHA-384withPLAIN-ECDSA";
- algorithms["SHA384WITHPLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
- algorithms["SHA-384WITHPLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
- algorithms[BsiObjectIdentifiers.ecdsa_plain_SHA384.Id] = "SHA-384withPLAIN-ECDSA";
-
- algorithms["SHA512/PLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
- algorithms["SHA-512/PLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA512"] = "SHA-512withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHSHA-512"] = "SHA-512withPLAIN-ECDSA";
- algorithms["SHA512WITHPLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
- algorithms["SHA-512WITHPLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
- algorithms[BsiObjectIdentifiers.ecdsa_plain_SHA512.Id] = "SHA-512withPLAIN-ECDSA";
-
- algorithms["RIPEMD160/PLAIN-ECDSA"] = "RIPEMD160withPLAIN-ECDSA";
- algorithms["PLAIN-ECDSAWITHRIPEMD160"] = "RIPEMD160withPLAIN-ECDSA";
- algorithms["RIPEMD160WITHPLAIN-ECDSA"] = "RIPEMD160withPLAIN-ECDSA";
- algorithms[BsiObjectIdentifiers.ecdsa_plain_RIPEMD160.Id] = "RIPEMD160withPLAIN-ECDSA";
-
- algorithms["SHA1WITHECNR"] = "SHA-1withECNR";
- algorithms["SHA-1WITHECNR"] = "SHA-1withECNR";
- algorithms["SHA224WITHECNR"] = "SHA-224withECNR";
- algorithms["SHA-224WITHECNR"] = "SHA-224withECNR";
- algorithms["SHA256WITHECNR"] = "SHA-256withECNR";
- algorithms["SHA-256WITHECNR"] = "SHA-256withECNR";
- algorithms["SHA384WITHECNR"] = "SHA-384withECNR";
- algorithms["SHA-384WITHECNR"] = "SHA-384withECNR";
- algorithms["SHA512WITHECNR"] = "SHA-512withECNR";
- algorithms["SHA-512WITHECNR"] = "SHA-512withECNR";
-
- algorithms["GOST-3410"] = "GOST3410";
- algorithms["GOST-3410-94"] = "GOST3410";
- algorithms["GOST3411WITHGOST3410"] = "GOST3410";
- algorithms[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94.Id] = "GOST3410";
-
- algorithms["ECGOST-3410"] = "ECGOST3410";
- algorithms["ECGOST-3410-2001"] = "ECGOST3410";
- algorithms["GOST3411WITHECGOST3410"] = "ECGOST3410";
- algorithms[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001.Id] = "ECGOST3410";
-
- algorithms["ED25519"] = "Ed25519";
- algorithms[EdECObjectIdentifiers.id_Ed25519.Id] = "Ed25519";
- algorithms["ED25519CTX"] = "Ed25519ctx";
- algorithms["ED25519PH"] = "Ed25519ph";
- algorithms["ED448"] = "Ed448";
- algorithms[EdECObjectIdentifiers.id_Ed448.Id] = "Ed448";
- algorithms["ED448PH"] = "Ed448ph";
-
- algorithms["SHA256WITHSM2"] = "SHA256withSM2";
- algorithms[GMObjectIdentifiers.sm2sign_with_sha256.Id] = "SHA256withSM2";
- algorithms["SM3WITHSM2"] = "SM3withSM2";
- algorithms[GMObjectIdentifiers.sm2sign_with_sm3.Id] = "SM3withSM2";
-
- oids["MD2withRSA"] = PkcsObjectIdentifiers.MD2WithRsaEncryption;
- oids["MD4withRSA"] = PkcsObjectIdentifiers.MD4WithRsaEncryption;
- oids["MD5withRSA"] = PkcsObjectIdentifiers.MD5WithRsaEncryption;
-
- oids["SHA-1withRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
- oids["SHA-224withRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption;
- oids["SHA-256withRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption;
- oids["SHA-384withRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption;
- oids["SHA-512withRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption;
- oids["SHA-512(224)withRSA"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption;
- oids["SHA-512(256)withRSA"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption;
- oids["SHA3-224withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224;
- oids["SHA3-256withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256;
- oids["SHA3-384withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384;
- oids["SHA3-512withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512;
-
- oids["PSSwithRSA"] = PkcsObjectIdentifiers.IdRsassaPss;
- oids["SHA-1withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- oids["SHA-224withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- oids["SHA-256withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- oids["SHA-384withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
- oids["SHA-512withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
-
- oids["RIPEMD128withRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128;
- oids["RIPEMD160withRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160;
- oids["RIPEMD256withRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256;
-
- oids["SHA-1withDSA"] = X9ObjectIdentifiers.IdDsaWithSha1;
-
- oids["SHA-1withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha1;
- oids["SHA-224withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224;
- oids["SHA-256withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha256;
- oids["SHA-384withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha384;
- oids["SHA-512withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha512;
- oids["RIPEMD160withECDSA"] = TeleTrusTObjectIdentifiers.ECSignWithRipeMD160;
-
- oids["SHA-1withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_1;
- oids["SHA-224withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_224;
- oids["SHA-256withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_256;
- oids["SHA-384withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_384;
- oids["SHA-512withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_512;
-
- oids["SHA-1withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA1;
- oids["SHA-224withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA224;
- oids["SHA-256withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA256;
- oids["SHA-384withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA384;
- oids["SHA-512withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA512;
- oids["RIPEMD160withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_RIPEMD160;
-
- oids["GOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94;
- oids["ECGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
-
- oids["Ed25519"] = EdECObjectIdentifiers.id_Ed25519;
- oids["Ed448"] = EdECObjectIdentifiers.id_Ed448;
-
- oids["SHA256withSM2"] = GMObjectIdentifiers.sm2sign_with_sha256;
- oids["SM3withSM2"] = GMObjectIdentifiers.sm2sign_with_sm3;
+ AlgorithmMap["MD2WITHRSA"] = "MD2withRSA";
+ AlgorithmMap["MD2WITHRSAENCRYPTION"] = "MD2withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.MD2WithRsaEncryption.Id] = "MD2withRSA";
+
+ AlgorithmMap["MD4WITHRSA"] = "MD4withRSA";
+ AlgorithmMap["MD4WITHRSAENCRYPTION"] = "MD4withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.MD4WithRsaEncryption.Id] = "MD4withRSA";
+ AlgorithmMap[OiwObjectIdentifiers.MD4WithRsa.Id] = "MD4withRSA";
+ AlgorithmMap[OiwObjectIdentifiers.MD4WithRsaEncryption.Id] = "MD4withRSA";
+
+ AlgorithmMap["MD5WITHRSA"] = "MD5withRSA";
+ AlgorithmMap["MD5WITHRSAENCRYPTION"] = "MD5withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.MD5WithRsaEncryption.Id] = "MD5withRSA";
+ AlgorithmMap[OiwObjectIdentifiers.MD5WithRsa.Id] = "MD5withRSA";
+
+ AlgorithmMap["SHA1WITHRSA"] = "SHA-1withRSA";
+ AlgorithmMap["SHA-1WITHRSA"] = "SHA-1withRSA";
+ AlgorithmMap["SHA1WITHRSAENCRYPTION"] = "SHA-1withRSA";
+ AlgorithmMap["SHA-1WITHRSAENCRYPTION"] = "SHA-1withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha1WithRsaEncryption.Id] = "SHA-1withRSA";
+ AlgorithmMap[OiwObjectIdentifiers.Sha1WithRsa.Id] = "SHA-1withRSA";
+
+ AlgorithmMap["SHA224WITHRSA"] = "SHA-224withRSA";
+ AlgorithmMap["SHA-224WITHRSA"] = "SHA-224withRSA";
+ AlgorithmMap["SHA224WITHRSAENCRYPTION"] = "SHA-224withRSA";
+ AlgorithmMap["SHA-224WITHRSAENCRYPTION"] = "SHA-224withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha224WithRsaEncryption.Id] = "SHA-224withRSA";
+
+ AlgorithmMap["SHA256WITHRSA"] = "SHA-256withRSA";
+ AlgorithmMap["SHA-256WITHRSA"] = "SHA-256withRSA";
+ AlgorithmMap["SHA256WITHRSAENCRYPTION"] = "SHA-256withRSA";
+ AlgorithmMap["SHA-256WITHRSAENCRYPTION"] = "SHA-256withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha256WithRsaEncryption.Id] = "SHA-256withRSA";
+
+ AlgorithmMap["SHA384WITHRSA"] = "SHA-384withRSA";
+ AlgorithmMap["SHA-384WITHRSA"] = "SHA-384withRSA";
+ AlgorithmMap["SHA384WITHRSAENCRYPTION"] = "SHA-384withRSA";
+ AlgorithmMap["SHA-384WITHRSAENCRYPTION"] = "SHA-384withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha384WithRsaEncryption.Id] = "SHA-384withRSA";
+
+ AlgorithmMap["SHA512WITHRSA"] = "SHA-512withRSA";
+ AlgorithmMap["SHA-512WITHRSA"] = "SHA-512withRSA";
+ AlgorithmMap["SHA512WITHRSAENCRYPTION"] = "SHA-512withRSA";
+ AlgorithmMap["SHA-512WITHRSAENCRYPTION"] = "SHA-512withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha512WithRsaEncryption.Id] = "SHA-512withRSA";
+
+ AlgorithmMap["SHA512(224)WITHRSA"] = "SHA-512(224)withRSA";
+ AlgorithmMap["SHA-512(224)WITHRSA"] = "SHA-512(224)withRSA";
+ AlgorithmMap["SHA512(224)WITHRSAENCRYPTION"] = "SHA-512(224)withRSA";
+ AlgorithmMap["SHA-512(224)WITHRSAENCRYPTION"] = "SHA-512(224)withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha512_224WithRSAEncryption.Id] = "SHA-512(224)withRSA";
+
+ AlgorithmMap["SHA512(256)WITHRSA"] = "SHA-512(256)withRSA";
+ AlgorithmMap["SHA-512(256)WITHRSA"] = "SHA-512(256)withRSA";
+ AlgorithmMap["SHA512(256)WITHRSAENCRYPTION"] = "SHA-512(256)withRSA";
+ AlgorithmMap["SHA-512(256)WITHRSAENCRYPTION"] = "SHA-512(256)withRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.Sha512_256WithRSAEncryption.Id] = "SHA-512(256)withRSA";
+
+ AlgorithmMap["SHA3-224WITHRSA"] = "SHA3-224withRSA";
+ AlgorithmMap["SHA3-224WITHRSAENCRYPTION"] = "SHA3-224withRSA";
+ AlgorithmMap[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224.Id] = "SHA3-224withRSA";
+ AlgorithmMap["SHA3-256WITHRSA"] = "SHA3-256withRSA";
+ AlgorithmMap["SHA3-256WITHRSAENCRYPTION"] = "SHA3-256withRSA";
+ AlgorithmMap[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256.Id] = "SHA3-256withRSA";
+ AlgorithmMap["SHA3-384WITHRSA"] = "SHA3-384withRSA";
+ AlgorithmMap["SHA3-384WITHRSAENCRYPTION"] = "SHA3-384withRSA";
+ AlgorithmMap[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384.Id] = "SHA3-384withRSA";
+ AlgorithmMap["SHA3-512WITHRSA"] = "SHA3-512withRSA";
+ AlgorithmMap["SHA3-512WITHRSAENCRYPTION"] = "SHA3-512withRSA";
+ AlgorithmMap[NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512.Id] = "SHA3-512withRSA";
+
+ AlgorithmMap["PSSWITHRSA"] = "PSSwithRSA";
+ AlgorithmMap["RSASSA-PSS"] = "PSSwithRSA";
+ AlgorithmMap[PkcsObjectIdentifiers.IdRsassaPss.Id] = "PSSwithRSA";
+ AlgorithmMap["RSAPSS"] = "PSSwithRSA";
+
+ AlgorithmMap["SHA1WITHRSAANDMGF1"] = "SHA-1withRSAandMGF1";
+ AlgorithmMap["SHA-1WITHRSAANDMGF1"] = "SHA-1withRSAandMGF1";
+ AlgorithmMap["SHA1WITHRSA/PSS"] = "SHA-1withRSAandMGF1";
+ AlgorithmMap["SHA-1WITHRSA/PSS"] = "SHA-1withRSAandMGF1";
+ AlgorithmMap["SHA1WITHRSASSA-PSS"] = "SHA-1withRSAandMGF1";
+ AlgorithmMap["SHA-1WITHRSASSA-PSS"] = "SHA-1withRSAandMGF1";
+
+ AlgorithmMap["SHA224WITHRSAANDMGF1"] = "SHA-224withRSAandMGF1";
+ AlgorithmMap["SHA-224WITHRSAANDMGF1"] = "SHA-224withRSAandMGF1";
+ AlgorithmMap["SHA224WITHRSA/PSS"] = "SHA-224withRSAandMGF1";
+ AlgorithmMap["SHA-224WITHRSA/PSS"] = "SHA-224withRSAandMGF1";
+ AlgorithmMap["SHA224WITHRSASSA-PSS"] = "SHA-224withRSAandMGF1";
+ AlgorithmMap["SHA-224WITHRSASSA-PSS"] = "SHA-224withRSAandMGF1";
+
+ AlgorithmMap["SHA256WITHRSAANDMGF1"] = "SHA-256withRSAandMGF1";
+ AlgorithmMap["SHA-256WITHRSAANDMGF1"] = "SHA-256withRSAandMGF1";
+ AlgorithmMap["SHA256WITHRSA/PSS"] = "SHA-256withRSAandMGF1";
+ AlgorithmMap["SHA-256WITHRSA/PSS"] = "SHA-256withRSAandMGF1";
+ AlgorithmMap["SHA256WITHRSASSA-PSS"] = "SHA-256withRSAandMGF1";
+ AlgorithmMap["SHA-256WITHRSASSA-PSS"] = "SHA-256withRSAandMGF1";
+
+ AlgorithmMap["SHA384WITHRSAANDMGF1"] = "SHA-384withRSAandMGF1";
+ AlgorithmMap["SHA-384WITHRSAANDMGF1"] = "SHA-384withRSAandMGF1";
+ AlgorithmMap["SHA384WITHRSA/PSS"] = "SHA-384withRSAandMGF1";
+ AlgorithmMap["SHA-384WITHRSA/PSS"] = "SHA-384withRSAandMGF1";
+ AlgorithmMap["SHA384WITHRSASSA-PSS"] = "SHA-384withRSAandMGF1";
+ AlgorithmMap["SHA-384WITHRSASSA-PSS"] = "SHA-384withRSAandMGF1";
+
+ AlgorithmMap["SHA512WITHRSAANDMGF1"] = "SHA-512withRSAandMGF1";
+ AlgorithmMap["SHA-512WITHRSAANDMGF1"] = "SHA-512withRSAandMGF1";
+ AlgorithmMap["SHA512WITHRSA/PSS"] = "SHA-512withRSAandMGF1";
+ AlgorithmMap["SHA-512WITHRSA/PSS"] = "SHA-512withRSAandMGF1";
+ AlgorithmMap["SHA512WITHRSASSA-PSS"] = "SHA-512withRSAandMGF1";
+ AlgorithmMap["SHA-512WITHRSASSA-PSS"] = "SHA-512withRSAandMGF1";
+
+ AlgorithmMap["RIPEMD128WITHRSA"] = "RIPEMD128withRSA";
+ AlgorithmMap["RIPEMD128WITHRSAENCRYPTION"] = "RIPEMD128withRSA";
+ AlgorithmMap[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128.Id] = "RIPEMD128withRSA";
+
+ AlgorithmMap["RIPEMD160WITHRSA"] = "RIPEMD160withRSA";
+ AlgorithmMap["RIPEMD160WITHRSAENCRYPTION"] = "RIPEMD160withRSA";
+ AlgorithmMap[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160.Id] = "RIPEMD160withRSA";
+
+ AlgorithmMap["RIPEMD256WITHRSA"] = "RIPEMD256withRSA";
+ AlgorithmMap["RIPEMD256WITHRSAENCRYPTION"] = "RIPEMD256withRSA";
+ AlgorithmMap[TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256.Id] = "RIPEMD256withRSA";
+
+ AlgorithmMap["NONEWITHRSA"] = "RSA";
+ AlgorithmMap["RSAWITHNONE"] = "RSA";
+ AlgorithmMap["RAWRSA"] = "RSA";
+
+ AlgorithmMap["RAWRSAPSS"] = "RAWRSASSA-PSS";
+ AlgorithmMap["NONEWITHRSAPSS"] = "RAWRSASSA-PSS";
+ AlgorithmMap["NONEWITHRSASSA-PSS"] = "RAWRSASSA-PSS";
+
+ AlgorithmMap["NONEWITHDSA"] = "NONEwithDSA";
+ AlgorithmMap["DSAWITHNONE"] = "NONEwithDSA";
+ AlgorithmMap["RAWDSA"] = "NONEwithDSA";
+
+ AlgorithmMap["DSA"] = "SHA-1withDSA";
+ AlgorithmMap["DSAWITHSHA1"] = "SHA-1withDSA";
+ AlgorithmMap["DSAWITHSHA-1"] = "SHA-1withDSA";
+ AlgorithmMap["SHA/DSA"] = "SHA-1withDSA";
+ AlgorithmMap["SHA1/DSA"] = "SHA-1withDSA";
+ AlgorithmMap["SHA-1/DSA"] = "SHA-1withDSA";
+ AlgorithmMap["SHA1WITHDSA"] = "SHA-1withDSA";
+ AlgorithmMap["SHA-1WITHDSA"] = "SHA-1withDSA";
+ AlgorithmMap[X9ObjectIdentifiers.IdDsaWithSha1.Id] = "SHA-1withDSA";
+ AlgorithmMap[OiwObjectIdentifiers.DsaWithSha1.Id] = "SHA-1withDSA";
+
+ AlgorithmMap["DSAWITHSHA224"] = "SHA-224withDSA";
+ AlgorithmMap["DSAWITHSHA-224"] = "SHA-224withDSA";
+ AlgorithmMap["SHA224/DSA"] = "SHA-224withDSA";
+ AlgorithmMap["SHA-224/DSA"] = "SHA-224withDSA";
+ AlgorithmMap["SHA224WITHDSA"] = "SHA-224withDSA";
+ AlgorithmMap["SHA-224WITHDSA"] = "SHA-224withDSA";
+ AlgorithmMap[NistObjectIdentifiers.DsaWithSha224.Id] = "SHA-224withDSA";
+
+ AlgorithmMap["DSAWITHSHA256"] = "SHA-256withDSA";
+ AlgorithmMap["DSAWITHSHA-256"] = "SHA-256withDSA";
+ AlgorithmMap["SHA256/DSA"] = "SHA-256withDSA";
+ AlgorithmMap["SHA-256/DSA"] = "SHA-256withDSA";
+ AlgorithmMap["SHA256WITHDSA"] = "SHA-256withDSA";
+ AlgorithmMap["SHA-256WITHDSA"] = "SHA-256withDSA";
+ AlgorithmMap[NistObjectIdentifiers.DsaWithSha256.Id] = "SHA-256withDSA";
+
+ AlgorithmMap["DSAWITHSHA384"] = "SHA-384withDSA";
+ AlgorithmMap["DSAWITHSHA-384"] = "SHA-384withDSA";
+ AlgorithmMap["SHA384/DSA"] = "SHA-384withDSA";
+ AlgorithmMap["SHA-384/DSA"] = "SHA-384withDSA";
+ AlgorithmMap["SHA384WITHDSA"] = "SHA-384withDSA";
+ AlgorithmMap["SHA-384WITHDSA"] = "SHA-384withDSA";
+ AlgorithmMap[NistObjectIdentifiers.DsaWithSha384.Id] = "SHA-384withDSA";
+
+ AlgorithmMap["DSAWITHSHA512"] = "SHA-512withDSA";
+ AlgorithmMap["DSAWITHSHA-512"] = "SHA-512withDSA";
+ AlgorithmMap["SHA512/DSA"] = "SHA-512withDSA";
+ AlgorithmMap["SHA-512/DSA"] = "SHA-512withDSA";
+ AlgorithmMap["SHA512WITHDSA"] = "SHA-512withDSA";
+ AlgorithmMap["SHA-512WITHDSA"] = "SHA-512withDSA";
+ AlgorithmMap[NistObjectIdentifiers.DsaWithSha512.Id] = "SHA-512withDSA";
+
+ AlgorithmMap["NONEWITHECDSA"] = "NONEwithECDSA";
+ AlgorithmMap["ECDSAWITHNONE"] = "NONEwithECDSA";
+
+ AlgorithmMap["ECDSA"] = "SHA-1withECDSA";
+ AlgorithmMap["SHA1/ECDSA"] = "SHA-1withECDSA";
+ AlgorithmMap["SHA-1/ECDSA"] = "SHA-1withECDSA";
+ AlgorithmMap["ECDSAWITHSHA1"] = "SHA-1withECDSA";
+ AlgorithmMap["ECDSAWITHSHA-1"] = "SHA-1withECDSA";
+ AlgorithmMap["SHA1WITHECDSA"] = "SHA-1withECDSA";
+ AlgorithmMap["SHA-1WITHECDSA"] = "SHA-1withECDSA";
+ AlgorithmMap[X9ObjectIdentifiers.ECDsaWithSha1.Id] = "SHA-1withECDSA";
+ AlgorithmMap[TeleTrusTObjectIdentifiers.ECSignWithSha1.Id] = "SHA-1withECDSA";
+
+ AlgorithmMap["SHA224/ECDSA"] = "SHA-224withECDSA";
+ AlgorithmMap["SHA-224/ECDSA"] = "SHA-224withECDSA";
+ AlgorithmMap["ECDSAWITHSHA224"] = "SHA-224withECDSA";
+ AlgorithmMap["ECDSAWITHSHA-224"] = "SHA-224withECDSA";
+ AlgorithmMap["SHA224WITHECDSA"] = "SHA-224withECDSA";
+ AlgorithmMap["SHA-224WITHECDSA"] = "SHA-224withECDSA";
+ AlgorithmMap[X9ObjectIdentifiers.ECDsaWithSha224.Id] = "SHA-224withECDSA";
+
+ AlgorithmMap["SHA256/ECDSA"] = "SHA-256withECDSA";
+ AlgorithmMap["SHA-256/ECDSA"] = "SHA-256withECDSA";
+ AlgorithmMap["ECDSAWITHSHA256"] = "SHA-256withECDSA";
+ AlgorithmMap["ECDSAWITHSHA-256"] = "SHA-256withECDSA";
+ AlgorithmMap["SHA256WITHECDSA"] = "SHA-256withECDSA";
+ AlgorithmMap["SHA-256WITHECDSA"] = "SHA-256withECDSA";
+ AlgorithmMap[X9ObjectIdentifiers.ECDsaWithSha256.Id] = "SHA-256withECDSA";
+
+ AlgorithmMap["SHA384/ECDSA"] = "SHA-384withECDSA";
+ AlgorithmMap["SHA-384/ECDSA"] = "SHA-384withECDSA";
+ AlgorithmMap["ECDSAWITHSHA384"] = "SHA-384withECDSA";
+ AlgorithmMap["ECDSAWITHSHA-384"] = "SHA-384withECDSA";
+ AlgorithmMap["SHA384WITHECDSA"] = "SHA-384withECDSA";
+ AlgorithmMap["SHA-384WITHECDSA"] = "SHA-384withECDSA";
+ AlgorithmMap[X9ObjectIdentifiers.ECDsaWithSha384.Id] = "SHA-384withECDSA";
+
+ AlgorithmMap["SHA512/ECDSA"] = "SHA-512withECDSA";
+ AlgorithmMap["SHA-512/ECDSA"] = "SHA-512withECDSA";
+ AlgorithmMap["ECDSAWITHSHA512"] = "SHA-512withECDSA";
+ AlgorithmMap["ECDSAWITHSHA-512"] = "SHA-512withECDSA";
+ AlgorithmMap["SHA512WITHECDSA"] = "SHA-512withECDSA";
+ AlgorithmMap["SHA-512WITHECDSA"] = "SHA-512withECDSA";
+ AlgorithmMap[X9ObjectIdentifiers.ECDsaWithSha512.Id] = "SHA-512withECDSA";
+
+ AlgorithmMap["RIPEMD160/ECDSA"] = "RIPEMD160withECDSA";
+ AlgorithmMap["ECDSAWITHRIPEMD160"] = "RIPEMD160withECDSA";
+ AlgorithmMap["RIPEMD160WITHECDSA"] = "RIPEMD160withECDSA";
+ AlgorithmMap[TeleTrusTObjectIdentifiers.ECSignWithRipeMD160.Id] = "RIPEMD160withECDSA";
+
+ AlgorithmMap["NONEWITHCVC-ECDSA"] = "NONEwithCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHNONE"] = "NONEwithCVC-ECDSA";
+
+ AlgorithmMap["SHA1/CVC-ECDSA"] = "SHA-1withCVC-ECDSA";
+ AlgorithmMap["SHA-1/CVC-ECDSA"] = "SHA-1withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA1"] = "SHA-1withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA-1"] = "SHA-1withCVC-ECDSA";
+ AlgorithmMap["SHA1WITHCVC-ECDSA"] = "SHA-1withCVC-ECDSA";
+ AlgorithmMap["SHA-1WITHCVC-ECDSA"] = "SHA-1withCVC-ECDSA";
+ AlgorithmMap[EacObjectIdentifiers.id_TA_ECDSA_SHA_1.Id] = "SHA-1withCVC-ECDSA";
+
+ AlgorithmMap["SHA224/CVC-ECDSA"] = "SHA-224withCVC-ECDSA";
+ AlgorithmMap["SHA-224/CVC-ECDSA"] = "SHA-224withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA224"] = "SHA-224withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA-224"] = "SHA-224withCVC-ECDSA";
+ AlgorithmMap["SHA224WITHCVC-ECDSA"] = "SHA-224withCVC-ECDSA";
+ AlgorithmMap["SHA-224WITHCVC-ECDSA"] = "SHA-224withCVC-ECDSA";
+ AlgorithmMap[EacObjectIdentifiers.id_TA_ECDSA_SHA_224.Id] = "SHA-224withCVC-ECDSA";
+
+ AlgorithmMap["SHA256/CVC-ECDSA"] = "SHA-256withCVC-ECDSA";
+ AlgorithmMap["SHA-256/CVC-ECDSA"] = "SHA-256withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA256"] = "SHA-256withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA-256"] = "SHA-256withCVC-ECDSA";
+ AlgorithmMap["SHA256WITHCVC-ECDSA"] = "SHA-256withCVC-ECDSA";
+ AlgorithmMap["SHA-256WITHCVC-ECDSA"] = "SHA-256withCVC-ECDSA";
+ AlgorithmMap[EacObjectIdentifiers.id_TA_ECDSA_SHA_256.Id] = "SHA-256withCVC-ECDSA";
+
+ AlgorithmMap["SHA384/CVC-ECDSA"] = "SHA-384withCVC-ECDSA";
+ AlgorithmMap["SHA-384/CVC-ECDSA"] = "SHA-384withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA384"] = "SHA-384withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA-384"] = "SHA-384withCVC-ECDSA";
+ AlgorithmMap["SHA384WITHCVC-ECDSA"] = "SHA-384withCVC-ECDSA";
+ AlgorithmMap["SHA-384WITHCVC-ECDSA"] = "SHA-384withCVC-ECDSA";
+ AlgorithmMap[EacObjectIdentifiers.id_TA_ECDSA_SHA_384.Id] = "SHA-384withCVC-ECDSA";
+
+ AlgorithmMap["SHA512/CVC-ECDSA"] = "SHA-512withCVC-ECDSA";
+ AlgorithmMap["SHA-512/CVC-ECDSA"] = "SHA-512withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA512"] = "SHA-512withCVC-ECDSA";
+ AlgorithmMap["CVC-ECDSAWITHSHA-512"] = "SHA-512withCVC-ECDSA";
+ AlgorithmMap["SHA512WITHCVC-ECDSA"] = "SHA-512withCVC-ECDSA";
+ AlgorithmMap["SHA-512WITHCVC-ECDSA"] = "SHA-512withCVC-ECDSA";
+ AlgorithmMap[EacObjectIdentifiers.id_TA_ECDSA_SHA_512.Id] = "SHA-512withCVC-ECDSA";
+
+ AlgorithmMap["NONEWITHPLAIN-ECDSA"] = "NONEwithPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHNONE"] = "NONEwithPLAIN-ECDSA";
+
+ AlgorithmMap["SHA1/PLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
+ AlgorithmMap["SHA-1/PLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA1"] = "SHA-1withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA-1"] = "SHA-1withPLAIN-ECDSA";
+ AlgorithmMap["SHA1WITHPLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
+ AlgorithmMap["SHA-1WITHPLAIN-ECDSA"] = "SHA-1withPLAIN-ECDSA";
+ AlgorithmMap[BsiObjectIdentifiers.ecdsa_plain_SHA1.Id] = "SHA-1withPLAIN-ECDSA";
+
+ AlgorithmMap["SHA224/PLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
+ AlgorithmMap["SHA-224/PLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA224"] = "SHA-224withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA-224"] = "SHA-224withPLAIN-ECDSA";
+ AlgorithmMap["SHA224WITHPLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
+ AlgorithmMap["SHA-224WITHPLAIN-ECDSA"] = "SHA-224withPLAIN-ECDSA";
+ AlgorithmMap[BsiObjectIdentifiers.ecdsa_plain_SHA224.Id] = "SHA-224withPLAIN-ECDSA";
+
+ AlgorithmMap["SHA256/PLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
+ AlgorithmMap["SHA-256/PLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA256"] = "SHA-256withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA-256"] = "SHA-256withPLAIN-ECDSA";
+ AlgorithmMap["SHA256WITHPLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
+ AlgorithmMap["SHA-256WITHPLAIN-ECDSA"] = "SHA-256withPLAIN-ECDSA";
+ AlgorithmMap[BsiObjectIdentifiers.ecdsa_plain_SHA256.Id] = "SHA-256withPLAIN-ECDSA";
+
+ AlgorithmMap["SHA384/PLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
+ AlgorithmMap["SHA-384/PLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA384"] = "SHA-384withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA-384"] = "SHA-384withPLAIN-ECDSA";
+ AlgorithmMap["SHA384WITHPLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
+ AlgorithmMap["SHA-384WITHPLAIN-ECDSA"] = "SHA-384withPLAIN-ECDSA";
+ AlgorithmMap[BsiObjectIdentifiers.ecdsa_plain_SHA384.Id] = "SHA-384withPLAIN-ECDSA";
+
+ AlgorithmMap["SHA512/PLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
+ AlgorithmMap["SHA-512/PLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA512"] = "SHA-512withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHSHA-512"] = "SHA-512withPLAIN-ECDSA";
+ AlgorithmMap["SHA512WITHPLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
+ AlgorithmMap["SHA-512WITHPLAIN-ECDSA"] = "SHA-512withPLAIN-ECDSA";
+ AlgorithmMap[BsiObjectIdentifiers.ecdsa_plain_SHA512.Id] = "SHA-512withPLAIN-ECDSA";
+
+ AlgorithmMap["RIPEMD160/PLAIN-ECDSA"] = "RIPEMD160withPLAIN-ECDSA";
+ AlgorithmMap["PLAIN-ECDSAWITHRIPEMD160"] = "RIPEMD160withPLAIN-ECDSA";
+ AlgorithmMap["RIPEMD160WITHPLAIN-ECDSA"] = "RIPEMD160withPLAIN-ECDSA";
+ AlgorithmMap[BsiObjectIdentifiers.ecdsa_plain_RIPEMD160.Id] = "RIPEMD160withPLAIN-ECDSA";
+
+ AlgorithmMap["SHA1WITHECNR"] = "SHA-1withECNR";
+ AlgorithmMap["SHA-1WITHECNR"] = "SHA-1withECNR";
+ AlgorithmMap["SHA224WITHECNR"] = "SHA-224withECNR";
+ AlgorithmMap["SHA-224WITHECNR"] = "SHA-224withECNR";
+ AlgorithmMap["SHA256WITHECNR"] = "SHA-256withECNR";
+ AlgorithmMap["SHA-256WITHECNR"] = "SHA-256withECNR";
+ AlgorithmMap["SHA384WITHECNR"] = "SHA-384withECNR";
+ AlgorithmMap["SHA-384WITHECNR"] = "SHA-384withECNR";
+ AlgorithmMap["SHA512WITHECNR"] = "SHA-512withECNR";
+ AlgorithmMap["SHA-512WITHECNR"] = "SHA-512withECNR";
+
+ AlgorithmMap["GOST-3410"] = "GOST3410";
+ AlgorithmMap["GOST-3410-94"] = "GOST3410";
+ AlgorithmMap["GOST3411WITHGOST3410"] = "GOST3410";
+ AlgorithmMap[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94.Id] = "GOST3410";
+
+ AlgorithmMap["ECGOST-3410"] = "ECGOST3410";
+ AlgorithmMap["ECGOST-3410-2001"] = "ECGOST3410";
+ AlgorithmMap["GOST3411WITHECGOST3410"] = "ECGOST3410";
+ AlgorithmMap[CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001.Id] = "ECGOST3410";
+
+ AlgorithmMap["ED25519"] = "Ed25519";
+ AlgorithmMap[EdECObjectIdentifiers.id_Ed25519.Id] = "Ed25519";
+ AlgorithmMap["ED25519CTX"] = "Ed25519ctx";
+ AlgorithmMap["ED25519PH"] = "Ed25519ph";
+ AlgorithmMap["ED448"] = "Ed448";
+ AlgorithmMap[EdECObjectIdentifiers.id_Ed448.Id] = "Ed448";
+ AlgorithmMap["ED448PH"] = "Ed448ph";
+
+ AlgorithmMap["SHA256WITHSM2"] = "SHA256withSM2";
+ AlgorithmMap[GMObjectIdentifiers.sm2sign_with_sha256.Id] = "SHA256withSM2";
+ AlgorithmMap["SM3WITHSM2"] = "SM3withSM2";
+ AlgorithmMap[GMObjectIdentifiers.sm2sign_with_sm3.Id] = "SM3withSM2";
+
+ Oids["MD2withRSA"] = PkcsObjectIdentifiers.MD2WithRsaEncryption;
+ Oids["MD4withRSA"] = PkcsObjectIdentifiers.MD4WithRsaEncryption;
+ Oids["MD5withRSA"] = PkcsObjectIdentifiers.MD5WithRsaEncryption;
+
+ Oids["SHA-1withRSA"] = PkcsObjectIdentifiers.Sha1WithRsaEncryption;
+ Oids["SHA-224withRSA"] = PkcsObjectIdentifiers.Sha224WithRsaEncryption;
+ Oids["SHA-256withRSA"] = PkcsObjectIdentifiers.Sha256WithRsaEncryption;
+ Oids["SHA-384withRSA"] = PkcsObjectIdentifiers.Sha384WithRsaEncryption;
+ Oids["SHA-512withRSA"] = PkcsObjectIdentifiers.Sha512WithRsaEncryption;
+ Oids["SHA-512(224)withRSA"] = PkcsObjectIdentifiers.Sha512_224WithRSAEncryption;
+ Oids["SHA-512(256)withRSA"] = PkcsObjectIdentifiers.Sha512_256WithRSAEncryption;
+ Oids["SHA3-224withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_224;
+ Oids["SHA3-256withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_256;
+ Oids["SHA3-384withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_384;
+ Oids["SHA3-512withRSA"] = NistObjectIdentifiers.IdRsassaPkcs1V15WithSha3_512;
+
+ Oids["PSSwithRSA"] = PkcsObjectIdentifiers.IdRsassaPss;
+ Oids["SHA-1withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ Oids["SHA-224withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ Oids["SHA-256withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ Oids["SHA-384withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+ Oids["SHA-512withRSAandMGF1"] = PkcsObjectIdentifiers.IdRsassaPss;
+
+ Oids["RIPEMD128withRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD128;
+ Oids["RIPEMD160withRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD160;
+ Oids["RIPEMD256withRSA"] = TeleTrusTObjectIdentifiers.RsaSignatureWithRipeMD256;
+
+ Oids["SHA-1withDSA"] = X9ObjectIdentifiers.IdDsaWithSha1;
+
+ Oids["SHA-1withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha1;
+ Oids["SHA-224withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha224;
+ Oids["SHA-256withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha256;
+ Oids["SHA-384withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha384;
+ Oids["SHA-512withECDSA"] = X9ObjectIdentifiers.ECDsaWithSha512;
+ Oids["RIPEMD160withECDSA"] = TeleTrusTObjectIdentifiers.ECSignWithRipeMD160;
+
+ Oids["SHA-1withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_1;
+ Oids["SHA-224withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_224;
+ Oids["SHA-256withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_256;
+ Oids["SHA-384withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_384;
+ Oids["SHA-512withCVC-ECDSA"] = EacObjectIdentifiers.id_TA_ECDSA_SHA_512;
+
+ Oids["SHA-1withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA1;
+ Oids["SHA-224withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA224;
+ Oids["SHA-256withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA256;
+ Oids["SHA-384withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA384;
+ Oids["SHA-512withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_SHA512;
+ Oids["RIPEMD160withPLAIN-ECDSA"] = BsiObjectIdentifiers.ecdsa_plain_RIPEMD160;
+
+ Oids["GOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x94;
+ Oids["ECGOST3410"] = CryptoProObjectIdentifiers.GostR3411x94WithGostR3410x2001;
+
+ Oids["Ed25519"] = EdECObjectIdentifiers.id_Ed25519;
+ Oids["Ed448"] = EdECObjectIdentifiers.id_Ed448;
+
+ Oids["SHA256withSM2"] = GMObjectIdentifiers.sm2sign_with_sha256;
+ Oids["SM3withSM2"] = GMObjectIdentifiers.sm2sign_with_sm3;
}
/// <summary>
@@ -455,44 +452,32 @@ namespace Org.BouncyCastle.Security
/// <param name="mechanism">A string representation of the encoding.</param>
/// <returns>A DerObjectIdentifier, null if the OID is not available.</returns>
// TODO Don't really want to support this
- public static DerObjectIdentifier GetObjectIdentifier(
- string mechanism)
+ public static DerObjectIdentifier GetObjectIdentifier(string mechanism)
{
if (mechanism == null)
- throw new ArgumentNullException("mechanism");
+ throw new ArgumentNullException(nameof(mechanism));
- mechanism = Platform.ToUpperInvariant(mechanism);
- string aliased = (string) algorithms[mechanism];
+ string algorithm = CollectionUtilities.GetValueOrKey(AlgorithmMap, mechanism);
- if (aliased != null)
- mechanism = aliased;
-
- return (DerObjectIdentifier) oids[mechanism];
+ return CollectionUtilities.GetValueOrNull(Oids, algorithm);
}
- public static ICollection Algorithms
+ public static ICollection<string> Algorithms
{
- get { return oids.Keys; }
+ get { return CollectionUtilities.ReadOnly(Oids.Keys); }
}
- public static Asn1Encodable GetDefaultX509Parameters(
- DerObjectIdentifier id)
+ public static Asn1Encodable GetDefaultX509Parameters(DerObjectIdentifier id)
{
return GetDefaultX509Parameters(id.Id);
}
- public static Asn1Encodable GetDefaultX509Parameters(
- string algorithm)
+ public static Asn1Encodable GetDefaultX509Parameters(string algorithm)
{
if (algorithm == null)
- throw new ArgumentNullException("algorithm");
-
- algorithm = Platform.ToUpperInvariant(algorithm);
+ throw new ArgumentNullException(nameof(algorithm));
- string mechanism = (string) algorithms[algorithm];
-
- if (mechanism == null)
- mechanism = algorithm;
+ string mechanism = CollectionUtilities.GetValueOrKey(AlgorithmMap, algorithm);
if (mechanism == "PSSwithRSA")
{
@@ -525,24 +510,17 @@ namespace Org.BouncyCastle.Security
new DerInteger(saltLen), new DerInteger(1));
}
- public static ISigner GetSigner(
- DerObjectIdentifier id)
+ public static ISigner GetSigner(DerObjectIdentifier id)
{
return GetSigner(id.Id);
}
- public static ISigner GetSigner(
- string algorithm)
+ public static ISigner GetSigner(string algorithm)
{
if (algorithm == null)
- throw new ArgumentNullException("algorithm");
-
- algorithm = Platform.ToUpperInvariant(algorithm);
+ throw new ArgumentNullException(nameof(algorithm));
- string mechanism = (string) algorithms[algorithm];
-
- if (mechanism == null)
- mechanism = algorithm;
+ string mechanism = CollectionUtilities.GetValueOrKey(AlgorithmMap, algorithm.ToUpperInvariant());
if (Platform.StartsWith(mechanism, "Ed"))
{
@@ -677,10 +655,9 @@ namespace Org.BouncyCastle.Security
throw new SecurityUtilityException("Signer " + algorithm + " not recognised.");
}
- public static string GetEncodingName(
- DerObjectIdentifier oid)
+ public static string GetEncodingName(DerObjectIdentifier oid)
{
- return (string) algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(AlgorithmMap, oid.Id);
}
public static ISigner InitSigner(DerObjectIdentifier algorithmOid, bool forSigning, AsymmetricKeyParameter privateKey, SecureRandom random)
diff --git a/crypto/src/security/WrapperUtilities.cs b/crypto/src/security/WrapperUtilities.cs
index c57632081..983ff824c 100644
--- a/crypto/src/security/WrapperUtilities.cs
+++ b/crypto/src/security/WrapperUtilities.cs
@@ -1,5 +1,5 @@
using System;
-using System.Collections;
+using System.Collections.Generic;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Kisa;
@@ -9,61 +9,50 @@ using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Utilities;
+using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Security
{
/// <remarks>
/// Utility class for creating IWrapper objects from their names/Oids
/// </remarks>
- public sealed class WrapperUtilities
+ public static class WrapperUtilities
{
private enum WrapAlgorithm { AESWRAP, CAMELLIAWRAP, DESEDEWRAP, RC2WRAP, SEEDWRAP,
DESEDERFC3211WRAP, AESRFC3211WRAP, CAMELLIARFC3211WRAP };
- private WrapperUtilities()
- {
- }
-
- private static readonly IDictionary algorithms = Platform.CreateHashtable();
- //private static readonly IDictionary oids = Platform.CreateHashtable();
+ private static readonly IDictionary<string, string> Algorithms =
+ new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
static WrapperUtilities()
{
// Signal to obfuscation tools not to change enum constants
((WrapAlgorithm)Enums.GetArbitraryValue(typeof(WrapAlgorithm))).ToString();
- algorithms[NistObjectIdentifiers.IdAes128Wrap.Id] = "AESWRAP";
- algorithms[NistObjectIdentifiers.IdAes192Wrap.Id] = "AESWRAP";
- algorithms[NistObjectIdentifiers.IdAes256Wrap.Id] = "AESWRAP";
+ Algorithms[NistObjectIdentifiers.IdAes128Wrap.Id] = "AESWRAP";
+ Algorithms[NistObjectIdentifiers.IdAes192Wrap.Id] = "AESWRAP";
+ Algorithms[NistObjectIdentifiers.IdAes256Wrap.Id] = "AESWRAP";
- algorithms[NttObjectIdentifiers.IdCamellia128Wrap.Id] = "CAMELLIAWRAP";
- algorithms[NttObjectIdentifiers.IdCamellia192Wrap.Id] = "CAMELLIAWRAP";
- algorithms[NttObjectIdentifiers.IdCamellia256Wrap.Id] = "CAMELLIAWRAP";
+ Algorithms[NttObjectIdentifiers.IdCamellia128Wrap.Id] = "CAMELLIAWRAP";
+ Algorithms[NttObjectIdentifiers.IdCamellia192Wrap.Id] = "CAMELLIAWRAP";
+ Algorithms[NttObjectIdentifiers.IdCamellia256Wrap.Id] = "CAMELLIAWRAP";
- algorithms[PkcsObjectIdentifiers.IdAlgCms3DesWrap.Id] = "DESEDEWRAP";
- algorithms["TDEAWRAP"] = "DESEDEWRAP";
+ Algorithms[PkcsObjectIdentifiers.IdAlgCms3DesWrap.Id] = "DESEDEWRAP";
+ Algorithms["TDEAWRAP"] = "DESEDEWRAP";
- algorithms[PkcsObjectIdentifiers.IdAlgCmsRC2Wrap.Id] = "RC2WRAP";
+ Algorithms[PkcsObjectIdentifiers.IdAlgCmsRC2Wrap.Id] = "RC2WRAP";
- algorithms[KisaObjectIdentifiers.IdNpkiAppCmsSeedWrap.Id] = "SEEDWRAP";
+ Algorithms[KisaObjectIdentifiers.IdNpkiAppCmsSeedWrap.Id] = "SEEDWRAP";
}
- public static IWrapper GetWrapper(
- DerObjectIdentifier oid)
+ public static IWrapper GetWrapper(DerObjectIdentifier oid)
{
return GetWrapper(oid.Id);
}
- public static IWrapper GetWrapper(
- string algorithm)
+ public static IWrapper GetWrapper(string algorithm)
{
- string upper = Platform.ToUpperInvariant(algorithm);
- string mechanism = (string)algorithms[upper];
-
- if (mechanism == null)
- {
- mechanism = upper;
- }
+ string mechanism = CollectionUtilities.GetValueOrKey(Algorithms, algorithm).ToUpperInvariant();
try
{
@@ -72,14 +61,14 @@ namespace Org.BouncyCastle.Security
switch (wrapAlgorithm)
{
- case WrapAlgorithm.AESWRAP: return new AesWrapEngine();
- case WrapAlgorithm.CAMELLIAWRAP: return new CamelliaWrapEngine();
- case WrapAlgorithm.DESEDEWRAP: return new DesEdeWrapEngine();
- case WrapAlgorithm.RC2WRAP: return new RC2WrapEngine();
- case WrapAlgorithm.SEEDWRAP: return new SeedWrapEngine();
- case WrapAlgorithm.DESEDERFC3211WRAP: return new Rfc3211WrapEngine(new DesEdeEngine());
- case WrapAlgorithm.AESRFC3211WRAP: return new Rfc3211WrapEngine(new AesEngine());
- case WrapAlgorithm.CAMELLIARFC3211WRAP: return new Rfc3211WrapEngine(new CamelliaEngine());
+ case WrapAlgorithm.AESWRAP: return new AesWrapEngine();
+ case WrapAlgorithm.CAMELLIAWRAP: return new CamelliaWrapEngine();
+ case WrapAlgorithm.DESEDEWRAP: return new DesEdeWrapEngine();
+ case WrapAlgorithm.RC2WRAP: return new RC2WrapEngine();
+ case WrapAlgorithm.SEEDWRAP: return new SeedWrapEngine();
+ case WrapAlgorithm.DESEDERFC3211WRAP: return new Rfc3211WrapEngine(new DesEdeEngine());
+ case WrapAlgorithm.AESRFC3211WRAP: return new Rfc3211WrapEngine(new AesEngine());
+ case WrapAlgorithm.CAMELLIARFC3211WRAP: return new Rfc3211WrapEngine(new CamelliaEngine());
}
}
catch (ArgumentException)
@@ -95,10 +84,9 @@ namespace Org.BouncyCastle.Security
throw new SecurityUtilityException("Wrapper " + algorithm + " not recognised.");
}
- public static string GetAlgorithmName(
- DerObjectIdentifier oid)
+ public static string GetAlgorithmName(DerObjectIdentifier oid)
{
- return (string) algorithms[oid.Id];
+ return CollectionUtilities.GetValueOrNull(Algorithms, oid.Id);
}
private class BufferedCipherWrapper
|