light_circuitlib_rs/
helpers.rs1use 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}