/**
  * 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);
     }
 }
Example #2
0
        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.");
            }
        }