Top Inners Fields Constructors Methods
org.bouncycastle.pqc.crypto.gemss

pack-priv Class GeMSSEngine

extends Object
Class Inheritance
Imports
java.math.BigInteger, java.security.SecureRandom, org.bouncycastle.crypto.digests.SHA3Digest, .SHAKEDigest, org.bouncycastle.util.Pack

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static enum

Field Summary

Modifier and TypeField and Description
pack-priv final int
private int
pack-priv Pointer
pack-priv Pointer
pack-priv final boolean
pack-priv int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv int
pack-priv int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv int
pack-priv int
pack-priv int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv int
pack-priv final long
pack-priv final long
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv int
pack-priv Mul_GF2x
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv int
pack-priv final int
pack-priv int
pack-priv int
pack-priv int
pack-priv int
pack-priv int
pack-priv final int
pack-priv int
pack-priv final int
pack-priv int
pack-priv final int
pack-priv final int
pack-priv int
private SecureRandom
pack-priv Rem_GF2n
pack-priv final int
pack-priv SHA3Digest
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int
pack-priv final int

Constructor Summary

AccessConstructor and Description
public
GeMSSEngine(int K, int HFEn, int HFEv, int HFEDELTA, int NB_ITE, int HFEDeg, int HFEDegI, int HFEDegJ)

Method Summary

Modifier and TypeMethod and Description
pack-priv void

Returns:

0 if the result is correct, ERROR_ALLOC for error from malloc/calloc functions.
changeVariablesMQS64_gf2
(Pointer MQS, Pointer S)

@brief Apply the change of variables x'=xS to a MQS stored with a monomial representation.

private void
choose_LOOPJR(Pointer c, PointerUnion pk, int START, long xj, int NB_BYTES_EQ, int NB_WORD_EQ)

private int
pack-priv void
pack-priv void
private void
public void
compress_signHFE(byte[] sm8, Pointer sm)

private void
private long

Returns:

The constant c of pk2, in GF(2).
convMQ_last_uncompressL_gf2
(Pointer pk2, PointerUnion pk)

@brief Decompression of a compressed MQ equation in GF(2)[x1,...,x_(n+v)].

pack-priv void
convMQ_UL_gf2(byte[] pk, byte[] pk_U, int end)

private long

Returns:

The constant c of pk2, in GF(2).
convMQ_uncompressL_gf2
(Pointer pk2, PointerUnion pk)

@brief Decompression of a compressed MQ equation in GF(2)[x1,...,x_(n+v)].

pack-priv void
pack-priv void
pack-priv void
private void
copy_for_casct(Pointer tmp, Pointer tab_ipa, Pointer tab, Pointer tab_i, Pointer prod, int pb, int i)

private void
public int
crypto_sign_open(byte[] PK, byte[] message, byte[] signature)

private void
div_q_monic_gf2nx(Pointer A, int da, Pointer B, int db)

pack-priv int
div_r_gf2nx(Pointer A, int da, Pointer B, int db)

private void
div_r_monic_cst_gf2nx(Pointer A, int da, Pointer B, int db)

private int
div_r_monic_gf2nx(Pointer A, int da, Pointer B, int db)

private void
private void
dotProduct_gf2n(Pointer res, Pointer vec_x, Pointer vec_y, int len)

private void
dotproduct_move_move(Pointer buf, Pointer F_cp, Pointer alpha_vec, int len)

pack-priv void
evalHFEv_gf2nx(Pointer Fxv, Pointer F, Pointer xv)

@brief Evaluation of F in (X,v), with F a HFEv polynomial.

private long
private void
evalMQShybrid8_uncomp_nocst_gf2_m(Pointer res, Pointer x, PointerUnion mq_quo, PointerUnion mq_rem_orig)

@brief Variable-time evaluation of a MQS in a vector.

private void
pack-priv void
pack-priv void
fast_sort_gf2n(Pointer tab, int l)

@brief Sort in ascending order of a vector in GF(2^n), in-place.

pack-priv void
private void
pack-priv void
private void
for_and_xor_shift_incre_move(Pointer L_cp, int iq, int len)

private void
for_casct_move(Pointer tab_i, Pointer tab_ipa, Pointer prod, int len, int shift)

private void
private void
for_mul(Pointer res_orig, Pointer inv, int start)

private void
for_mul_rem_xor_move(Pointer res, Pointer leading_coef, Pointer B, int start, int end)

pack-priv void
private int
for_setPK(byte[] pk, byte[] pk_U, int pk_p, int pk_U_cp, int end)

private int
private void
private void

Returns:

The degree of Xqn.
frobeniusMap_multisqr_HFE_gf2nx
(Pointer Xqn, SecretKeyHFE.complete_sparse_monic_gf2nx F, Pointer cst)

@brief Computation of (X^(2^n) - X) mod (F-U).

private int
gcd_gf2nx(Pointer A, int da, Pointer B, int db)

pack-priv void
private void
getSHA3Hash(Pointer output, int outOff, int outLength, byte[] input, int inOff, int inputLenth, byte[] hash)

private void
pack-priv int

Returns:

0 if the result is correct, ERROR_ALLOC for error from malloc/calloc functions.
interpolateHFE_FS_ref
(Pointer MQS, Pointer F, Pointer S)

@brief Computation of the multivariate representation of a HFEv polynomial, then a change of variables is applied.

private void
inv_gf2n(Pointer res, Pointer A, int AOff)

pack-priv void
invMatrixLU_gf2(Pointer S, Pointer L_orig, Pointer U_orig, GeMSSEngine.FunctionParams imluParams)

@brief Compute the inverse of S=LU a matrix (n,n) or (n+v, n+v) in GF(2), in-place.

private void
loop_sqr(Pointer Xqn_sqr, Pointer Xqn)

private int
loop_xor_loop_move_xorandmask_move(Pointer Sinv_cpi, Pointer Sinv_cpj, Pointer L_cpj, Pointer L, int i, int iq, int len, int innerloopbound, int nextrow)

private void
LOOPIR(Pointer S, Pointer L_cp, Pointer U, int NB_IT, int nq, int nr, int iq, boolean REM)

private void
LOOPIR_INIT(Pointer MQS2_cp, Pointer MQS_cpj, Pointer MQS_cpi, Pointer S_cpj, int STARTIR, int NB_ITIR)

private void
LOOPIR_LOOPK_COMPLETE(Pointer MQS2_cp, Pointer S_cpj, Pointer MQS_cpj, int STARTIR, int NB_ITIR)

private void
LOOPJR(Pointer S, Pointer L, Pointer U, int NB_IT, int iq, int jq)

private long
LOOPJR_NOCST_64(Pointer c, PointerUnion pk64, int START, int NB_IT, long xj, int NB_BYTES_EQ, int NB_WORD_EQ)

private void
LOOPJR_UNROLLED_64(Pointer c, PointerUnion pk64, int START, int NB_IT, long xj, int NB_BYTES_EQ, int NB_WORD_EQ)

private void
LOOPK_COMPLETE(Pointer MQS2_cp, Pointer S_cpj, Pointer MQS_cpj, int start, int end)

private void
LOOPKR(Pointer MQS_cpj, Pointer MQS2_cp, long bit_kr, int START, int NB_IT)

pack-priv void
mul_gf2n(Pointer P, Pointer A, int AOff, Pointer B)

pack-priv void
pack-priv void
public void
public void
mul_rem_xorrange(Pointer res, Pointer A, Pointer B, int b_cp)

public void
private void
private void
precSignHFE(SecretKeyHFE sk_HFE, Pointer[] linear_coefs, byte[] sk)

private void
precSignHFESeed(SecretKeyHFE sk_HFE, byte[] sk)

private void
rem_gf2n(Pointer P, int p_cp, Pointer Pol)

private static long
remainderUnsigned(long dividend, long divisor)

private int
setArrayL(int[] L, int k, int pos, int len)

private int
setPK(byte[] pk, byte[] pk_U, int nb_bits, int pk_p, int pk_U_cp, int k, int start, int end)

private void
setPk2_endValue(Pointer pk2, PointerUnion pk64, int nb_bits, int iq)

private int
setPk2Value(Pointer pk2, PointerUnion pk64, int nb_bits, int iq, int len)

public int

Returns:

0 for a valid signature, !=0 else.
sign_openHFE_huncomp_pk
(byte[] m, int len, byte[] sm8, PointerUnion pk, PointerUnion hpk)

@brief Verify the signature of the document m of length len bytes, using a (HFEv-)-based signature scheme.

public void
signHFE_FeistelPatarin(SecureRandom random, byte[] sm8, byte[] m, int m_cp, int len, byte[] sk)

private void
private void
sqr_gf2n(Pointer C, int c_shift, Pointer A, int a_shift)

private void
private void
sqr_gf2nx(Pointer poly, int d)

private void
traceMap_gf2nx(Pointer poly_trace, Pointer poly_frob, Pointer f, int deg)

private void
uncompress_signHFE(Pointer sm, byte[] sm8)

pack-priv void
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait