blob: aeae8cb5502160216734258d4718007f5b506874 [file] [log] [blame]
package org.bouncycastle.pqc.crypto.qtesla;
final class Parameter
{
/**
* Dimension, (Dimension - 1) is the Polynomial Degree for Heuristic qTESLA Security Category-1
*/
public static final int N_I = 512;
/**
* Dimension, (Dimension - 1) is the Polynomial Degree for Provably-Secure qTESLA Security Category-1
*/
public static final int N_I_P = 1024;
/**
* Dimension, (Dimension - 1) is the Polynomial Degree for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int N_III_SIZE = 1024;
/**
* Dimension, (Dimension - 1) is the Polynomial Degree for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int N_III_SPEED = 1024;
/**
* Dimension, (Dimension - 1) is the Polynomial Degree for Provably-Secure qTESLA Security Category-3
*/
public static final int N_III_P = 2048;
/**
* N_LOGARITHM = LOGARITHM (N) / LOGARITHM (2) for Heuristic qTESLA Security Category-1
*/
public static final int N_LOGARITHM_I = 9;
/**
* N_LOGARITHM = LOGARITHM (N) / LOGARITHM (2) for Provably-Secure qTESLA Security Category-1
*/
public static final int N_LOGARITHM_I_P = 10;
/**
* N_LOGARITHM = LOGARITHM (N) / LOGARITHM (2) for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int N_LOGARITHM_III_SIZE = 10;
/**
* N_LOGARITHM = LOGARITHM (N) / LOGARITHM (2) for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int N_LOGARITHM_III_SPEED = 10;
/**
* N_LOGARITHM = LOGARITHM (N) / LOGARITHM (2) for Provably-Secure qTESLA Security Category-3
*/
public static final int N_LOGARITHM_III_P = 11;
/**
* Modulus for Heuristic qTESLA Security Category-1
*/
public static final int Q_I = 4205569;
/**
* Modulus for Provably-Secure qTESLA Security Category-1
*/
public static final int Q_I_P = 485978113;
/**
* Modulus for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int Q_III_SIZE = 4206593;
/**
* Modulus for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int Q_III_SPEED = 8404993;
/**
* Modulus for Provably-Secure qTESLA Security Category-3
*/
public static final int Q_III_P = 1129725953;
/**
* Q <= 2 ^ Q_LOGARITHM for Heuristic qTESLA Security Category-1
*/
public static final int Q_LOGARITHM_I = 23;
/**
* Q <= 2 ^ Q_LOGARITHM for Provably-Secure qTESLA Security Category-1
*/
public static final int Q_LOGARITHM_I_P = 29;
/**
* Q <= 2 ^ Q_LOGARITHM for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int Q_LOGARITHM_III_SIZE = 23;
/**
* Q <= 2 ^ Q_LOGARITHM for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int Q_LOGARITHM_III_SPEED = 24;
/**
* Q <= 2 ^ Q_LOGARITHM for Provably-Secure qTESLA Security Category-3
*/
public static final int Q_LOGARITHM_III_P = 31;
public static final long Q_INVERSE_I = 3098553343L;
public static final long Q_INVERSE_I_P = 3421990911L;
public static final long Q_INVERSE_III_SIZE = 4148178943L;
public static final long Q_INVERSE_III_SPEED = 4034936831L;
public static final long Q_INVERSE_III_P = 861290495L;
/**
* B Determines the Interval the Randomness is Chosen in During Signing for Heuristic qTESLA Security Category-1
*/
public static final int B_I = 1048575;
/**
* B Determines the Interval the Randomness is Chosen in During Signing for Provably-Secure qTESLA Security Category-1
*/
public static final int B_I_P = 2097151;
/**
* B Determines the Interval the Randomness is Chosen in During Signing for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int B_III_SIZE = 1048575;
/**
* B Determines the Interval the Randomness is Chosen in During Signing for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int B_III_SPEED = 2097151;
/**
* B Determines the Interval the Randomness is Chosen in During Signing for Provably-Secure qTESLA Security Category-3
*/
public static final int B_III_P = 8388607;
/**
* B = 2 ^ B_BIT - 1 for Heuristic qTESLA Security Category-1
*/
public static final int B_BIT_I = 20;
/**
* B = 2 ^ B_BIT - 1 for Provably-Secure qTESLA Security Category-1
*/
public static final int B_BIT_I_P = 21;
/**
* B = 2 ^ B_BIT - 1 for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int B_BIT_III_SIZE = 20;
/**
* B = 2 ^ B_BIT - 1 for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int B_BIT_III_SPEED = 21;
/**
* B = 2 ^ B_BIT - 1 for Provably-Secure qTESLA Security Category-3
*/
public static final int B_BIT_III_P = 23;
public static final int S_BIT_I = 10;
public static final int S_BIT_I_P = 8;
public static final int S_BIT_III_SIZE = 8;
public static final int S_BIT_III_SPEED = 9;
public static final int S_BIT_III_P = 8;
/**
* Number of Ring-Learning-With-Errors Samples for Heuristic qTESLA Security Category-1
*/
public static final int K_I = 1;
/**
* Number of Ring-Learning-With-Errors Samples for Provably-Secure qTESLA Security Category-1
*/
public static final int K_I_P = 4;
/**
* Number of Ring-Learning-With-Errors Samples for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int K_III_SIZE = 1;
/**
* Number of Ring-Learning-With-Errors Samples for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int K_III_SPEED = 1;
/**
* Number of Ring-Learning-With-Errors Samples for Provably-Secure qTESLA Security Category-3
*/
public static final int K_III_P = 5;
/**
* Number of Non-Zero Entries of Output Elements of Encryption for Heuristic qTESLA Security Category-1
*/
public static final int H_I = 30;
/**
* Number of Non-Zero Entries of Output Elements of Encryption for Provably-Secure qTESLA Security Category-1
*/
public static final int H_I_P = 25;
/**
* Number of Non-Zero Entries of Output Elements of Encryption for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int H_III_SIZE = 48;
/**
* Number of Non-Zero Entries of Output Elements of Encryption for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int H_III_SPEED = 48;
/**
* Number of Non-Zero Entries of Output Elements of Encryption for Provably-Secure qTESLA Security Category-3
*/
public static final int H_III_P = 40;
/**
* Number of Rounded Bits for Heuristic qTESLA Security Category-1
*/
public static final int D_I = 21;
/**
* Number of Rounded Bits for Provably-Secure qTESLA Security Category-1
*/
public static final int D_I_P = 22;
/**
* Number of Rounded Bits for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int D_III_SIZE = 21;
/**
* Number of Rounded Bits for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int D_III_SPEED = 22;
/**
* Number of Rounded Bits for Provably-Secure qTESLA Security Category-3
*/
public static final int D_III_P = 24;
/**
* Bound in Checking Error Polynomial for Heuristic qTESLA Security Category-1
*/
public static final int KEY_GENERATOR_BOUND_E_I = 1586;
/**
* Bound in Checking Error Polynomial for Provably-Secure qTESLA Security Category-1
*/
public static final int KEY_GENERATOR_BOUND_E_I_P = 554;
/**
* Bound in Checking Error Polynomial for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int KEY_GENERATOR_BOUND_E_III_SIZE = 910;
/**
* Bound in Checking Error Polynomial for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int KEY_GENERATOR_BOUND_E_III_SPEED = 1147;
/**
* Bound in Checking Error Polynomial for Provably-Secure qTESLA Security Category-3
*/
public static final int KEY_GENERATOR_BOUND_E_III_P = 901;
public static final int REJECTION_I = KEY_GENERATOR_BOUND_E_I;
public static final int REJECTION_I_P = KEY_GENERATOR_BOUND_E_I_P;
public static final int REJECTION_III_SIZE = KEY_GENERATOR_BOUND_E_III_SIZE;
public static final int REJECTION_III_SPEED = KEY_GENERATOR_BOUND_E_III_SPEED;
public static final int REJECTION_III_P = KEY_GENERATOR_BOUND_E_III_P;
/**
* Bound in Checking Secret Polynomial for Heuristic qTESLA Security Category-1
*/
public static final int KEY_GENERATOR_BOUND_S_I = 1586;
/**
* Bound in Checking Secret Polynomial for Provably-Secure qTESLA Security Category-1
*/
public static final int KEY_GENERATOR_BOUND_S_I_P = 554;
/**
* Bound in Checking Secret Polynomial for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final int KEY_GENERATOR_BOUND_S_III_SIZE = 910;
/**
* Bound in Checking Secret Polynomial for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final int KEY_GENERATOR_BOUND_S_III_SPEED = 1233;
/**
* Bound in Checking Secret Polynomial for Provably-Secure qTESLA Security Category-3
*/
public static final int KEY_GENERATOR_BOUND_S_III_P = 901;
public static final int U_I = KEY_GENERATOR_BOUND_S_I;
public static final int U_I_P = KEY_GENERATOR_BOUND_S_I_P;
public static final int U_III_SIZE = KEY_GENERATOR_BOUND_S_III_SIZE;
public static final int U_III_SPEED = KEY_GENERATOR_BOUND_S_III_SPEED;
public static final int U_III_P = KEY_GENERATOR_BOUND_S_III_P;
/**
* Standard Deviation of Centered Discrete Gaussian Distribution for Heuristic qTESLA Security Category-1
*/
public static final double SIGMA_I = 22.93;
/**
* Standard Deviation of Centered Discrete Gaussian Distribution for Provably-Secure qTESLA Security Category-1
*/
public static final double SIGMA_I_P = 8.5;
/**
* Standard Deviation of Centered Discrete Gaussian Distribution for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final double SIGMA_III_SIZE = 7.64;
/**
* Standard Deviation of Centered Discrete Gaussian Distribution for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final double SIGMA_III_SPEED = 10.2;
/**
* Standard Deviation of Centered Discrete Gaussian Distribution for Provably-Secure qTESLA Security Category-3
*/
public static final double SIGMA_III_P = 8.5;
public static final double SIGMA_E_I = SIGMA_I;
public static final double SIGMA_E_I_P = SIGMA_I_P;
public static final double SIGMA_E_III_SIZE = SIGMA_III_SIZE;
public static final double SIGMA_E_III_SPEED = SIGMA_III_SPEED;
public static final double SIGMA_E_III_P = SIGMA_III_P;
/**
* XI = SIGMA * SQUARE_ROOT (2 * LOGARITHM (2) / LOGARITHM (e)) for Heuristic qTESLA Security Category-1
*/
public static final double XI_I = 27;
/**
* XI = SIGMA * SQUARE_ROOT (2 * LOGARITHM (2) / LOGARITHM (e)) for Provably-Secure qTESLA Security Category-1
*/
public static final double XI_I_P = 10;
/**
* XI = SIGMA * SQUARE_ROOT (2 * LOGARITHM (2) / LOGARITHM (e)) for Heuristic qTESLA Security Category-3 (Option for Size)
*/
public static final double XI_III_SIZE = 9;
/**
* XI = SIGMA * SQUARE_ROOT (2 * LOGARITHM (2) / LOGARITHM (e)) for Heuristic qTESLA Security Category-3 (Option for Speed)
*/
public static final double XI_III_SPEED = 12;
/**
* XI = SIGMA * SQUARE_ROOT (2 * LOGARITHM (2) / LOGARITHM (e)) for Provably-Secure qTESLA Security Category-3
*/
public static final double XI_III_P = 10;
public static final int BARRETT_MULTIPLICATION_I = 1021;
public static final int BARRETT_MULTIPLICATION_I_P = 1;
public static final int BARRETT_MULTIPLICATION_III_SIZE = 1021;
public static final int BARRETT_MULTIPLICATION_III_SPEED = 511;
public static final int BARRETT_MULTIPLICATION_III_P = 15;
public static final int BARRETT_DIVISION_I = 32;
public static final int BARRETT_DIVISION_I_P = 29;
public static final int BARRETT_DIVISION_III_SIZE = 32;
public static final int BARRETT_DIVISION_III_SPEED = 32;
public static final int BARRETT_DIVISION_III_P = 34;
/**
* The Number of Blocks Requested in the First Extendable-Output Function Call
* for Heuristic qTESLA Security Category-1
*/
public static final int GENERATOR_A_I = 19;
/**
* The Number of Blocks Requested in the First Extendable-Output Function Call
* for Provably-Secure qTESLA Security Category-1
*/
public static final int GENERATOR_A_I_P = 108;
/**
* The Number of Blocks Requested in the First Extendable-Output Function Call
* for Provably-Secure qTESLA Security Category-3 (Option for Size)
*/
public static final int GENERATOR_A_III_SIZE = 38;
/**
* The Number of Blocks Requested in the First Extendable-Output Function Call
* for Provably-Secure qTESLA Security Category-3 (Option for Speed)
*/
public static final int GENERATOR_A_III_SPEED = 38;
/**
* The Number of Blocks Requested in the First Extendable-Output Function Call
* for Provably-Secure qTESLA Security Category-3
*/
public static final int GENERATOR_A_III_P = 180;
public static final int INVERSE_NUMBER_THEORETIC_TRANSFORM_I = 113307;
public static final int INVERSE_NUMBER_THEORETIC_TRANSFORM_I_P = 472064468;
public static final int INVERSE_NUMBER_THEORETIC_TRANSFORM_III_SIZE = 1217638;
public static final int INVERSE_NUMBER_THEORETIC_TRANSFORM_III_SPEED = 237839;
public static final int INVERSE_NUMBER_THEORETIC_TRANSFORM_III_P = 851423148;
public static final int R_I = 1081347;
public static final int R_III_SIZE = 35843;
public static final int R_III_SPEED = 15873;
}