#![allow(unused)] struct State { state: [[u8; 4]; 4], } impl State { fn new(data: [u8; 16]) -> Self { let mut state = [[0u8; 4]; 4]; for (i, &b) in data.iter().enumerate() { state[i % 4][i / 4] = b; } return State { state }; } fn get(&self, c: usize, r: usize) -> u8 { return self.state[c][r]; } fn set(&mut self, c: usize, r: usize, v: u8) { self.state[c][r] = v; } fn v0(&self) -> [u8; 4] { return self.state[0]; } fn v1(&self) -> [u8; 4] { return self.state[1]; } fn v2(&self) -> [u8; 4] { return self.state[2]; } fn v3(&self) -> [u8; 4] { return self.state[3]; } fn u(&self, i: usize) -> [u8; 4] { return self.state[i]; } } //pub fn encrypt(data: &[u8], key: &[u8]) -> &[u8] { pub fn test() { let state_bytes: [u8; 16] = [ 0x32, 0x88, 0x31, 0xe0, 0x43, 0x5a, 0x31, 0x37, 0xf6, 0x30, 0x98, 0x07, 0xa8, 0x8d, 0xa2, 0x34, ]; let mut state = State::new(state_bytes); println!("v0 {:02x?}", state.v0()); println!("v1 {:02x?}", state.v1()); println!("v2 {:02x?}", state.v2()); println!("v3 {:02x?}", state.v3()); println!("u {:02x?}", state.u(2)); }