AES_RETURN aes_xi(encrypt_key256)(const unsigned char *key, aes_encrypt_ctx cx[1]) { uint32_t ss[8]; cx->ks[0] = ss[0] = word_in(key, 0); cx->ks[1] = ss[1] = word_in(key, 1); cx->ks[2] = ss[2] = word_in(key, 2); cx->ks[3] = ss[3] = word_in(key, 3); cx->ks[4] = ss[4] = word_in(key, 4); cx->ks[5] = ss[5] = word_in(key, 5); cx->ks[6] = ss[6] = word_in(key, 6); cx->ks[7] = ss[7] = word_in(key, 7); #ifdef ENC_KS_UNROLL ke8(cx->ks, 0); ke8(cx->ks, 1); ke8(cx->ks, 2); ke8(cx->ks, 3); ke8(cx->ks, 4); ke8(cx->ks, 5); #else { uint32_t i; for(i = 0; i < 6; ++i) ke8(cx->ks, i); } #endif kef8(cx->ks, 6); cx->inf.l = 0; cx->inf.b[0] = 14 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif return EXIT_SUCCESS; }
static void aes_encrypt_key256(const unsigned char *key, uint32_t rk[]) { uint32_t ss[8]; rk[0] = ss[0] = word_in(key, 0); rk[1] = ss[1] = word_in(key, 1); rk[2] = ss[2] = word_in(key, 2); rk[3] = ss[3] = word_in(key, 3); rk[4] = ss[4] = word_in(key, 4); rk[5] = ss[5] = word_in(key, 5); rk[6] = ss[6] = word_in(key, 6); rk[7] = ss[7] = word_in(key, 7); #ifdef ENC_KS_UNROLL ke8(rk, 0); ke8(rk, 1); ke8(rk, 2); ke8(rk, 3); ke8(rk, 4); ke8(rk, 5); #else { uint32_t i; for (i = 0; i < 6; ++i) ke8(rk, i); } #endif /* ENC_KS_UNROLL */ kef8(rk, 6); }