// note that bytes are sliced and unsliced with reversed endianness
inline void crypto1_bs_convert_states(bitslice_t bitsliced_states[], state_t regular_states[]){
size_t bit_idx = 0, slice_idx = 0;
- state_t values[MAX_BITSLICES] = {{0x00}};
+ state_t values[MAX_BITSLICES];
+ memset(values, 0x0, sizeof(values));
+
for(slice_idx = 0; slice_idx < MAX_BITSLICES; slice_idx++){
for(bit_idx = 0; bit_idx < STATE_SIZE; bit_idx++){
bool bit = get_vector_bit(slice_idx, bitsliced_states[bit_idx]);
// swap endianness
values[slice_idx].value = rev_state_t(values[slice_idx].value);
// roll off unused bits
- values[slice_idx].value >>= ((sizeof(state_t)*8)-STATE_SIZE);
+ //values[slice_idx].value >>= ((sizeof(state_t)*8)-STATE_SIZE); // - 48
+ values[slice_idx].value >>= 16;
}
memcpy(regular_states, values, sizeof(values));
}
return buf;
}
-void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
-{
+void num_to_bytes(uint64_t n, size_t len, uint8_t* dest) {
while (len--) {
dest[len] = (uint8_t) n;
n >>= 8;
}
}
-uint64_t bytes_to_num(uint8_t* src, size_t len)
-{
+uint64_t bytes_to_num(uint8_t* src, size_t len) {
uint64_t num = 0;
- while (len--)
- {
+ while (len--) {
num = (num << 8) | (*src);
src++;
}
n >>= 1;
}
}
+
//least significant bit first
void num_to_bytebitsLSBF(uint64_t n, size_t len, uint8_t *dest) {
for(int i = 0 ; i < len ; ++i) {
}
}
-
// aa,bb,cc,dd,ee,ff,gg,hh, ii,jj,kk,ll,mm,nn,oo,pp
// to
// hh,gg,ff,ee,dd,cc,bb,aa, pp,oo,nn,mm,ll,kk,jj,ii
}
// Swap bit order on a uint32_t value. Can be limited by nrbits just use say 8bits reversal
+// And clears the rest of the bits.
uint32_t SwapBits(uint32_t value, int nrbits) {
uint32_t newvalue = 0;
for(int i = 0; i < nrbits; i++) {