}
else if (suite.getKeyExchange() == "DHE")
{
serverKA = KeyAgreementFactory.getPartyAInstance(Registry.DH_KA);
Map attr = new HashMap();
GnuDHPrivateKey servParams = DiffieHellman.getParams();
attr.put(DiffieHellmanKeyAgreement.KA_DIFFIE_HELLMAN_OWNER_PRIVATE_KEY,
servParams);
attr.put(DiffieHellmanKeyAgreement.SOURCE_OF_RANDOMNESS,
session.random);
BigInteger serv_y = null;
try
{
serverKA.init(attr);
out = serverKA.processMessage(null);
in = new IncomingMessage(out.toByteArray());
serv_y = in.readMPI();
}
catch (KeyAgreementException kae)
{
if (DEBUG_KEY_EXCHANGE)
{
logger.log (Component.SSL_KEY_EXCHANGE, "DHE exception", kae);
}
internalError();
RuntimeException re = new RuntimeException (kae.getMessage());
re.initCause (kae);
throw re;
}
GnuDHPublicKey pubkey =
new GnuDHPublicKey(null, servParams.getParams().getP(),
servParams.getParams().getG(), serv_y);
Signature s = null;
if (suite.getSignature() != "anon")
{
ISignature sig = null;
if (suite.getSignature() == "RSA")