org.bouncycastle.crypto.agreement

## Class DHAgreement

- java.lang.Object
- - org.bouncycastle.crypto.agreement.DHAgreement

    public class DHAgreement
    extends java.lang.Object

a Diffie-Hellman key exchange engine.

note: This uses MTI/A0 key agreement in order to make the key agreement secure against passive attacks. If you're doing Diffie-Hellman and both parties have long term public keys you should look at using this. For further information have a look at RFC 2631.

It's possible to extend this to more than two parties as well, for the moment that is left as an exercise for the reader.

### Constructor Summary

Constructors
Constructor and Description
`DHAgreement()`

### Method Summary

Methods
`java.math.BigInteger` `calculateAgreement(DHPublicKeyParameters pub, java.math.BigInteger message)` given a message from a given party and the corresponding public key, calculate the next message in the agreement sequence.
`java.math.BigInteger` `calculateMessage()` calculate our initial message.
`void` `init(CipherParameters param)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### DHAgreement

    public DHAgreement()

### Method Detail

#### init

    public void init(CipherParameters param)

#### calculateMessage

    public java.math.BigInteger calculateMessage()

calculate our initial message.

#### calculateAgreement

    public java.math.BigInteger calculateAgreement(DHPublicKeyParameters pub,
                                          java.math.BigInteger message)

given a message from a given party and the corresponding public key, calculate the next message in the agreement sequence. In this case this will represent the shared secret.