Package org.bouncycastle.jcajce.provider.asymmetric.edec

## Class KeyAgreementSpi

- java.lang.Object
- - javax.crypto.KeyAgreementSpi
  - - org.bouncycastle.jcajce.provider.asymmetric.util.BaseAgreementSpi
    - - org.bouncycastle.jcajce.provider.asymmetric.edec.KeyAgreementSpi

- Direct Known Subclasses:
    `KeyAgreementSpi.X25519`, `KeyAgreementSpi.X25519UwithSHA256CKDF`, `KeyAgreementSpi.X25519UwithSHA256KDF`, `KeyAgreementSpi.X25519withSHA256CKDF`, `KeyAgreementSpi.X25519withSHA256KDF`, `KeyAgreementSpi.X25519withSHA384CKDF`, `KeyAgreementSpi.X25519withSHA512CKDF`, `KeyAgreementSpi.X448`, `KeyAgreementSpi.X448UwithSHA512CKDF`, `KeyAgreementSpi.X448UwithSHA512KDF`, `KeyAgreementSpi.X448withSHA256CKDF`, `KeyAgreementSpi.X448withSHA384CKDF`, `KeyAgreementSpi.X448withSHA512CKDF`, `KeyAgreementSpi.X448withSHA512KDF`, `KeyAgreementSpi.XDH`

      public class KeyAgreementSpi
      extends BaseAgreementSpi

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `KeyAgreementSpi.X25519` |
    `static class` | `KeyAgreementSpi.X25519UwithSHA256CKDF` |
    `static class` | `KeyAgreementSpi.X25519UwithSHA256KDF` |
    `static class` | `KeyAgreementSpi.X25519withSHA256CKDF` |
    `static class` | `KeyAgreementSpi.X25519withSHA256KDF` |
    `static class` | `KeyAgreementSpi.X25519withSHA384CKDF` |
    `static class` | `KeyAgreementSpi.X25519withSHA512CKDF` |
    `static class` | `KeyAgreementSpi.X448` |
    `static class` | `KeyAgreementSpi.X448UwithSHA512CKDF` |
    `static class` | `KeyAgreementSpi.X448UwithSHA512KDF` |
    `static class` | `KeyAgreementSpi.X448withSHA256CKDF` |
    `static class` | `KeyAgreementSpi.X448withSHA384CKDF` |
    `static class` | `KeyAgreementSpi.X448withSHA512CKDF` |
    `static class` | `KeyAgreementSpi.X448withSHA512KDF` |
    `static class` | `KeyAgreementSpi.XDH` |

  - ### Field Summary

    - ### Fields inherited from class org.bouncycastle.jcajce.provider.asymmetric.util.BaseAgreementSpi

      `kaAlgorithm, kdf, ukmParameters`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected byte[]` | `calcSecret()` |
    `protected java.security.Key` | `engineDoPhase​(java.security.Key key, boolean lastPhase)` |
    `protected void` | `engineInit​(java.security.Key key, java.security.SecureRandom secureRandom)` |
    `protected void` | `engineInit​(java.security.Key key, java.security.spec.AlgorithmParameterSpec params, java.security.SecureRandom secureRandom)` |

    - ### Methods inherited from class org.bouncycastle.jcajce.provider.asymmetric.util.BaseAgreementSpi

      `engineGenerateSecret, engineGenerateSecret, engineGenerateSecret, getAlgorithm, getKeySize, trimZeroes`

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

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

- - ### Method Detail

    - #### calcSecret

          protected byte[] calcSecret()

      Specified by:
        `calcSecret` in class `BaseAgreementSpi`

    - #### engineInit

          protected void engineInit​(java.security.Key key,
                                    java.security.SecureRandom secureRandom)
                             throws java.security.InvalidKeyException

      Specified by:
        `engineInit` in class `javax.crypto.KeyAgreementSpi`
      Throws:
        `java.security.InvalidKeyException`

    - #### engineInit

          protected void engineInit​(java.security.Key key,
                                    java.security.spec.AlgorithmParameterSpec params,
                                    java.security.SecureRandom secureRandom)
                             throws java.security.InvalidKeyException,
                                    java.security.InvalidAlgorithmParameterException

      Specified by:
        `engineInit` in class `javax.crypto.KeyAgreementSpi`
      Throws:
        `java.security.InvalidKeyException`
        `java.security.InvalidAlgorithmParameterException`

    - #### engineDoPhase

          protected java.security.Key engineDoPhase​(java.security.Key key,
                                                    boolean lastPhase)
                                             throws java.security.InvalidKeyException,
                                                    java.lang.IllegalStateException

      Specified by:
        `engineDoPhase` in class `javax.crypto.KeyAgreementSpi`
      Throws:
        `java.security.InvalidKeyException`
        `java.lang.IllegalStateException`