1use num_bigint::BigUint;
2
3use crate::HasherError;
4
5pub fn bigint_to_le_bytes_array<const BYTES_SIZE: usize>(
8 bigint: &BigUint,
9) -> Result<[u8; BYTES_SIZE], HasherError> {
10 let mut array = [0u8; BYTES_SIZE];
11 let bytes = bigint.to_bytes_le();
12
13 if bytes.len() > BYTES_SIZE {
14 return Err(HasherError::InvalidInputLength(BYTES_SIZE, bytes.len()));
15 }
16
17 array[..bytes.len()].copy_from_slice(bytes.as_slice());
18 Ok(array)
19}
20
21pub fn bigint_to_be_bytes_array<const BYTES_SIZE: usize>(
24 bigint: &BigUint,
25) -> Result<[u8; BYTES_SIZE], HasherError> {
26 let mut array = [0u8; BYTES_SIZE];
27 let bytes = bigint.to_bytes_be();
28
29 if bytes.len() > BYTES_SIZE {
30 return Err(HasherError::InvalidInputLength(BYTES_SIZE, bytes.len()));
31 }
32
33 let start_pos = BYTES_SIZE - bytes.len();
34 array[start_pos..].copy_from_slice(bytes.as_slice());
35 Ok(array)
36}