/* -------------------------------------------------------------------------- */ void aes_mixColumns(uint8_t *buf) { register uint8_t i, a, b, c, d, e; for (i = 0; i < 16; i += 4) { a = buf[i]; b = buf[i + 1]; c = buf[i + 2]; d = buf[i + 3]; e = a ^ b ^ c ^ d; buf[i] ^= e ^ rj_xtime(a^b); buf[i+1] ^= e ^ rj_xtime(b^c); buf[i+2] ^= e ^ rj_xtime(c^d); buf[i+3] ^= e ^ rj_xtime(d^a); } } /* aes_mixColumns */
void Aes256::mix_columns(unsigned char* buffer) { register unsigned char i, a, b, c, d, e; for (i = 0; i < 16; i += 4) { a = buffer[i]; b = buffer[i + 1]; c = buffer[i + 2]; d = buffer[i + 3]; e = a ^ b ^ c ^ d; buffer[i] ^= e ^ rj_xtime(a^b); buffer[i + 1] ^= e ^ rj_xtime(b^c); buffer[i + 2] ^= e ^ rj_xtime(c^d); buffer[i + 3] ^= e ^ rj_xtime(d^a); } }
/* -------------------------------------------------------------------------- */ void aes_mixColumns_inv(uint8_t *buf) { register uint8_t i, a, b, c, d, e, x, y, z; for (i = 0; i < 16; i += 4) { a = buf[i]; b = buf[i + 1]; c = buf[i + 2]; d = buf[i + 3]; e = a ^ b ^ c ^ d; z = rj_xtime(e); x = e ^ rj_xtime(rj_xtime(z^a^c)); y = e ^ rj_xtime(rj_xtime(z^b^d)); buf[i] ^= x ^ rj_xtime(a^b); buf[i+1] ^= y ^ rj_xtime(b^c); buf[i+2] ^= x ^ rj_xtime(c^d); buf[i+3] ^= y ^ rj_xtime(d^a); } } /* aes_mixColumns_inv */
void Aes256::mix_columns_inv(unsigned char* buffer) { register unsigned char i, a, b, c, d, e, x, y, z; for (i = 0; i < 16; i += 4) { a = buffer[i]; b = buffer[i + 1]; c = buffer[i + 2]; d = buffer[i + 3]; e = a ^ b ^ c ^ d; z = rj_xtime(e); x = e ^ rj_xtime(rj_xtime(z^a^c)); y = e ^ rj_xtime(rj_xtime(z^b^d)); buffer[i] ^= x ^ rj_xtime(a^b); buffer[i + 1] ^= y ^ rj_xtime(b^c); buffer[i + 2] ^= x ^ rj_xtime(c^d); buffer[i + 3] ^= y ^ rj_xtime(d^a); } }