Class NTRUPlusKEMExtractor
- java.lang.Object
-
- org.bouncycastle.pqc.crypto.ntruplus.NTRUPlusKEMExtractor
-
- All Implemented Interfaces:
EncapsulatedSecretExtractor
public class NTRUPlusKEMExtractor extends java.lang.Object implements EncapsulatedSecretExtractor
NTRU+ decapsulation.Not thread safe. The NTRUPlusEngine built here keeps one SHAKE instance in a field, so two threads sharing an extractor interleave its absorb and squeeze phases: the secrets they recover do not match the sender's, and an IllegalStateException from the digest is also possible. Give each thread its own extractor - construction is cheap, roughly a thousandth of a decapsulation. The KEM.Decapsulator that javax.crypto.KEM builds does exactly that, since that API requires decapsulate to be safe for concurrent use.
-
-
Constructor Summary
Constructors Constructor Description NTRUPlusKEMExtractor(NTRUPlusPrivateKeyParameters privateKey)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]extractSecret(byte[] encapsulation)Extract the secret based on the recipient private key.intgetEncapsulationLength()Return the length in bytes of the encapsulation.
-
-
-
Constructor Detail
-
NTRUPlusKEMExtractor
public NTRUPlusKEMExtractor(NTRUPlusPrivateKeyParameters privateKey)
-
-
Method Detail
-
extractSecret
public byte[] extractSecret(byte[] encapsulation)
Description copied from interface:EncapsulatedSecretExtractorExtract the secret based on the recipient private key.- Specified by:
extractSecretin interfaceEncapsulatedSecretExtractor- Parameters:
encapsulation- the encapsulated secret.
-
getEncapsulationLength
public int getEncapsulationLength()
Description copied from interface:EncapsulatedSecretExtractorReturn the length in bytes of the encapsulation.- Specified by:
getEncapsulationLengthin interfaceEncapsulatedSecretExtractor- Returns:
- length in bytes of an encapsulation for this parameter set.
-
-