AES_RETURN aes_decrypt_key192(const unsigned char *key, aes_decrypt_ctx cx[1]) { uint_32t ss[7]; #if defined( d_vars ) d_vars; #endif cx->ks[v(48,(0))] = ss[0] = word_in(key, 0); cx->ks[v(48,(1))] = ss[1] = word_in(key, 1); cx->ks[v(48,(2))] = ss[2] = word_in(key, 2); cx->ks[v(48,(3))] = ss[3] = word_in(key, 3); #if DEC_UNROLL == NONE cx->ks[v(48,(4))] = ss[4] = word_in(key, 4); cx->ks[v(48,(5))] = ss[5] = word_in(key, 5); { uint_32t i; for(i = 0; i < 7; ++i) k6e(cx->ks, i); k6ef(cx->ks, 7); #if !(DEC_ROUND == NO_TABLES) for(i = N_COLS; i < 12 * N_COLS; ++i) cx->ks[i] = inv_mcol(cx->ks[i]); #endif } #else cx->ks[v(48,(4))] = ff(ss[4] = word_in(key, 4)); cx->ks[v(48,(5))] = ff(ss[5] = word_in(key, 5)); kdf6(cx->ks, 0); kd6(cx->ks, 1); kd6(cx->ks, 2); kd6(cx->ks, 3); kd6(cx->ks, 4); kd6(cx->ks, 5); kd6(cx->ks, 6); kdl6(cx->ks, 7); #endif cx->inf.l = 0; cx->inf.b[0] = 12 * 16; #ifdef USE_VIA_ACE_IF_PRESENT if(VIA_ACE_AVAILABLE) cx->inf.b[1] = 0xff; #endif #if defined( AES_ERR_CHK ) return EXIT_SUCCESS; #endif }
static void aes_decrypt_key192(const unsigned char *key, uint32_t rk[]) { uint32_t ss[7]; #if defined(d_vars) d_vars; #endif rk[v(48, (0))] = ss[0] = word_in(key, 0); rk[v(48, (1))] = ss[1] = word_in(key, 1); rk[v(48, (2))] = ss[2] = word_in(key, 2); rk[v(48, (3))] = ss[3] = word_in(key, 3); #ifdef DEC_KS_UNROLL ss[4] = word_in(key, 4); rk[v(48, (4))] = ff(ss[4]); ss[5] = word_in(key, 5); rk[v(48, (5))] = ff(ss[5]); kdf6(rk, 0); kd6(rk, 1); kd6(rk, 2); kd6(rk, 3); kd6(rk, 4); kd6(rk, 5); kd6(rk, 6); kdl6(rk, 7); #else rk[v(48, (4))] = ss[4] = word_in(key, 4); rk[v(48, (5))] = ss[5] = word_in(key, 5); { uint32_t i; for (i = 0; i < 7; ++i) k6e(rk, i); k6ef(rk, 7); #if !(DEC_ROUND == NO_TABLES) for (i = MAX_AES_NB; i < 12 * MAX_AES_NB; ++i) rk[i] = inv_mcol(rk[i]); #endif } #endif }