DHUtil.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.jce.provider;
2
3import java.security.InvalidKeyException;
4import java.security.PrivateKey;
5import java.security.PublicKey;
6
7import javax.crypto.interfaces.DHPrivateKey;
8import javax.crypto.interfaces.DHPublicKey;
9
10import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
11import org.bouncycastle.crypto.params.DHParameters;
12import org.bouncycastle.crypto.params.DHPrivateKeyParameters;
13import org.bouncycastle.crypto.params.DHPublicKeyParameters;
14
15/**
16 * utility class for converting jce/jca DH objects
17 * objects into their org.bouncycastle.crypto counterparts.
18 */
19public class DHUtil
20{
21    static public AsymmetricKeyParameter generatePublicKeyParameter(
22        PublicKey    key)
23        throws InvalidKeyException
24    {
25        if (key instanceof DHPublicKey)
26        {
27            DHPublicKey    k = (DHPublicKey)key;
28
29            return new DHPublicKeyParameters(k.getY(),
30                new DHParameters(k.getParams().getP(), k.getParams().getG(), null, k.getParams().getL()));
31        }
32
33        throw new InvalidKeyException("can't identify DH public key.");
34    }
35
36    static public AsymmetricKeyParameter generatePrivateKeyParameter(
37        PrivateKey    key)
38        throws InvalidKeyException
39    {
40        if (key instanceof DHPrivateKey)
41        {
42            DHPrivateKey    k = (DHPrivateKey)key;
43
44            return new DHPrivateKeyParameters(k.getX(),
45                new DHParameters(k.getParams().getP(), k.getParams().getG(), null, k.getParams().getL()));
46        }
47
48        throw new InvalidKeyException("can't identify DH private key.");
49    }
50}
51