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

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…