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 }