1
package org.bouncycastle.jce.provider;
3
import java.security.InvalidKeyException;
4
import java.security.PrivateKey;
5
import java.security.PublicKey;
7
import javax.crypto.interfaces.DHPrivateKey;
8
import javax.crypto.interfaces.DHPublicKey;
10
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
11
import org.bouncycastle.crypto.params.ElGamalParameters;
12
import org.bouncycastle.crypto.params.ElGamalPrivateKeyParameters;
13
import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters;
14
import org.bouncycastle.jce.interfaces.ElGamalPrivateKey;
15
import org.bouncycastle.jce.interfaces.ElGamalPublicKey;
18
* utility class for converting jce/jca ElGamal objects
19
* objects into their org.bouncycastle.crypto counterparts.
21
public class ElGamalUtil
23
static public AsymmetricKeyParameter generatePublicKeyParameter(
25
throws InvalidKeyException
27
if (key instanceof ElGamalPublicKey)
29
ElGamalPublicKey k = (ElGamalPublicKey)key;
31
return new ElGamalPublicKeyParameters(k.getY(),
32
new ElGamalParameters(k.getParameters().getP(), k.getParameters().getG()));
34
else if (key instanceof DHPublicKey)
36
DHPublicKey k = (DHPublicKey)key;
38
return new ElGamalPublicKeyParameters(k.getY(),
39
new ElGamalParameters(k.getParams().getP(), k.getParams().getG()));
42
throw new InvalidKeyException("can't identify public key for El Gamal.");
45
static public AsymmetricKeyParameter generatePrivateKeyParameter(
47
throws InvalidKeyException
49
if (key instanceof ElGamalPrivateKey)
51
ElGamalPrivateKey k = (ElGamalPrivateKey)key;
53
return new ElGamalPrivateKeyParameters(k.getX(),
54
new ElGamalParameters(k.getParameters().getP(), k.getParameters().getG()));
56
else if (key instanceof DHPrivateKey)
58
DHPrivateKey k = (DHPrivateKey)key;
60
return new ElGamalPrivateKeyParameters(k.getX(),
61
new ElGamalParameters(k.getParams().getP(), k.getParams().getG()));
64
throw new InvalidKeyException("can't identify private key for El Gamal.");