Class SAKKEKEMExtractor

  • All Implemented Interfaces:
    EncapsulatedSecretExtractor

    public class SAKKEKEMExtractor
    extends java.lang.Object
    implements EncapsulatedSecretExtractor
    Implements the receiver side of the SAKKE (Sakai-Kasahara Key Encryption) protocol as defined in RFC 6508. This class extracts the shared secret value (SSV) from encapsulated data using the receiver's private key.

    The extraction process follows these steps (RFC 6508, Section 6.2.2):

    1. Parse encapsulated data into R_(b,S) and H
    2. Compute pairing result w = <R_(b,S), K_(b,S)>
    3. Recover SSV via SSV = H XOR HashToIntegerRange(w, 2^n)
    4. Validate R_(b,S) by recomputing it with derived parameters

    See Also:
    Sakai-Kasahara Key Encryption (SAKKE)
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      byte[] extractSecret​(byte[] encapsulation)
      Extracts the shared secret value (SSV) from encapsulated data as per RFC 6508.
      int getEncapsulationLength()
      Return the length in bytes of the encapsulation.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SAKKEKEMExtractor

        public SAKKEKEMExtractor​(SAKKEPrivateKeyParameters privateKey)
        Initializes the extractor with cryptographic parameters from the receiver's private key.
        Parameters:
        privateKey - The receiver's private key containing public parameters (curve, prime, generator, etc.) and the Receiver Secret Key (RSK). Must not be null.
    • Method Detail

      • extractSecret

        public byte[] extractSecret​(byte[] encapsulation)
        Extracts the shared secret value (SSV) from encapsulated data as per RFC 6508.
        Specified by:
        extractSecret in interface EncapsulatedSecretExtractor
        Parameters:
        encapsulation - The encapsulated data containing:
        • R_(b,S): Elliptic curve point (uncompressed format, 257 bytes)
        • H: Integer value (n/8 bytes)
        Returns:
        The extracted SSV as a byte array.
        Throws:
        java.lang.IllegalStateException - If: Validation of R_(b,S) fails