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

org.bouncycastle.crypto.agreement

## Class ECDHBasicAgreement

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

- All Implemented Interfaces:
    BasicAgreement

      public class ECDHBasicAgreement
      extends java.lang.Object
      implements BasicAgreement

  P1363 7.2.1 ECSVDP-DH ECSVDP-DH is Elliptic Curve Secret Value Derivation Primitive, Diffie-Hellman version. It is based on the work of [DH76], [Mil86], and [Kob87]. This primitive derives a shared secret value from one party's private key and another party's public key, where both have the same set of EC domain parameters. If two parties correctly execute this primitive, they will produce the same output. This primitive can be invoked by a scheme to derive a shared secret key; specifically, it may be used with the schemes ECKAS-DH1 and DL/ECKAS-DH2. It assumes that the input keys are valid (see also Section 7.2.2).

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ECDHBasicAgreement()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.math.BigInteger` | `calculateAgreement(CipherParameters pubKey)` given a public key from a given party calculate the next message in the agreement sequence.
    `int` | `getFieldSize()` return the field size for the agreement algorithm in bytes.
    `void` | `init(CipherParameters key)` initialise the agreement engine.

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

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

- - ### Constructor Detail

    - #### ECDHBasicAgreement

          public ECDHBasicAgreement()

  - ### Method Detail

    - #### init

          public void init(CipherParameters key)

      Description copied from interface: `BasicAgreement`
      initialise the agreement engine.
      Specified by:
        `init` in interface `BasicAgreement`

    - #### getFieldSize

          public int getFieldSize()

      Description copied from interface: `BasicAgreement`
      return the field size for the agreement algorithm in bytes.
      Specified by:
        `getFieldSize` in interface `BasicAgreement`

    - #### calculateAgreement

          public java.math.BigInteger calculateAgreement(CipherParameters pubKey)

      Description copied from interface: `BasicAgreement`
      given a public key from a given party calculate the next message in the agreement sequence.
      Specified by:
        `calculateAgreement` in interface `BasicAgreement`