#![allow(non_snake_case)]
use crate::u64_from_buffer;
use dusk_bls12_381::BlsScalar;
const CONSTANTS: usize = 960;
pub const ROUND_CONSTANTS: [BlsScalar; CONSTANTS] = {
let bytes = include_bytes!("../assets/ark.bin");
let mut cnst = [BlsScalar::zero(); CONSTANTS];
let mut i = 0;
let mut j = 0;
while i < bytes.len() {
let a = u64_from_buffer(bytes, i);
let b = u64_from_buffer(bytes, i + 8);
let c = u64_from_buffer(bytes, i + 16);
let d = u64_from_buffer(bytes, i + 24);
cnst[j] = BlsScalar::from_raw([a, b, c, d]);
j += 1;
i += 32;
}
cnst
};
#[cfg(test)]
mod test {
use super::ROUND_CONSTANTS;
use dusk_bls12_381::BlsScalar;
#[test]
fn test_round_constants() {
let zero = BlsScalar::zero();
let has_zero = ROUND_CONSTANTS.iter().any(|&x| x == zero);
for ctant in ROUND_CONSTANTS.iter() {
let bytes = ctant.to_bytes();
assert!(&BlsScalar::from_bytes(&bytes).unwrap() == ctant);
}
assert!(!has_zero);
}
}