public Message respond() {
// Extract shared key from the encrypted message;
PrivateKey key = ChatterContext.get(getCk().getA(),
PublicKeyRequest.PRIVATE_KEY);
try {
Cipher elgamal = new ElgamalCipher();
elgamal.init(Cipher.DECRYPT_MODE, key);
elgamal.update(encryptedKey);
byte[] sharedKey = elgamal.doFinal();
ChatterContext.put(getCk().getA(), SHARED_KEY, sharedKey);
return new ExchSharedKeyResponse(getTo(), getFrom());
} catch (Exception e) {
throw new RuntimeException(e);
}