1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.security.SecureRandom;
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/**
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * The base class for parameters to key generators.
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class KeyGenerationParameters
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private SecureRandom    random;
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    private int             strength;
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * initialise the generator with a source of randomness
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * and a strength (in bits).
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     *
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @param random the random byte source.
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @param strength the size, in bits, of the keys we want to produce.
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public KeyGenerationParameters(
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        SecureRandom    random,
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        int             strength)
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.random = random;
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.strength = strength;
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * return the random source associated with this
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * generator.
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     *
32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @return the generators random source.
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public SecureRandom getRandom()
35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return random;
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * return the bit strength for keys produced by this generator,
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     *
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * @return the strength of the keys this generator produces (in bits).
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public int getStrength()
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return strength;
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
49