pub fn key_schedule_encrypt256(origin: &[u8], buffer: &mut [u32])
Expand description

Schedule a 256bit key to sub-keys for encryption.

  • parameter origin: the slice (length = 32) that contains original key.
  • parameter buffer: the buffer (length = 60) to store the sub-keys.

Examples

use aes_frast::aes_core::key_schedule_encrypt256;
use aes_frast::misc::hex;
use aes_frast::{KEY_BYTES_256BIT, N_SUBKEYS_256BIT};

// This example key came from NIST.FIPS.197 Appendix A.3
let origin_key: [u8; KEY_BYTES_256BIT] = [
    0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE,
    0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81,
    0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7,
    0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4,
];
let mut subkeys: [u32; N_SUBKEYS_256BIT] = [0; N_SUBKEYS_256BIT];

key_schedule_encrypt256(&origin_key, &mut subkeys);

let expected: [u32; N_SUBKEYS_256BIT] = [
    hex("603DEB10"), hex("15CA71BE"), hex("2B73AEF0"), hex("857D7781"),
    hex("1F352C07"), hex("3B6108D7"), hex("2D9810A3"), hex("0914DFF4"),
    hex("9BA35411"), hex("8E6925AF"), hex("A51A8B5F"), hex("2067FCDE"),
    hex("A8B09C1A"), hex("93D194CD"), hex("BE49846E"), hex("B75D5B9A"),
    hex("D59AECB8"), hex("5BF3C917"), hex("FEE94248"), hex("DE8EBE96"),
    hex("B5A9328A"), hex("2678A647"), hex("98312229"), hex("2F6C79B3"),
    hex("812C81AD"), hex("DADF48BA"), hex("24360AF2"), hex("FAB8B464"),
    hex("98C5BFC9"), hex("BEBD198E"), hex("268C3BA7"), hex("09E04214"),
    hex("68007BAC"), hex("B2DF3316"), hex("96E939E4"), hex("6C518D80"),
    hex("C814E204"), hex("76A9FB8A"), hex("5025C02D"), hex("59C58239"),
    hex("DE136967"), hex("6CCC5A71"), hex("FA256395"), hex("9674EE15"),
    hex("5886CA5D"), hex("2E2F31D7"), hex("7E0AF1FA"), hex("27CF73C3"),
    hex("749C47AB"), hex("18501DDA"), hex("E2757E4F"), hex("7401905A"),
    hex("CAFAAAE3"), hex("E4D59B34"), hex("9ADF6ACE"), hex("BD10190D"),
    hex("FE4890D1"), hex("E6188D0B"), hex("046DF344"), hex("706C631E"),
];
for i in 0..N_SUBKEYS_256BIT {
    assert_eq!(subkeys[i], expected[i]);
}