INNER CODE UNIT · Rust
sig_decode
orion-rs/orion · src/hazardous/dsa/ml_dsa/internal/mod.rs:386
fn sig_decode<const K: usize, const L: usize, const COMMITHASH_LEN: usize>(
sigma: &[u8],
) -> Result<([u8; COMMITHASH_LEN], Vector<L>, Hint<K>), UnknownCryptoError> {
debug_assert_eq!(
Self::SIGNATURE_SIZE,
(Self::Z_BITPACK_SIZE * L) + COMMITHASH_LEN + Self::OMEGA as usize + K
);
if sigma.len() != Self::SIGNATURE_SIZE {
return Err(UnknownCryptoError);
}
let (c_tilde, rem) = sigma.split_at(COMMITHASH_LEN);
let (polyparts, hintparts) = rem.split_at(Self::Z_BITPACK_SIZE * L);
let mut z = Vector::<L>::zero();
for (p, c) in z
.elems