blob: 12d2b85165a69348b7e5f0a929a1bf6d79134168 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
package org.bouncycastle.jcajce.provider.symmetric.util;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidParameterException;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
import javax.crypto.KeyGeneratorSpi;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.crypto.CipherKeyGenerator;
import org.bouncycastle.crypto.KeyGenerationParameters;
public class BaseKeyGenerator
extends KeyGeneratorSpi
{
protected String algName;
protected int keySize;
protected int defaultKeySize;
protected CipherKeyGenerator engine;
protected boolean uninitialised = true;
protected BaseKeyGenerator(
String algName,
int defaultKeySize,
CipherKeyGenerator engine)
{
this.algName = algName;
this.keySize = this.defaultKeySize = defaultKeySize;
this.engine = engine;
}
protected void engineInit(
AlgorithmParameterSpec params,
SecureRandom random)
throws InvalidAlgorithmParameterException
{
throw new InvalidAlgorithmParameterException("Not Implemented");
}
protected void engineInit(
SecureRandom random)
{
if (random != null)
{
engine.init(new KeyGenerationParameters(random, defaultKeySize));
uninitialised = false;
}
}
protected void engineInit(
int keySize,
SecureRandom random)
{
try
{
if (random == null)
{
random = new SecureRandom();
}
engine.init(new KeyGenerationParameters(random, keySize));
uninitialised = false;
}
catch (IllegalArgumentException e)
{
throw new InvalidParameterException(e.getMessage());
}
}
protected SecretKey engineGenerateKey()
{
if (uninitialised)
{
engine.init(new KeyGenerationParameters(new SecureRandom(), defaultKeySize));
uninitialised = false;
}
return new SecretKeySpec(engine.generateKey(), algName);
}
}
|