123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Kisa;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Nist;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ntt;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Oiw;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Generators;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities
- {
- public class CipherKeyGeneratorFactory
- {
- private CipherKeyGeneratorFactory()
- {
- }
- /**
- * Create a key generator for the passed in Object Identifier.
- *
- * @param algorithm the Object Identifier indicating the algorithn the generator is for.
- * @param random a source of random to initialise the generator with.
- * @return an initialised CipherKeyGenerator.
- * @throws IllegalArgumentException if the algorithm cannot be identified.
- */
- public static CipherKeyGenerator CreateKeyGenerator(DerObjectIdentifier algorithm, SecureRandom random)
- {
- if (NistObjectIdentifiers.IdAes128Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 128);
- }
- else if (NistObjectIdentifiers.IdAes192Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 192);
- }
- else if (NistObjectIdentifiers.IdAes256Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 256);
- }
- else if (PkcsObjectIdentifiers.DesEde3Cbc.Equals(algorithm))
- {
- DesEdeKeyGenerator keyGen = new DesEdeKeyGenerator();
- keyGen.Init(new KeyGenerationParameters(random, 192));
- return keyGen;
- }
- else if (NttObjectIdentifiers.IdCamellia128Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 128);
- }
- else if (NttObjectIdentifiers.IdCamellia192Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 192);
- }
- else if (NttObjectIdentifiers.IdCamellia256Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 256);
- }
- else if (KisaObjectIdentifiers.IdSeedCbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 128);
- }
- else if (AlgorithmIdentifierFactory.CAST5_CBC.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 128);
- }
- else if (OiwObjectIdentifiers.DesCbc.Equals(algorithm))
- {
- DesKeyGenerator keyGen = new DesKeyGenerator();
- keyGen.Init(new KeyGenerationParameters(random, 64));
- return keyGen;
- }
- else if (PkcsObjectIdentifiers.rc4.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 128);
- }
- else if (PkcsObjectIdentifiers.RC2Cbc.Equals(algorithm))
- {
- return CreateCipherKeyGenerator(random, 128);
- }
- else
- {
- throw new InvalidOperationException("cannot recognise cipher: " + algorithm);
- }
- }
- private static CipherKeyGenerator CreateCipherKeyGenerator(SecureRandom random, int keySize)
- {
- CipherKeyGenerator keyGen = new CipherKeyGenerator();
- keyGen.Init(new KeyGenerationParameters(random, keySize));
- return keyGen;
- }
- }
- }
- #pragma warning restore
- #endif
|