Skip to main content

keygen_sca

Function keygen_sca 

Source
pub fn keygen_sca<P: Params>(
    d: &[u8; 32],
    ek_out: &mut [u8],
    dk_out: &mut [u8],
    rng: &mut impl CryptoRng,
) -> Result<(usize, usize), MlKemError>
Expand description

SCA-protected K-PKE key generation with shuffled NTT on secret polynomials.

Functionally identical to keygen but uses shuffle::ntt_shuffled for the forward NTT on secret polynomials s and e, randomizing the butterfly execution order to defeat Simple Power Analysis.

The NTT on public data (matrix A via SampleNTT) is unaffected.

§Arguments

  • d - 32-byte seed for deterministic key generation.
  • ek_out - Output slice for ek_pke, must be at least 384*k + 32 bytes.
  • dk_out - Output slice for dk_pke, must be at least 384*k bytes.
  • rng - A cryptographic RNG for shuffle permutation randomness.

§Errors

Returns MlKemError::RngFailure if the RNG fails.