Package org.bouncycastle.pqc.crypto.ntru
Class NTRUSigningKeyGenerationParameters
- java.lang.Object
-
- org.bouncycastle.crypto.KeyGenerationParameters
-
- org.bouncycastle.pqc.crypto.ntru.NTRUSigningKeyGenerationParameters
-
- All Implemented Interfaces:
java.lang.Cloneable
public class NTRUSigningKeyGenerationParameters extends KeyGenerationParameters implements java.lang.Cloneable
A set of parameters for NtruSign. Several predefined parameter sets are available and new ones can be created as well.
-
-
Field Summary
Fields Modifier and Type Field Description static NTRUSigningKeyGenerationParameters
APR2011_439
Gives 128 bits of securitystatic NTRUSigningKeyGenerationParameters
APR2011_439_PROD
LikeAPR2011_439
, this parameter set gives 128 bits of security but uses product-form polynomialsstatic NTRUSigningKeyGenerationParameters
APR2011_743
Gives 256 bits of securitystatic NTRUSigningKeyGenerationParameters
APR2011_743_PROD
LikeAPR2011_439
, this parameter set gives 256 bits of security but uses product-form polynomialsint
B
static int
BASIS_TYPE_STANDARD
static int
BASIS_TYPE_TRANSPOSE
int
basisType
double
betaSq
int
d
int
d1
int
d2
int
d3
Digest
hashAlg
static int
KEY_GEN_ALG_FLOAT
static int
KEY_GEN_ALG_RESULTANT
int
keyGenAlg
double
keyNormBoundSq
int
N
double
normBoundSq
int
polyType
boolean
primeCheck
int
q
int
signFailTolerance
boolean
sparse
static NTRUSigningKeyGenerationParameters
TEST157
Generates key pairs quickly.static NTRUSigningKeyGenerationParameters
TEST157_PROD
Generates key pairs quickly.
-
Constructor Summary
Constructors Constructor Description NTRUSigningKeyGenerationParameters(int N, int q, int d, int B, int basisType, double beta, double normBound, double keyNormBound, boolean primeCheck, boolean sparse, int keyGenAlg, Digest hashAlg)
Constructs a parameter set that uses ternary private keys (i.e.NTRUSigningKeyGenerationParameters(int N, int q, int d1, int d2, int d3, int B, int basisType, double beta, double normBound, double keyNormBound, boolean primeCheck, boolean sparse, int keyGenAlg, Digest hashAlg)
Constructs a parameter set that uses product-form private keys (i.e.NTRUSigningKeyGenerationParameters(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 NTRUSigningKeyGenerationParameters
clone()
boolean
equals(java.lang.Object obj)
NTRUSigningParameters
getSigningParameters()
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
-
BASIS_TYPE_STANDARD
public static final int BASIS_TYPE_STANDARD
- See Also:
- Constant Field Values
-
BASIS_TYPE_TRANSPOSE
public static final int BASIS_TYPE_TRANSPOSE
- See Also:
- Constant Field Values
-
KEY_GEN_ALG_RESULTANT
public static final int KEY_GEN_ALG_RESULTANT
- See Also:
- Constant Field Values
-
KEY_GEN_ALG_FLOAT
public static final int KEY_GEN_ALG_FLOAT
- See Also:
- Constant Field Values
-
APR2011_439
public static final NTRUSigningKeyGenerationParameters APR2011_439
Gives 128 bits of security
-
APR2011_439_PROD
public static final NTRUSigningKeyGenerationParameters APR2011_439_PROD
LikeAPR2011_439
, this parameter set gives 128 bits of security but uses product-form polynomials
-
APR2011_743
public static final NTRUSigningKeyGenerationParameters APR2011_743
Gives 256 bits of security
-
APR2011_743_PROD
public static final NTRUSigningKeyGenerationParameters APR2011_743_PROD
LikeAPR2011_439
, this parameter set gives 256 bits of security but uses product-form polynomials
-
TEST157
public static final NTRUSigningKeyGenerationParameters TEST157
Generates key pairs quickly. Use for testing only.
-
TEST157_PROD
public static final NTRUSigningKeyGenerationParameters TEST157_PROD
Generates key pairs quickly. Use for testing only.
-
N
public int N
-
q
public int q
-
d
public int d
-
d1
public int d1
-
d2
public int d2
-
d3
public int d3
-
B
public int B
-
betaSq
public double betaSq
-
normBoundSq
public double normBoundSq
-
signFailTolerance
public int signFailTolerance
-
keyNormBoundSq
public double keyNormBoundSq
-
primeCheck
public boolean primeCheck
-
basisType
public int basisType
-
sparse
public boolean sparse
-
keyGenAlg
public int keyGenAlg
-
hashAlg
public Digest hashAlg
-
polyType
public int polyType
-
-
Constructor Detail
-
NTRUSigningKeyGenerationParameters
public NTRUSigningKeyGenerationParameters(int N, int q, int d, int B, int basisType, double beta, double normBound, double keyNormBound, boolean primeCheck, boolean sparse, int keyGenAlg, Digest hashAlg)
Constructs a parameter set that uses ternary private keys (i.e.polyType=SIMPLE
).- Parameters:
N
- number of polynomial coefficientsq
- modulusd
- number of -1's in the private polynomialsf
andg
B
- number of perturbationsbasisType
- whether to use the standard or transpose latticebeta
- balancing factor for the transpose latticenormBound
- maximum norm for valid signatureskeyNormBound
- maximum norm for the ploynomialsF
andG
primeCheck
- whether2N+1
is primesparse
- whether to treat ternary polynomials as sparsely populated (SparseTernaryPolynomial
vsDenseTernaryPolynomial
)keyGenAlg
-RESULTANT
produces better bases,FLOAT
is slightly faster.RESULTANT
follows the EESS standard whileFLOAT
is described in Hoffstein et al: An Introduction to Mathematical Cryptography.hashAlg
- a valid identifier for ajava.security.MessageDigest
instance such asSHA-256
. TheMessageDigest
must support thegetDigestLength()
method.
-
NTRUSigningKeyGenerationParameters
public NTRUSigningKeyGenerationParameters(int N, int q, int d1, int d2, int d3, int B, int basisType, double beta, double normBound, double keyNormBound, boolean primeCheck, boolean sparse, int keyGenAlg, Digest hashAlg)
Constructs a parameter set that uses product-form private keys (i.e.polyType=PRODUCT
).- Parameters:
N
- number of polynomial coefficientsq
- modulusd1
- number of -1's in the private polynomialsf
andg
d2
- number of -1's in the private polynomialsf
andg
d3
- number of -1's in the private polynomialsf
andg
B
- number of perturbationsbasisType
- whether to use the standard or transpose latticebeta
- balancing factor for the transpose latticenormBound
- maximum norm for valid signatureskeyNormBound
- maximum norm for the ploynomialsF
andG
primeCheck
- whether2N+1
is primesparse
- whether to treat ternary polynomials as sparsely populated (SparseTernaryPolynomial
vsDenseTernaryPolynomial
)keyGenAlg
-RESULTANT
produces better bases,FLOAT
is slightly faster.RESULTANT
follows the EESS standard whileFLOAT
is described in Hoffstein et al: An Introduction to Mathematical Cryptography.hashAlg
- a valid identifier for ajava.security.MessageDigest
instance such asSHA-256
. TheMessageDigest
must support thegetDigestLength()
method.
-
NTRUSigningKeyGenerationParameters
public NTRUSigningKeyGenerationParameters(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
-
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
-
getSigningParameters
public NTRUSigningParameters getSigningParameters()
-
clone
public NTRUSigningKeyGenerationParameters clone()
- Overrides:
clone
in classjava.lang.Object
-
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
-
-