INNER CODE UNIT · Rust
setup_key
RustCrypto/stream-ciphers · rabbit/src/lib.rs:60
fn setup_key(key: [u8; KEY_BYTE_LEN]) -> Self {
let mut k = [0u16; 8];
k[0] = (key[0x0] as u16) | ((key[0x1] as u16) << 8);
k[1] = (key[0x2] as u16) | ((key[0x3] as u16) << 8);
k[2] = (key[0x4] as u16) | ((key[0x5] as u16) << 8);
k[3] = (key[0x6] as u16) | ((key[0x7] as u16) << 8);
k[4] = (key[0x8] as u16) | ((key[0x9] as u16) << 8);
k[5] = (key[0xA] as u16) | ((key[0xB] as u16) << 8);
k[6] = (key[0xC] as u16) | ((key[0xD] as u16) << 8);
k[7] = (key[0xE] as u16) | ((key[0xF] as u16) << 8);
let mut x = [0u32; 8];
let mut c = [0u32; 8];
for j in 0..8 {
if j % 2 == 0 {
x[j] = ((k[(j + 1) % 8] as u32) << 16) | (k[j] as u32);
c[j] = ((k[(j + 4) % 8] as u32) << 16) | (k[(j + 5) % 8] as u32);