Package org.bouncycastle.crypto.kems
Class SAKKEKEMSGenerator
java.lang.Object
org.bouncycastle.crypto.kems.SAKKEKEMSGenerator
- All Implemented Interfaces:
EncapsulatedSecretGenerator
This class implements the SAKKE (Sakai-Kasahara Key Encryption) Key Encapsulation Mechanism
as defined in RFC 6508. It generates an encapsulated shared secret value (SSV) using
Identity-Based Encryption (IBE) for secure transmission from a Sender to a Receiver.
The algorithm follows these steps (as per RFC 6508, Section 6.2.1):
- Generate a random SSV in the range [0, 2^n - 1].
- Compute r = HashToIntegerRange(SSV || b, q).
- Compute R_(b,S) = [r]([b]P + Z_S) on the elliptic curve.
- Compute H = SSV XOR HashToIntegerRange(g^r, 2^n).
- Encode the encapsulated data (R_(b,S), H).
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionSAKKEKEMSGenerator
(SecureRandom random) Constructs a SAKKEKEMSGenerator with the specified source of randomness. -
Method Summary
Modifier and TypeMethodDescriptiongenerateEncapsulated
(AsymmetricKeyParameter recipientKey) Generates an encapsulated shared secret value (SSV) using the recipient's public key parameters as specified in RFC 6508, Section 6.2.1.
-
Constructor Details
-
SAKKEKEMSGenerator
Constructs a SAKKEKEMSGenerator with the specified source of randomness.- Parameters:
random
- aSecureRandom
instance for generating cryptographically secure random values. Must not benull
.
-
-
Method Details
-
generateEncapsulated
Generates an encapsulated shared secret value (SSV) using the recipient's public key parameters as specified in RFC 6508, Section 6.2.1.This method performs the following operations:
- Derives cryptographic parameters from the recipient's public key.
- Generates a random SSV and computes the encapsulation components (R_(b,S), H).
- Encodes the encapsulated data as specified in RFC 6508, Section 4.
- Specified by:
generateEncapsulated
in interfaceEncapsulatedSecretGenerator
- Parameters:
recipientKey
- the recipient's public key parameters. Must be an instance ofSAKKEPublicKeyParameters
. Must not benull
.- Returns:
- a
SecretWithEncapsulation
containing the SSV and the encapsulated data.
-