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];
}
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]);
}
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{