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

org.bouncycastle.crypto.agreement

## Class ECDHCBasicAgreement

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

- All Implemented Interfaces:
    BasicAgreement

      public class ECDHCBasicAgreement
      extends java.lang.Object
      implements BasicAgreement

  P1363 7.2.2 ECSVDP-DHC ECSVDP-DHC is Elliptic Curve Secret Value Derivation Primitive, Diffie-Hellman version with cofactor multiplication. It is based on the work of [DH76], [Mil86], [Kob87], [LMQ98] and [Kal98a]. 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 does not assume the validity of the input public key (see also Section 7.2.1).

  Note: As stated P1363 compatibility mode with ECDH can be preset, and in this case the implementation doesn't have a ECDH compatibility mode (if you want that just use ECDHBasicAgreement and note they both implement BasicAgreement!).

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ECDHCBasicAgreement()`

  - ### 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

    - #### ECDHCBasicAgreement

          public ECDHCBasicAgreement()

  - ### 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`