void round_function(uint8_t *data,uint8_t *rkey,uint8_t mode){ uint8_t i, temp[4]; for(i=0;i<8;i++) data[i] ^= READ_ROUND_KEY_BYTE(rkey[i]); if(mode==ENC){ S_layer(data) L_layer(data) } else if(mode==DEC){ L_layerInv(data) S_layer(data) } else{//last-enc or first-dec round S_layer(data) } }
void round_functionNoKS(uint8_t *data,uint8_t *rkey,uint8_t mode,uint8_t round){ uint8_t i; if(mode==LST) S_layer(data);//last-enc or first-dec round else{ for(i=0;i<4;i++){ data[2*i] ^= READ_ROUND_KEY_BYTE(rkey[2*i]); if(mode==ENC) data[2*i+1] ^= (READ_ROUND_KEY_BYTE(rkey[2*i+1])+READ_ROUND_CONSTANT_BYTE(round_constants[round*4+i])); else data[2*i+1] ^= (READ_ROUND_KEY_BYTE(rkey[2*i+1])+READ_ROUND_CONSTANT_BYTE(round_constants[76-round*4+i])); } if(mode==ENC){ S_layer(data); L_layer(data); } else if(mode==DEC){ L_layerInv(data); S_layer(data); } } }