stoffelcrypto 0.1.0

Asynchronous HoneyBadgerMPC protocols, preprocessing, and arithmetic for Stoffel.
Documentation
use ark_serialize::{CanonicalDeserialize, SerializationError};

pub fn deser_bounded_vec<T: CanonicalDeserialize>(
    r: &mut &[u8],
    max: usize,
) -> Result<Vec<T>, SerializationError> {
    if r.len() < 8 {
        return Err(SerializationError::InvalidData);
    }
    let (head, tail) = r.split_at(8);
    let len = u64::from_le_bytes(head.try_into().unwrap()) as usize;
    if len > max {
        return Err(SerializationError::InvalidData);
    }
    *r = tail;
    let mut values = Vec::new();
    for _ in 0..len {
        values.push(T::deserialize_compressed(&mut *r)?);
    }
    Ok(values)
}