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

org.bouncycastle.crypto.params

## Class SAKKEPrivateKeyParameters

- java.lang.Object
- - org.bouncycastle.crypto.params.AsymmetricKeyParameter
  - - org.bouncycastle.crypto.params.SAKKEPrivateKeyParameters

- All Implemented Interfaces:
    CipherParameters

      public class SAKKEPrivateKeyParameters
      extends AsymmetricKeyParameter

  Represents a private key for the Sakai-Kasahara Key Encryption (SAKKE) scheme, as defined in RFC 6508.

  SAKKE is an identity-based public key encryption scheme designed for one-pass key establishment. It is used in MIKEY-SAKKE for secure communication key distribution.

  This class generates and manages a SAKKE private key, which consists of a randomly generated scalar `z`. The corresponding public key is computed as `Z = [z]P`, where `P` is a publicly known generator point on the elliptic curve.

  The private key is used to derive the master secret in the key exchange process.

  See Also:
    RFC 6508: Sakai-Kasahara Key Encryption (SAKKE)

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SAKKEPrivateKeyParameters(java.math.BigInteger z, SAKKEPublicKeyParameters publicParams)` Constructs a SAKKE private key with a given private value and associated public parameters.
    `SAKKEPrivateKeyParameters(java.security.SecureRandom random)` Generates a random SAKKE private key and its corresponding public key.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.math.BigInteger` | `getMasterSecret()` Retrieves the private key scalar (master secret).
    `SAKKEPublicKeyParameters` | `getPublicParams()` Retrieves the public key parameters associated with this private key.

    - ### Methods inherited from class org.bouncycastle.crypto.params.AsymmetricKeyParameter

      `isPrivate`

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

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

- - ### Constructor Detail

    - #### SAKKEPrivateKeyParameters

          public SAKKEPrivateKeyParameters(java.math.BigInteger z,
                                           SAKKEPublicKeyParameters publicParams)

      Constructs a SAKKE private key with a given private value and associated public parameters.
      Parameters:
        `z` - The private key scalar.
        `publicParams` - The associated public key parameters.

    - #### SAKKEPrivateKeyParameters

          public SAKKEPrivateKeyParameters(java.security.SecureRandom random)

      Generates a random SAKKE private key and its corresponding public key.

      The private key scalar `z` is chosen randomly in the range [2, q-1], where `q` is the order of the subgroup. The public key is computed as `Z = [z]P`, where `P` is the public generator.

      Parameters:
        `random` - A cryptographic random number generator.

  - ### Method Detail

    - #### getPublicParams

          public SAKKEPublicKeyParameters getPublicParams()

      Retrieves the public key parameters associated with this private key.
      Returns:
        The corresponding SAKKE public key parameters.

    - #### getMasterSecret

          public java.math.BigInteger getMasterSecret()

      Retrieves the private key scalar (master secret).
      Returns:
        The private key scalar `z`.