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