|
|
|
@ -50,11 +50,11 @@ static inline void addkey(uint64_t state[2], uint64_t round_key[2]){ |
|
|
|
|
state[1] ^= round_key[1]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void subshift(uint8_t s0[4], uint8_t s1[4], uint8_t s2[4], uint8_t s3[4], uint8_t *box){ |
|
|
|
|
static void subshift(uint8_t s0[4], uint8_t s1[4], uint8_t s3[4], uint8_t *box){ |
|
|
|
|
int t; |
|
|
|
|
s0[0]=box[s0[ 0]]; s0[ 4]=box[s0[ 4]]; s0[ 8]=box[s0[ 8]]; s0[12]=box[s0[12]]; |
|
|
|
|
t=s1[0]; s1[0]=box[s1[ 4]]; s1[ 4]=box[s1[ 8]]; s1[ 8]=box[s1[12]]; s1[12]=box[t]; |
|
|
|
|
t=s2[0]; s2[0]=box[s2[ 8]]; s2[ 8]=box[ t]; t=s2[ 4]; s2[ 4]=box[s2[12]]; s2[12]=box[t]; |
|
|
|
|
t=s0[2]; s0[2]=box[s0[10]]; s0[10]=box[ t]; t=s0[ 6]; s0[ 6]=box[s0[14]]; s0[14]=box[t]; |
|
|
|
|
t=s3[0]; s3[0]=box[s3[12]]; s3[12]=box[s3[ 8]]; s3[ 8]=box[s3[ 4]]; s3[ 4]=box[t]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -96,7 +96,7 @@ static inline void crypt(AVAES *a, int s, uint8_t *sbox, uint32_t *multbl){ |
|
|
|
|
mix2(a->state, multbl, 3-s, 1+s); |
|
|
|
|
} |
|
|
|
|
addkey(a->state, a->round_key[1]); |
|
|
|
|
subshift(a->state[0], a->state[0]+3-s, a->state[0]+2, a->state[0]+1+s, sbox); |
|
|
|
|
subshift(a->state[0], a->state[0]+3-s, a->state[0]+1+s, sbox); |
|
|
|
|
addkey(a->state, a->round_key[0]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -175,7 +175,7 @@ int av_aes_init(AVAES *a, uint8_t *key, int key_bits, int decrypt) { |
|
|
|
|
|
|
|
|
|
if(decrypt){ |
|
|
|
|
for(i=1; i<rounds; i++){ |
|
|
|
|
subshift(a->round_key[i][0], a->round_key[i][0]+3, a->round_key[i][0]+2, a->round_key[i][0]+1, sbox); |
|
|
|
|
subshift(a->round_key[i][0], a->round_key[i][0]+3, a->round_key[i][0]+1, sbox); |
|
|
|
|
mix2(a->round_key[i], dec_multbl, 1, 3); |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|