Bouncy Castle Cryptography Library 1.49

org.bouncycastle.pqc.crypto.ntru
Class NTRUEncryptionKeyGenerationParameters

java.lang.Object
  extended by org.bouncycastle.crypto.KeyGenerationParameters
      extended by org.bouncycastle.pqc.crypto.ntru.NTRUEncryptionKeyGenerationParameters
All Implemented Interfaces:
java.lang.Cloneable

public class NTRUEncryptionKeyGenerationParameters
extends KeyGenerationParameters
implements java.lang.Cloneable

A set of parameters for NtruEncrypt. Several predefined parameter sets are available and new ones can be created as well.


Field Summary
static NTRUEncryptionKeyGenerationParameters APR2011_439
          A parameter set that gives 128 bits of security and uses simple ternary polynomials.
static NTRUEncryptionKeyGenerationParameters APR2011_439_FAST
          Like APR2011_439, this parameter set gives 128 bits of security but uses product-form polynomials and f=1+pF.
static NTRUEncryptionKeyGenerationParameters APR2011_743
          A parameter set that gives 256 bits of security and uses simple ternary polynomials.
static NTRUEncryptionKeyGenerationParameters APR2011_743_FAST
          Like APR2011_743, this parameter set gives 256 bits of security but uses product-form polynomials and f=1+pF.
 int bufferLenBits
           
 int c
           
 int db
           
 int df
           
 int df1
           
 int df2
           
 int df3
           
 int dg
           
 int dm0
           
 int dr
           
 int dr1
           
 int dr2
           
 int dr3
           
static NTRUEncryptionKeyGenerationParameters EES1087EP2
          A conservative (in terms of security) parameter set that gives 256 bits of security and is optimized for key size.
static NTRUEncryptionKeyGenerationParameters EES1171EP1
          A conservative (in terms of security) parameter set that gives 256 bits of security and is a tradeoff between key size and encryption/decryption speed.
static NTRUEncryptionKeyGenerationParameters EES1499EP1
          A conservative (in terms of security) parameter set that gives 256 bits of security and is optimized for encryption/decryption speed.
 boolean fastFp
           
 Digest hashAlg
           
 boolean hashSeed
           
 int maxMsgLenBytes
           
 int minCallsMask
           
 int minCallsR
           
 int N
           
 byte[] oid
           
 int pkLen
           
 int polyType
           
 int q
           
 boolean sparse
           
 
Constructor Summary
NTRUEncryptionKeyGenerationParameters(java.io.InputStream is)
          Reads a parameter set from an input stream.
NTRUEncryptionKeyGenerationParameters(int N, int q, int df, int dm0, int db, int c, int minCallsR, int minCallsMask, boolean hashSeed, byte[] oid, boolean sparse, boolean fastFp, Digest hashAlg)
          Constructs a parameter set that uses ternary private keys (i.e.
NTRUEncryptionKeyGenerationParameters(int N, int q, int df1, int df2, int df3, int dm0, int db, int c, int minCallsR, int minCallsMask, boolean hashSeed, byte[] oid, boolean sparse, boolean fastFp, Digest hashAlg)
          Constructs a parameter set that uses product-form private keys (i.e.
 
Method Summary
 NTRUEncryptionKeyGenerationParameters clone()
           
 boolean equals(java.lang.Object obj)
           
 NTRUEncryptionParameters getEncryptionParameters()
           
 int getMaxMessageLength()
          Returns the maximum length a plaintext message can be with this parameter set.
 int hashCode()
           
 java.lang.String toString()
           
 void writeTo(java.io.OutputStream os)
          Writes the parameter set to an output stream
 
Methods inherited from class org.bouncycastle.crypto.KeyGenerationParameters
getRandom, getStrength
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

EES1087EP2

public static final NTRUEncryptionKeyGenerationParameters EES1087EP2
A conservative (in terms of security) parameter set that gives 256 bits of security and is optimized for key size.


EES1171EP1

public static final NTRUEncryptionKeyGenerationParameters EES1171EP1
A conservative (in terms of security) parameter set that gives 256 bits of security and is a tradeoff between key size and encryption/decryption speed.


EES1499EP1

public static final NTRUEncryptionKeyGenerationParameters EES1499EP1
A conservative (in terms of security) parameter set that gives 256 bits of security and is optimized for encryption/decryption speed.


APR2011_439

public static final NTRUEncryptionKeyGenerationParameters APR2011_439
A parameter set that gives 128 bits of security and uses simple ternary polynomials.


APR2011_439_FAST

public static final NTRUEncryptionKeyGenerationParameters APR2011_439_FAST
Like APR2011_439, this parameter set gives 128 bits of security but uses product-form polynomials and f=1+pF.


APR2011_743

public static final NTRUEncryptionKeyGenerationParameters APR2011_743
A parameter set that gives 256 bits of security and uses simple ternary polynomials.


APR2011_743_FAST

public static final NTRUEncryptionKeyGenerationParameters APR2011_743_FAST
Like APR2011_743, this parameter set gives 256 bits of security but uses product-form polynomials and f=1+pF.


N

public int N

q

public int q

df

public int df

df1

public int df1

df2

public int df2

df3

public int df3

dr

public int dr

dr1

public int dr1

dr2

public int dr2

dr3

public int dr3

dg

public int dg

maxMsgLenBytes

public int maxMsgLenBytes

db

public int db

bufferLenBits

public int bufferLenBits

dm0

public int dm0

pkLen

public int pkLen

c

public int c

minCallsR

public int minCallsR

minCallsMask

public int minCallsMask

hashSeed

public boolean hashSeed

oid

public byte[] oid

sparse

public boolean sparse

fastFp

public boolean fastFp

polyType

public int polyType

hashAlg

public Digest hashAlg
Constructor Detail

NTRUEncryptionKeyGenerationParameters

public NTRUEncryptionKeyGenerationParameters(int N,
                                             int q,
                                             int df,
                                             int dm0,
                                             int db,
                                             int c,
                                             int minCallsR,
                                             int minCallsMask,
                                             boolean hashSeed,
                                             byte[] oid,
                                             boolean sparse,
                                             boolean fastFp,
                                             Digest hashAlg)
Constructs a parameter set that uses ternary private keys (i.e. polyType=SIMPLE).

Parameters:
N - number of polynomial coefficients
q - modulus
df - number of ones in the private polynomial f
dm0 - minimum acceptable number of -1's, 0's, and 1's in the polynomial m' in the last encryption step
db - number of random bits to prepend to the message
c - a parameter for the Index Generation Function (IndexGenerator)
minCallsR - minimum number of hash calls for the IGF to make
minCallsMask - minimum number of calls to generate the masking polynomial
hashSeed - whether to hash the seed in the MGF first (true) or use the seed directly (false)
oid - three bytes that uniquely identify the parameter set
sparse - whether to treat ternary polynomials as sparsely populated (SparseTernaryPolynomial vs DenseTernaryPolynomial)
fastFp - whether f=1+p*F for a ternary F (true) or f is ternary (false)
hashAlg - a valid identifier for a java.security.MessageDigest instance such as SHA-256. The MessageDigest must support the getDigestLength() method.

NTRUEncryptionKeyGenerationParameters

public NTRUEncryptionKeyGenerationParameters(int N,
                                             int q,
                                             int df1,
                                             int df2,
                                             int df3,
                                             int dm0,
                                             int db,
                                             int c,
                                             int minCallsR,
                                             int minCallsMask,
                                             boolean hashSeed,
                                             byte[] oid,
                                             boolean sparse,
                                             boolean fastFp,
                                             Digest hashAlg)
Constructs a parameter set that uses product-form private keys (i.e. polyType=PRODUCT).

Parameters:
N - number of polynomial coefficients
q - modulus
df1 - number of ones in the private polynomial f1
df2 - number of ones in the private polynomial f2
df3 - number of ones in the private polynomial f3
dm0 - minimum acceptable number of -1's, 0's, and 1's in the polynomial m' in the last encryption step
db - number of random bits to prepend to the message
c - a parameter for the Index Generation Function (IndexGenerator)
minCallsR - minimum number of hash calls for the IGF to make
minCallsMask - minimum number of calls to generate the masking polynomial
hashSeed - whether to hash the seed in the MGF first (true) or use the seed directly (false)
oid - three bytes that uniquely identify the parameter set
sparse - whether to treat ternary polynomials as sparsely populated (SparseTernaryPolynomial vs DenseTernaryPolynomial)
fastFp - whether f=1+p*F for a ternary F (true) or f is ternary (false)
hashAlg - a valid identifier for a java.security.MessageDigest instance such as SHA-256

NTRUEncryptionKeyGenerationParameters

public NTRUEncryptionKeyGenerationParameters(java.io.InputStream is)
                                      throws java.io.IOException
Reads a parameter set from an input stream.

Parameters:
is - an input stream
Throws:
java.io.IOException
Method Detail

getEncryptionParameters

public NTRUEncryptionParameters getEncryptionParameters()

clone

public NTRUEncryptionKeyGenerationParameters clone()
Overrides:
clone in class java.lang.Object

getMaxMessageLength

public int getMaxMessageLength()
Returns the maximum length a plaintext message can be with this parameter set.

Returns:
the maximum length in bytes

writeTo

public void writeTo(java.io.OutputStream os)
             throws java.io.IOException
Writes the parameter set to an output stream

Parameters:
os - an output stream
Throws:
java.io.IOException

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

Bouncy Castle Cryptography Library 1.49