Package org.bouncycastle.pqc.crypto.ntru
Class NTRUEncryptionKeyGenerationParameters
- java.lang.Object
-
- org.bouncycastle.crypto.KeyGenerationParameters
-
- 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
Fields Modifier and Type Field Description static NTRUEncryptionKeyGenerationParameters
APR2011_439
A parameter set that gives 128 bits of security and uses simple ternary polynomials.static NTRUEncryptionKeyGenerationParameters
APR2011_439_FAST
LikeAPR2011_439
, this parameter set gives 128 bits of security but uses product-form polynomials andf=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
LikeAPR2011_743
, this parameter set gives 256 bits of security but uses product-form polynomials andf=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
Constructors Constructor Description 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.NTRUEncryptionKeyGenerationParameters(java.io.InputStream is)
Reads a parameter set from an input stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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
-
-
-
-
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
LikeAPR2011_439
, this parameter set gives 128 bits of security but uses product-form polynomials andf=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
LikeAPR2011_743
, this parameter set gives 256 bits of security but uses product-form polynomials andf=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 coefficientsq
- modulusdf
- number of ones in the private polynomialf
dm0
- minimum acceptable number of -1's, 0's, and 1's in the polynomialm'
in the last encryption stepdb
- number of random bits to prepend to the messagec
- a parameter for the Index Generation Function (IndexGenerator
)minCallsR
- minimum number of hash calls for the IGF to makeminCallsMask
- minimum number of calls to generate the masking polynomialhashSeed
- whether to hash the seed in the MGF first (true) or use the seed directly (false)oid
- three bytes that uniquely identify the parameter setsparse
- whether to treat ternary polynomials as sparsely populated (SparseTernaryPolynomial
vsDenseTernaryPolynomial
)fastFp
- whetherf=1+p*F
for a ternaryF
(true) orf
is ternary (false)hashAlg
- a valid identifier for ajava.security.MessageDigest
instance such asSHA-256
. TheMessageDigest
must support thegetDigestLength()
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 coefficientsq
- modulusdf1
- number of ones in the private polynomialf1
df2
- number of ones in the private polynomialf2
df3
- number of ones in the private polynomialf3
dm0
- minimum acceptable number of -1's, 0's, and 1's in the polynomialm'
in the last encryption stepdb
- number of random bits to prepend to the messagec
- a parameter for the Index Generation Function (IndexGenerator
)minCallsR
- minimum number of hash calls for the IGF to makeminCallsMask
- minimum number of calls to generate the masking polynomialhashSeed
- whether to hash the seed in the MGF first (true) or use the seed directly (false)oid
- three bytes that uniquely identify the parameter setsparse
- whether to treat ternary polynomials as sparsely populated (SparseTernaryPolynomial
vsDenseTernaryPolynomial
)fastFp
- whetherf=1+p*F
for a ternaryF
(true) orf
is ternary (false)hashAlg
- a valid identifier for ajava.security.MessageDigest
instance such asSHA-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 classjava.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 classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-