light_circuitlib_rs/
helpers.rs

1use env_logger::Builder;
2use log::LevelFilter;
3use num_bigint::BigInt;
4
5pub fn change_endianness(bytes: &[u8]) -> Vec<u8> {
6    let mut vec = Vec::new();
7    for b in bytes.chunks(32) {
8        for byte in b.iter().rev() {
9            vec.push(*byte);
10        }
11    }
12    vec
13}
14pub fn convert_endianness_128(bytes: &[u8]) -> Vec<u8> {
15    bytes
16        .chunks(64)
17        .flat_map(|b| b.iter().copied().rev().collect::<Vec<u8>>())
18        .collect::<Vec<u8>>()
19}
20
21pub fn init_logger() {
22    let _ = Builder::new()
23        .filter_module("circuitlib_rs", LevelFilter::Info)
24        .try_init();
25}
26
27pub fn bigint_to_u8_32(n: &BigInt) -> Result<[u8; 32], Box<dyn std::error::Error>> {
28    let (_, bytes_be) = n.to_bytes_be();
29    if bytes_be.len() > 32 {
30        Err("Number too large to fit in [u8; 32]")?;
31    }
32    let mut array = [0; 32];
33    let bytes = &bytes_be[..bytes_be.len()];
34    array[(32 - bytes.len())..].copy_from_slice(bytes);
35    Ok(array)
36}