1package org.bouncycastle.jcajce.provider.asymmetric.util; 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; 14import org.bouncycastle.jcajce.provider.asymmetric.dh.BCDHPublicKey; 15 16/** 17 * utility class for converting jce/jca DH objects 18 * objects into their org.bouncycastle.crypto counterparts. 19 */ 20public class DHUtil 21{ 22 static public AsymmetricKeyParameter generatePublicKeyParameter( 23 PublicKey key) 24 throws InvalidKeyException 25 { 26 if (key instanceof BCDHPublicKey) 27 { 28 return ((BCDHPublicKey)key).engineGetKeyParameters(); 29 } 30 if (key instanceof DHPublicKey) 31 { 32 DHPublicKey k = (DHPublicKey)key; 33 34 return new DHPublicKeyParameters(k.getY(), 35 new DHParameters(k.getParams().getP(), k.getParams().getG(), null, k.getParams().getL())); 36 } 37 38 throw new InvalidKeyException("can't identify DH public key."); 39 } 40 41 static public AsymmetricKeyParameter generatePrivateKeyParameter( 42 PrivateKey key) 43 throws InvalidKeyException 44 { 45 if (key instanceof DHPrivateKey) 46 { 47 DHPrivateKey k = (DHPrivateKey)key; 48 49 return new DHPrivateKeyParameters(k.getX(), 50 new DHParameters(k.getParams().getP(), k.getParams().getG(), null, k.getParams().getL())); 51 } 52 53 throw new InvalidKeyException("can't identify DH private key."); 54 } 55} 56