Package org.bouncycastle.pqc.crypto.ntru
Class NTRUEngine
- java.lang.Object
-
- org.bouncycastle.pqc.crypto.ntru.NTRUEngine
-
- All Implemented Interfaces:
AsymmetricBlockCipher
public class NTRUEngine extends java.lang.Object implements AsymmetricBlockCipher
Encrypts, decrypts data and generates key pairs.
The parameter p is hardcoded to 3.
-
-
Constructor Summary
Constructors Constructor Description NTRUEngine()
Constructs a new instance with a set of encryption parameters.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected IntegerPolynomial
decrypt(IntegerPolynomial e, Polynomial priv_t, IntegerPolynomial priv_fp)
protected IntegerPolynomial
encrypt(IntegerPolynomial m, TernaryPolynomial r, IntegerPolynomial pubKey)
int
getInputBlockSize()
returns the largest size an input block can be.int
getOutputBlockSize()
returns the maximum size of the block produced by this cipher.void
init(boolean forEncryption, CipherParameters parameters)
initialise the cipher.byte[]
processBlock(byte[] in, int inOff, int len)
process the block of len bytes stored in in from offset inOff.
-
-
-
Method Detail
-
init
public void init(boolean forEncryption, CipherParameters parameters)
Description copied from interface:AsymmetricBlockCipher
initialise the cipher.- Specified by:
init
in interfaceAsymmetricBlockCipher
- Parameters:
forEncryption
- if true the cipher is initialised for encryption, if false for decryption.parameters
- the key and other data required by the cipher.
-
getInputBlockSize
public int getInputBlockSize()
Description copied from interface:AsymmetricBlockCipher
returns the largest size an input block can be.- Specified by:
getInputBlockSize
in interfaceAsymmetricBlockCipher
- Returns:
- maximum size for an input block.
-
getOutputBlockSize
public int getOutputBlockSize()
Description copied from interface:AsymmetricBlockCipher
returns the maximum size of the block produced by this cipher.- Specified by:
getOutputBlockSize
in interfaceAsymmetricBlockCipher
- Returns:
- maximum size of the output block produced by the cipher.
-
processBlock
public byte[] processBlock(byte[] in, int inOff, int len) throws InvalidCipherTextException
Description copied from interface:AsymmetricBlockCipher
process the block of len bytes stored in in from offset inOff.- Specified by:
processBlock
in interfaceAsymmetricBlockCipher
- Parameters:
in
- the input datainOff
- offset into the in array where the data startslen
- the length of the block to be processed.- Returns:
- the resulting byte array of the encryption/decryption process.
- Throws:
InvalidCipherTextException
- data decrypts improperly.
-
encrypt
protected IntegerPolynomial encrypt(IntegerPolynomial m, TernaryPolynomial r, IntegerPolynomial pubKey)
-
decrypt
protected IntegerPolynomial decrypt(IntegerPolynomial e, Polynomial priv_t, IntegerPolynomial priv_fp)
- Parameters:
e
-priv_t
- a polynomial such that iffastFp=true
,f=1+3*priv_t
; otherwise,f=priv_t
priv_fp
-- Returns:
- an IntegerPolynomial representing the output.
-
-