/** * 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); } }
public override void PerformTest() { DesKeyGenerator keyGen = new DesKeyGenerator(); keyGen.Init(new KeyGenerationParameters(new SecureRandom(), 56)); byte[] kB = keyGen.GenerateKey(); if (kB.Length != 8) { Fail("DES bit key wrong length."); } }