Bouncy Castle Cryptography Library 1.87

org.bouncycastle.crypto.kems
Class SM9KEMExtractor

java.lang.Object
  extended byorg.bouncycastle.crypto.kems.SM9KEMExtractor
All Implemented Interfaces:
EncapsulatedSecretExtractor

public class SM9KEMExtractor
extends java.lang.Object
implements EncapsulatedSecretExtractor

SM9 key encapsulation mechanism - decapsulation side (GM/T 0044.4-2016, clause 6). Recovers the shared key K from the encapsulation C using the user's private key de: w' = e(C, de), K = KDF(C || w' || ID, klen).

Usage warning: an identity's encryption key should be used for this mechanism or for public-key encryption (SM9Engine), but not for both. Where a deployment needs both functions for one identity, the KGC publishes a separate hid for each - as it already does for the key exchange - so that the two user keys are distinct. That is the arrangement the exchange-versus-KEM separation the constructor requires below already follows. The constructor also refuses a key declared for decryption, and one that has been used for it - see SM9EncPrivateKeyParameters.recordUsage(int).


Constructor Summary
SM9KEMExtractor(SM9EncPrivateKeyParameters key, int keyLenBits)
           
 
Method Summary
 byte[] extractSecret(byte[] encapsulation)
          Extract the secret based on the recipient private key.
 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

SM9KEMExtractor

public SM9KEMExtractor(SM9EncPrivateKeyParameters key,
                       int keyLenBits)
Method Detail

extractSecret

public byte[] extractSecret(byte[] encapsulation)
Description copied from interface: EncapsulatedSecretExtractor
Extract the secret based on the recipient private key.

Specified by:
extractSecret in interface EncapsulatedSecretExtractor
Parameters:
encapsulation - the encapsulated secret.

getEncapsulationLength

public int getEncapsulationLength()
Description copied from interface: EncapsulatedSecretExtractor
Return the length in bytes of the encapsulation.

Specified by:
getEncapsulationLength in interface EncapsulatedSecretExtractor
Returns:
length in bytes of an encapsulation for this parameter set.

Bouncy Castle Cryptography Library 1.87