1    package org.bouncycastle.crypto;
2    
3    import java.security.SecureRandom;
4    
5    /**
6     * The base class for symmetric, or secret, cipher key generators.
7     */
8    public class CipherKeyGenerator
9    {
10       protected SecureRandom  random;
11       protected int           strength;
12   
13       /**
14        * initialise the key generator.
15        *
16        * @param param the parameters to be used for key generation
17        */
18       public void init(
19           KeyGenerationParameters param)
20       {
21           this.random = param.getRandom();
22           this.strength = (param.getStrength() + 7) / 8;
23       }
24   
25       /**
26        * generate a secret key.
27        *
28        * @return a byte array containing the key value.
29        */
30       public byte[] generateKey()
31       {
32           byte[]  key = new byte[strength];
33   
34           random.nextBytes(key);
35   
36           return key;
37       }
38   }
39