org.bouncycastle.pqc.crypto.ntruplus
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.
|
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 |
NTRUPlusKEMExtractor
public NTRUPlusKEMExtractor(NTRUPlusPrivateKeyParameters privateKey)
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.