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