DHAgreement (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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.