From 0fb8e1716dca936bc905bb9042f316e294cf0227 Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sun, 22 Nov 2020 11:48:13 -0500 Subject: lib: aes: add InvMixColumns --- lib/aes.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'lib/aes.go') diff --git a/lib/aes.go b/lib/aes.go index a9493c4..476b366 100644 --- a/lib/aes.go +++ b/lib/aes.go @@ -3,6 +3,25 @@ package lib +func InvMixColumns(state [][]byte) [][]byte { + + // Initialize new state. + n_state := make([][]byte, 4) + nb := 4 + for r := 0; r < 4; r++ { + n_state[r] = make([]byte, nb) + } + + // Inverse mix columns transformation. + for c := 0; c < nb; c++ { + n_state[0][c] = GFMultiply(0x0e, state[0][c]) ^ GFMultiply(0x0b, state[1][c]) ^ GFMultiply(0x0d, state[2][c]) ^ GFMultiply(0x09, state[3][c]) + n_state[1][c] = GFMultiply(0x09, state[0][c]) ^ GFMultiply(0x0e, state[1][c]) ^ GFMultiply(0x0b, state[2][c]) ^ GFMultiply(0x0d, state[3][c]) + n_state[2][c] = GFMultiply(0x0d, state[0][c]) ^ GFMultiply(0x09, state[1][c]) ^ GFMultiply(0x0e, state[2][c]) ^ GFMultiply(0x0b, state[3][c]) + n_state[3][c] = GFMultiply(0x0b, state[0][c]) ^ GFMultiply(0x0d, state[1][c]) ^ GFMultiply(0x09, state[2][c]) ^ GFMultiply(0x0e, state[3][c]) + } + return n_state +} + func InvSubBytes(state [][]byte) [][]byte { nb := 4 for r := 0; r < 4; r++ { -- cgit v1.2.3