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