Hello friends,
I want to implement the ECDH key exchange algorithm. I have the code but i am getting the error as class or interface expected. please help me.
which packages i need to add and how to add new package.
code is:
package sun.security.ss l;
package sun.security.ss l.JsseJce;
import java.security.* ;
// import java.security.i nterfaces.ECPub licKey;
import java.security.i nterfaces;
import java.security.s pec.*;
import javax.crypto.Se cretKey;
import javax.crypto.Ke yAgreement;
import javax.crypto.sp ec.*;
import java.lang.*;
import java.lang.Objec t;
/**
* Helper class for the ECDH key exchange. It generates the appropriate
* ephemeral keys as necessary and performs the actual shared secret derivation.
*
* @version 1.7, 05/05/07
* @since 1.6
* @author Andreas Sterbenz
*/
final class ECDHCrypt {
// our private key
private PrivateKey privateKey;
// our public key
private ECPublicKey publicKey;
// Called by ServerHandshake r for static ECDH
ECDHCrypt(Priva teKey privateKey, PublicKey publicKey) {
this .privateKey = privateKey;
this .publicKey = (ECPublicKey) publicKey;
}
// Called by ServerHandshake r for ephemeral ECDH
ECDHCrypt(Strin g curveName, SecureRandom random) {
try {
KeyPairGenerato r kpg = jsseJce.getKeyP airGenerator("E C");
ECGenParameterS pec params = new ECGenParameterS pec(
curveName);
kpg.initialize( params, random);
KeyPair kp = kpg.generateKey Pair();
privateKey = kp.getPrivate() ;
publicKey = (ECPublicKey) kp.getPublic();
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate DH keypair",
e);
}
}
// Called by ClientHandshake r with params it received from the server
ECDHCrypt(ECPar ameterSpec params, SecureRandom random) {
try {
KeyPairGenerato r kpg = JsseJce.getKeyP airGenerator("E C");
kpg.initialize( params, random);
KeyPair kp = kpg.generateKey Pair();
privateKey = kp.getPrivate() ;
publicKey = (ECPublicKey) kp.getPublic();
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate DH keypair",
e);
}
}
/**
* Gets the public key of this end of the key exchange.
*/
PublicKey getPublicKey() {
return publicKey;
}
// called by ClientHandshake r with either the server's static or ephemeral public key
SecretKey getAgreedSecret (PublicKey peerPublicKey) {
try {
KeyAgreement ka = JsseJce.getKeyA greement("ECDH" );
ka.init(private Key);
ka.doPhase(peer PublicKey, true);
return ka.generateSecr et("TlsPremaste rSecret");
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate secret", e);
}
}
// called by ServerHandshake r
SecretKey getAgreedSecret (byte[] encodedPoint) {
try {
ECParameterSpec params = publicKey.getPa rams();
ECPoint point = JsseJce.decodeP oint(encodedPoi nt, params
.getCurve());
KeyFactory kf = JsseJce.getKeyF actory("EC");
ECPublicKeySpec spec = new ECPublicKeySpec (point, params);
PublicKey peerPublicKey = kf.generatePubl ic(spec);
return getAgreedSecret (peerPublicKey) ;
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate secret", e);
} catch (java.io.IOExce ption e) {
throw new RuntimeExceptio n("Could not generate secret", e);
}
}
}
I want to implement the ECDH key exchange algorithm. I have the code but i am getting the error as class or interface expected. please help me.
which packages i need to add and how to add new package.
code is:
package sun.security.ss l;
package sun.security.ss l.JsseJce;
import java.security.* ;
// import java.security.i nterfaces.ECPub licKey;
import java.security.i nterfaces;
import java.security.s pec.*;
import javax.crypto.Se cretKey;
import javax.crypto.Ke yAgreement;
import javax.crypto.sp ec.*;
import java.lang.*;
import java.lang.Objec t;
/**
* Helper class for the ECDH key exchange. It generates the appropriate
* ephemeral keys as necessary and performs the actual shared secret derivation.
*
* @version 1.7, 05/05/07
* @since 1.6
* @author Andreas Sterbenz
*/
final class ECDHCrypt {
// our private key
private PrivateKey privateKey;
// our public key
private ECPublicKey publicKey;
// Called by ServerHandshake r for static ECDH
ECDHCrypt(Priva teKey privateKey, PublicKey publicKey) {
this .privateKey = privateKey;
this .publicKey = (ECPublicKey) publicKey;
}
// Called by ServerHandshake r for ephemeral ECDH
ECDHCrypt(Strin g curveName, SecureRandom random) {
try {
KeyPairGenerato r kpg = jsseJce.getKeyP airGenerator("E C");
ECGenParameterS pec params = new ECGenParameterS pec(
curveName);
kpg.initialize( params, random);
KeyPair kp = kpg.generateKey Pair();
privateKey = kp.getPrivate() ;
publicKey = (ECPublicKey) kp.getPublic();
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate DH keypair",
e);
}
}
// Called by ClientHandshake r with params it received from the server
ECDHCrypt(ECPar ameterSpec params, SecureRandom random) {
try {
KeyPairGenerato r kpg = JsseJce.getKeyP airGenerator("E C");
kpg.initialize( params, random);
KeyPair kp = kpg.generateKey Pair();
privateKey = kp.getPrivate() ;
publicKey = (ECPublicKey) kp.getPublic();
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate DH keypair",
e);
}
}
/**
* Gets the public key of this end of the key exchange.
*/
PublicKey getPublicKey() {
return publicKey;
}
// called by ClientHandshake r with either the server's static or ephemeral public key
SecretKey getAgreedSecret (PublicKey peerPublicKey) {
try {
KeyAgreement ka = JsseJce.getKeyA greement("ECDH" );
ka.init(private Key);
ka.doPhase(peer PublicKey, true);
return ka.generateSecr et("TlsPremaste rSecret");
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate secret", e);
}
}
// called by ServerHandshake r
SecretKey getAgreedSecret (byte[] encodedPoint) {
try {
ECParameterSpec params = publicKey.getPa rams();
ECPoint point = JsseJce.decodeP oint(encodedPoi nt, params
.getCurve());
KeyFactory kf = JsseJce.getKeyF actory("EC");
ECPublicKeySpec spec = new ECPublicKeySpec (point, params);
PublicKey peerPublicKey = kf.generatePubl ic(spec);
return getAgreedSecret (peerPublicKey) ;
} catch (GeneralSecurit yException e) {
throw new RuntimeExceptio n("Could not generate secret", e);
} catch (java.io.IOExce ption e) {
throw new RuntimeExceptio n("Could not generate secret", e);
}
}
}