internal static int GetDefaultKeySize(string algorithm) { string canonicalKeyGeneratorAlgorithm = GeneratorUtilities.GetCanonicalKeyGeneratorAlgorithm(algorithm); if (canonicalKeyGeneratorAlgorithm == null) { throw new SecurityUtilityException("KeyGenerator " + algorithm + " not recognised."); } int num = GeneratorUtilities.FindDefaultKeySize(canonicalKeyGeneratorAlgorithm); if (num == -1) { throw new SecurityUtilityException(string.Concat(new string[] { "KeyGenerator ", algorithm, " (", canonicalKeyGeneratorAlgorithm, ") not supported." })); } return(num); }
public static ICipherParameters GenerateCipherParameters(string algorithm, char[] password, bool wrongPkcs12Zero, Asn1Encodable pbeParameters) { string text = (string)algorithms.get_Item((object)Platform.ToUpperInvariant(algorithm)); byte[] array = null; byte[] salt = null; int iterationCount = 0; if (IsPkcs12(text)) { Pkcs12PbeParams instance = Pkcs12PbeParams.GetInstance(pbeParameters); salt = instance.GetIV(); iterationCount = instance.Iterations.IntValue; array = PbeParametersGenerator.Pkcs12PasswordToBytes(password, wrongPkcs12Zero); } else if (!IsPkcs5Scheme2(text)) { PbeParameter instance2 = PbeParameter.GetInstance(pbeParameters); salt = instance2.GetSalt(); iterationCount = instance2.IterationCount.IntValue; array = PbeParametersGenerator.Pkcs5PasswordToBytes(password); } ICipherParameters parameters = null; if (IsPkcs5Scheme2(text)) { PbeS2Parameters instance3 = PbeS2Parameters.GetInstance(pbeParameters.ToAsn1Object()); AlgorithmIdentifier encryptionScheme = instance3.EncryptionScheme; DerObjectIdentifier algorithm2 = encryptionScheme.Algorithm; Asn1Object obj = encryptionScheme.Parameters.ToAsn1Object(); Pbkdf2Params instance4 = Pbkdf2Params.GetInstance(instance3.KeyDerivationFunc.Parameters.ToAsn1Object()); byte[] array2; if (algorithm2.Equals(PkcsObjectIdentifiers.RC2Cbc)) { RC2CbcParameter instance5 = RC2CbcParameter.GetInstance(obj); array2 = instance5.GetIV(); } else { array2 = Asn1OctetString.GetInstance(obj).GetOctets(); } salt = instance4.GetSalt(); iterationCount = instance4.IterationCount.IntValue; array = PbeParametersGenerator.Pkcs5PasswordToBytes(password); int keySize = ((instance4.KeyLength != null) ? (instance4.KeyLength.IntValue * 8) : GeneratorUtilities.GetDefaultKeySize(algorithm2)); PbeParametersGenerator pbeParametersGenerator = MakePbeGenerator((string)algorithmType.get_Item((object)text), null, array, salt, iterationCount); parameters = pbeParametersGenerator.GenerateDerivedParameters(algorithm2.Id, keySize); if (array2 != null && !Arrays.AreEqual(array2, new byte[array2.Length])) { parameters = new ParametersWithIV(parameters, array2); } } else if (Platform.StartsWith(text, "PBEwithSHA-1")) { PbeParametersGenerator pbeParametersGenerator2 = MakePbeGenerator((string)algorithmType.get_Item((object)text), new Sha1Digest(), array, salt, iterationCount); if (text.Equals("PBEwithSHA-1and128bitAES-CBC-BC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("AES", 128, 128); } else if (text.Equals("PBEwithSHA-1and192bitAES-CBC-BC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("AES", 192, 128); } else if (text.Equals("PBEwithSHA-1and256bitAES-CBC-BC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("AES", 256, 128); } else if (text.Equals("PBEwithSHA-1and128bitRC4")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("RC4", 128); } else if (text.Equals("PBEwithSHA-1and40bitRC4")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("RC4", 40); } else if (text.Equals("PBEwithSHA-1and3-keyDESEDE-CBC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("DESEDE", 192, 64); } else if (text.Equals("PBEwithSHA-1and2-keyDESEDE-CBC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("DESEDE", 128, 64); } else if (text.Equals("PBEwithSHA-1and128bitRC2-CBC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("RC2", 128, 64); } else if (text.Equals("PBEwithSHA-1and40bitRC2-CBC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("RC2", 40, 64); } else if (text.Equals("PBEwithSHA-1andDES-CBC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("DES", 64, 64); } else if (text.Equals("PBEwithSHA-1andRC2-CBC")) { parameters = pbeParametersGenerator2.GenerateDerivedParameters("RC2", 64, 64); } } else if (Platform.StartsWith(text, "PBEwithSHA-256")) { PbeParametersGenerator pbeParametersGenerator3 = MakePbeGenerator((string)algorithmType.get_Item((object)text), new Sha256Digest(), array, salt, iterationCount); if (text.Equals("PBEwithSHA-256and128bitAES-CBC-BC")) { parameters = pbeParametersGenerator3.GenerateDerivedParameters("AES", 128, 128); } else if (text.Equals("PBEwithSHA-256and192bitAES-CBC-BC")) { parameters = pbeParametersGenerator3.GenerateDerivedParameters("AES", 192, 128); } else if (text.Equals("PBEwithSHA-256and256bitAES-CBC-BC")) { parameters = pbeParametersGenerator3.GenerateDerivedParameters("AES", 256, 128); } } else if (Platform.StartsWith(text, "PBEwithMD5")) { PbeParametersGenerator pbeParametersGenerator4 = MakePbeGenerator((string)algorithmType.get_Item((object)text), new MD5Digest(), array, salt, iterationCount); if (text.Equals("PBEwithMD5andDES-CBC")) { parameters = pbeParametersGenerator4.GenerateDerivedParameters("DES", 64, 64); } else if (text.Equals("PBEwithMD5andRC2-CBC")) { parameters = pbeParametersGenerator4.GenerateDerivedParameters("RC2", 64, 64); } else if (text.Equals("PBEwithMD5and128bitAES-CBC-OpenSSL")) { parameters = pbeParametersGenerator4.GenerateDerivedParameters("AES", 128, 128); } else if (text.Equals("PBEwithMD5and192bitAES-CBC-OpenSSL")) { parameters = pbeParametersGenerator4.GenerateDerivedParameters("AES", 192, 128); } else if (text.Equals("PBEwithMD5and256bitAES-CBC-OpenSSL")) { parameters = pbeParametersGenerator4.GenerateDerivedParameters("AES", 256, 128); } } else if (Platform.StartsWith(text, "PBEwithMD2")) { PbeParametersGenerator pbeParametersGenerator5 = MakePbeGenerator((string)algorithmType.get_Item((object)text), new MD2Digest(), array, salt, iterationCount); if (text.Equals("PBEwithMD2andDES-CBC")) { parameters = pbeParametersGenerator5.GenerateDerivedParameters("DES", 64, 64); } else if (text.Equals("PBEwithMD2andRC2-CBC")) { parameters = pbeParametersGenerator5.GenerateDerivedParameters("RC2", 64, 64); } } else if (Platform.StartsWith(text, "PBEwithHmac")) { string algorithm3 = text.Substring("PBEwithHmac".get_Length()); IDigest digest = DigestUtilities.GetDigest(algorithm3); PbeParametersGenerator pbeParametersGenerator6 = MakePbeGenerator((string)algorithmType.get_Item((object)text), digest, array, salt, iterationCount); int keySize2 = digest.GetDigestSize() * 8; parameters = pbeParametersGenerator6.GenerateDerivedMacParameters(keySize2); } global::System.Array.Clear((global::System.Array)array, 0, array.Length); return(FixDesParity(text, parameters)); }
public static ICipherParameters GenerateCipherParameters( string algorithm, char[] password, bool wrongPkcs12Zero, Asn1Encodable pbeParameters) { string mechanism = (string)algorithms[algorithm.ToUpper(CultureInfo.InvariantCulture)]; byte[] keyBytes = null; byte[] salt = null; int iterationCount = 0; if (IsPkcs12(mechanism)) { Pkcs12PbeParams pbeParams = Pkcs12PbeParams.GetInstance(pbeParameters); salt = pbeParams.GetIV(); iterationCount = pbeParams.Iterations.IntValue; keyBytes = PbeParametersGenerator.Pkcs12PasswordToBytes(password, wrongPkcs12Zero); } else if (IsPkcs5Scheme2(mechanism)) { // See below } else { PbeParameter pbeParams = PbeParameter.GetInstance(pbeParameters); salt = pbeParams.GetSalt(); iterationCount = pbeParams.IterationCount.IntValue; keyBytes = PbeParametersGenerator.Pkcs5PasswordToBytes(password); } ICipherParameters parameters = null; if (IsPkcs5Scheme2(mechanism)) { PbeS2Parameters s2p = PbeS2Parameters.GetInstance(pbeParameters.ToAsn1Object()); AlgorithmIdentifier encScheme = s2p.EncryptionScheme; DerObjectIdentifier encOid = encScheme.ObjectID; Asn1Object encParams = encScheme.Parameters.ToAsn1Object(); // TODO What about s2p.KeyDerivationFunc.ObjectID? Pbkdf2Params pbeParams = Pbkdf2Params.GetInstance(s2p.KeyDerivationFunc.Parameters.ToAsn1Object()); byte[] iv; if (encOid.Equals(PkcsObjectIdentifiers.RC2Cbc)) // PKCS5.B.2.3 { RC2CbcParameter rc2Params = RC2CbcParameter.GetInstance(encParams); iv = rc2Params.GetIV(); } else { iv = Asn1OctetString.GetInstance(encParams).GetOctets(); } salt = pbeParams.GetSalt(); iterationCount = pbeParams.IterationCount.IntValue; keyBytes = PbeParametersGenerator.Pkcs5PasswordToBytes(password); int keyLength = pbeParams.KeyLength != null ? pbeParams.KeyLength.IntValue * 8 : GeneratorUtilities.GetDefaultKeySize(encOid); PbeParametersGenerator gen = MakePbeGenerator( (string)algorithmType[mechanism], null, keyBytes, salt, iterationCount); parameters = gen.GenerateDerivedParameters(encOid.Id, keyLength); if (iv != null) { // FIXME? OpenSSL weirdness with IV of zeros (for ECB keys?) if (Arrays.AreEqual(iv, new byte[iv.Length])) { //Console.Error.Write("***** IV all 0 (length " + iv.Length + ") *****"); } else { parameters = new ParametersWithIV(parameters, iv); } } } else if (mechanism.StartsWith("PBEwithSHA-1")) { PbeParametersGenerator generator = MakePbeGenerator( (string)algorithmType[mechanism], new Sha1Digest(), keyBytes, salt, iterationCount); if (mechanism.Equals("PBEwithSHA-1and128bitRC4")) { parameters = generator.GenerateDerivedParameters("RC4", 128); } else if (mechanism.Equals("PBEwithSHA-1and40bitRC4")) { parameters = generator.GenerateDerivedParameters("RC4", 40); } else if (mechanism.Equals("PBEwithSHA-1and3-keyDESEDE-CBC")) { parameters = generator.GenerateDerivedParameters("DESEDE", 192, 64); } else if (mechanism.Equals("PBEwithSHA-1and2-keyDESEDE-CBC")) { parameters = generator.GenerateDerivedParameters("DESEDE", 128, 64); } else if (mechanism.Equals("PBEwithSHA-1and128bitRC2-CBC")) { parameters = generator.GenerateDerivedParameters("RC2", 128, 64); } else if (mechanism.Equals("PBEwithSHA-1and40bitRC2-CBC")) { parameters = generator.GenerateDerivedParameters("RC2", 40, 64); } else if (mechanism.Equals("PBEwithSHA-1andDES-CBC")) { parameters = generator.GenerateDerivedParameters("DES", 64, 64); } else if (mechanism.Equals("PBEwithSHA-1andRC2-CBC")) { parameters = generator.GenerateDerivedParameters("RC2", 64, 64); } else if (mechanism.Equals("PBEwithSHA-1and128bitAES-CBC-BC")) { parameters = generator.GenerateDerivedParameters("AES", 128, 128); } else if (mechanism.Equals("PBEwithSHA-1and192bitAES-CBC-BC")) { parameters = generator.GenerateDerivedParameters("AES", 192, 128); } else if (mechanism.Equals("PBEwithSHA-1and256bitAES-CBC-BC")) { parameters = generator.GenerateDerivedParameters("AES", 256, 128); } } else if (mechanism.StartsWith("PBEwithSHA-256")) { PbeParametersGenerator generator = MakePbeGenerator( (string)algorithmType[mechanism], new Sha256Digest(), keyBytes, salt, iterationCount); if (mechanism.Equals("PBEwithSHA-256and128bitAES-CBC-BC")) { parameters = generator.GenerateDerivedParameters("AES", 128, 128); } else if (mechanism.Equals("PBEwithSHA-256and192bitAES-CBC-BC")) { parameters = generator.GenerateDerivedParameters("AES", 192, 128); } else if (mechanism.Equals("PBEwithSHA-256and256bitAES-CBC-BC")) { parameters = generator.GenerateDerivedParameters("AES", 256, 128); } } else if (mechanism.StartsWith("PBEwithMD5")) { PbeParametersGenerator generator = MakePbeGenerator( (string)algorithmType[mechanism], new MD5Digest(), keyBytes, salt, iterationCount); if (mechanism.Equals("PBEwithMD5andDES-CBC")) { parameters = generator.GenerateDerivedParameters("DES", 64, 64); } else if (mechanism.Equals("PBEwithMD5andRC2-CBC")) { parameters = generator.GenerateDerivedParameters("RC2", 64, 64); } else if (mechanism.Equals("PBEwithMD5and128bitAES-CBC-OpenSSL")) { parameters = generator.GenerateDerivedParameters("AES", 128, 128); } else if (mechanism.Equals("PBEwithMD5and192bitAES-CBC-OpenSSL")) { parameters = generator.GenerateDerivedParameters("AES", 192, 128); } else if (mechanism.Equals("PBEwithMD5and256bitAES-CBC-OpenSSL")) { parameters = generator.GenerateDerivedParameters("AES", 256, 128); } } else if (mechanism.StartsWith("PBEwithMD2")) { PbeParametersGenerator generator = MakePbeGenerator( (string)algorithmType[mechanism], new MD2Digest(), keyBytes, salt, iterationCount); if (mechanism.Equals("PBEwithMD2andDES-CBC")) { parameters = generator.GenerateDerivedParameters("DES", 64, 64); } else if (mechanism.Equals("PBEwithMD2andRC2-CBC")) { parameters = generator.GenerateDerivedParameters("RC2", 64, 64); } } else if (mechanism.StartsWith("PBEwithHmac")) { string digestName = mechanism.Substring("PBEwithHmac".Length); IDigest digest = DigestUtilities.GetDigest(digestName); PbeParametersGenerator generator = MakePbeGenerator( (string)algorithmType[mechanism], digest, keyBytes, salt, iterationCount); int bitLen = digest.GetDigestSize() * 8; parameters = generator.GenerateDerivedMacParameters(bitLen); } Array.Clear(keyBytes, 0, keyBytes.Length); return(FixDesParity(mechanism, parameters)); }
internal static int GetDefaultKeySize(DerObjectIdentifier oid) { return(GeneratorUtilities.GetDefaultKeySize(oid.Id)); }
public static IAsymmetricCipherKeyPairGenerator GetKeyPairGenerator(DerObjectIdentifier oid) { return(GeneratorUtilities.GetKeyPairGenerator(oid.Id)); }
static GeneratorUtilities() { GeneratorUtilities.kgAlgorithms = Platform.CreateHashtable(); GeneratorUtilities.kpgAlgorithms = Platform.CreateHashtable(); GeneratorUtilities.defaultKeySizes = Platform.CreateHashtable(); GeneratorUtilities.AddKgAlgorithm("AES", new object[] { "AESWRAP" }); GeneratorUtilities.AddKgAlgorithm("AES128", new object[] { "2.16.840.1.101.3.4.2", NistObjectIdentifiers.IdAes128Cbc, NistObjectIdentifiers.IdAes128Cfb, NistObjectIdentifiers.IdAes128Ecb, NistObjectIdentifiers.IdAes128Ofb, NistObjectIdentifiers.IdAes128Wrap }); GeneratorUtilities.AddKgAlgorithm("AES192", new object[] { "2.16.840.1.101.3.4.22", NistObjectIdentifiers.IdAes192Cbc, NistObjectIdentifiers.IdAes192Cfb, NistObjectIdentifiers.IdAes192Ecb, NistObjectIdentifiers.IdAes192Ofb, NistObjectIdentifiers.IdAes192Wrap }); GeneratorUtilities.AddKgAlgorithm("AES256", new object[] { "2.16.840.1.101.3.4.42", NistObjectIdentifiers.IdAes256Cbc, NistObjectIdentifiers.IdAes256Cfb, NistObjectIdentifiers.IdAes256Ecb, NistObjectIdentifiers.IdAes256Ofb, NistObjectIdentifiers.IdAes256Wrap }); GeneratorUtilities.AddKgAlgorithm("BLOWFISH", new object[] { "1.3.6.1.4.1.3029.1.2" }); GeneratorUtilities.AddKgAlgorithm("CAMELLIA", new object[] { "CAMELLIAWRAP" }); GeneratorUtilities.AddKgAlgorithm("CAMELLIA128", new object[] { NttObjectIdentifiers.IdCamellia128Cbc, NttObjectIdentifiers.IdCamellia128Wrap }); GeneratorUtilities.AddKgAlgorithm("CAMELLIA192", new object[] { NttObjectIdentifiers.IdCamellia192Cbc, NttObjectIdentifiers.IdCamellia192Wrap }); GeneratorUtilities.AddKgAlgorithm("CAMELLIA256", new object[] { NttObjectIdentifiers.IdCamellia256Cbc, NttObjectIdentifiers.IdCamellia256Wrap }); GeneratorUtilities.AddKgAlgorithm("CAST5", new object[] { "1.2.840.113533.7.66.10" }); GeneratorUtilities.AddKgAlgorithm("CAST6", new object[0]); GeneratorUtilities.AddKgAlgorithm("DES", new object[] { OiwObjectIdentifiers.DesCbc, OiwObjectIdentifiers.DesCfb, OiwObjectIdentifiers.DesEcb, OiwObjectIdentifiers.DesOfb }); GeneratorUtilities.AddKgAlgorithm("DESEDE", new object[] { "DESEDEWRAP", "TDEA", OiwObjectIdentifiers.DesEde }); GeneratorUtilities.AddKgAlgorithm("DESEDE3", new object[] { PkcsObjectIdentifiers.DesEde3Cbc, PkcsObjectIdentifiers.IdAlgCms3DesWrap }); GeneratorUtilities.AddKgAlgorithm("GOST28147", new object[] { "GOST", "GOST-28147", CryptoProObjectIdentifiers.GostR28147Cbc }); GeneratorUtilities.AddKgAlgorithm("HC128", new object[0]); GeneratorUtilities.AddKgAlgorithm("HC256", new object[0]); GeneratorUtilities.AddKgAlgorithm("IDEA", new object[] { "1.3.6.1.4.1.188.7.1.1.2" }); GeneratorUtilities.AddKgAlgorithm("NOEKEON", new object[0]); GeneratorUtilities.AddKgAlgorithm("RC2", new object[] { PkcsObjectIdentifiers.RC2Cbc, PkcsObjectIdentifiers.IdAlgCmsRC2Wrap }); GeneratorUtilities.AddKgAlgorithm("RC4", new object[] { "ARC4", "1.2.840.113549.3.4" }); GeneratorUtilities.AddKgAlgorithm("RC5", new object[] { "RC5-32" }); GeneratorUtilities.AddKgAlgorithm("RC5-64", new object[0]); GeneratorUtilities.AddKgAlgorithm("RC6", new object[0]); GeneratorUtilities.AddKgAlgorithm("RIJNDAEL", new object[0]); GeneratorUtilities.AddKgAlgorithm("SALSA20", new object[0]); GeneratorUtilities.AddKgAlgorithm("SEED", new object[] { KisaObjectIdentifiers.IdNpkiAppCmsSeedWrap, KisaObjectIdentifiers.IdSeedCbc }); GeneratorUtilities.AddKgAlgorithm("SERPENT", new object[0]); GeneratorUtilities.AddKgAlgorithm("SKIPJACK", new object[0]); GeneratorUtilities.AddKgAlgorithm("TEA", new object[0]); GeneratorUtilities.AddKgAlgorithm("TWOFISH", new object[0]); GeneratorUtilities.AddKgAlgorithm("VMPC", new object[0]); GeneratorUtilities.AddKgAlgorithm("VMPC-KSA3", new object[0]); GeneratorUtilities.AddKgAlgorithm("XTEA", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("MD2", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("MD4", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("MD5", new object[] { IanaObjectIdentifiers.HmacMD5 }); GeneratorUtilities.AddHMacKeyGenerator("SHA1", new object[] { PkcsObjectIdentifiers.IdHmacWithSha1, IanaObjectIdentifiers.HmacSha1 }); GeneratorUtilities.AddHMacKeyGenerator("SHA224", new object[] { PkcsObjectIdentifiers.IdHmacWithSha224 }); GeneratorUtilities.AddHMacKeyGenerator("SHA256", new object[] { PkcsObjectIdentifiers.IdHmacWithSha256 }); GeneratorUtilities.AddHMacKeyGenerator("SHA384", new object[] { PkcsObjectIdentifiers.IdHmacWithSha384 }); GeneratorUtilities.AddHMacKeyGenerator("SHA512", new object[] { PkcsObjectIdentifiers.IdHmacWithSha512 }); GeneratorUtilities.AddHMacKeyGenerator("SHA512/224", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("SHA512/256", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("SHA3-224", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("SHA3-256", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("SHA3-384", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("SHA3-512", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("RIPEMD128", new object[0]); GeneratorUtilities.AddHMacKeyGenerator("RIPEMD160", new object[] { IanaObjectIdentifiers.HmacRipeMD160 }); GeneratorUtilities.AddHMacKeyGenerator("TIGER", new object[] { IanaObjectIdentifiers.HmacTiger }); GeneratorUtilities.AddKpgAlgorithm("DH", new object[] { "DIFFIEHELLMAN" }); GeneratorUtilities.AddKpgAlgorithm("DSA", new object[0]); GeneratorUtilities.AddKpgAlgorithm("EC", new object[] { X9ObjectIdentifiers.DHSinglePassStdDHSha1KdfScheme }); GeneratorUtilities.AddKpgAlgorithm("ECDH", new object[] { "ECIES" }); GeneratorUtilities.AddKpgAlgorithm("ECDHC", new object[0]); GeneratorUtilities.AddKpgAlgorithm("ECMQV", new object[] { X9ObjectIdentifiers.MqvSinglePassSha1KdfScheme }); GeneratorUtilities.AddKpgAlgorithm("ECDSA", new object[0]); GeneratorUtilities.AddKpgAlgorithm("ECGOST3410", new object[] { "ECGOST-3410", "GOST-3410-2001" }); GeneratorUtilities.AddKpgAlgorithm("ELGAMAL", new object[0]); GeneratorUtilities.AddKpgAlgorithm("GOST3410", new object[] { "GOST-3410", "GOST-3410-94" }); GeneratorUtilities.AddKpgAlgorithm("RSA", new object[] { "1.2.840.113549.1.1.1" }); GeneratorUtilities.AddDefaultKeySizeEntries(64, new string[] { "DES" }); GeneratorUtilities.AddDefaultKeySizeEntries(80, new string[] { "SKIPJACK" }); GeneratorUtilities.AddDefaultKeySizeEntries(128, new string[] { "AES128", "BLOWFISH", "CAMELLIA128", "CAST5", "DESEDE", "HC128", "HMACMD2", "HMACMD4", "HMACMD5", "HMACRIPEMD128", "IDEA", "NOEKEON", "RC2", "RC4", "RC5", "SALSA20", "SEED", "TEA", "XTEA", "VMPC", "VMPC-KSA3" }); GeneratorUtilities.AddDefaultKeySizeEntries(160, new string[] { "HMACRIPEMD160", "HMACSHA1" }); GeneratorUtilities.AddDefaultKeySizeEntries(192, new string[] { "AES", "AES192", "CAMELLIA192", "DESEDE3", "HMACTIGER", "RIJNDAEL", "SERPENT" }); GeneratorUtilities.AddDefaultKeySizeEntries(224, new string[] { "HMACSHA224" }); GeneratorUtilities.AddDefaultKeySizeEntries(256, new string[] { "AES256", "CAMELLIA", "CAMELLIA256", "CAST6", "GOST28147", "HC256", "HMACSHA256", "RC5-64", "RC6", "TWOFISH" }); GeneratorUtilities.AddDefaultKeySizeEntries(384, new string[] { "HMACSHA384" }); GeneratorUtilities.AddDefaultKeySizeEntries(512, new string[] { "HMACSHA512" }); GeneratorUtilities.AddDefaultKeySizeEntries(224, new string[] { "HMACSHA512/224" }); GeneratorUtilities.AddDefaultKeySizeEntries(256, new string[] { "HMACSHA512/256" }); }