#include "crypto1_bs.h"
#include <inttypes.h>
#define __STDC_FORMAT_MACROS
-#define llx PRIx64
-#define lli PRIi64
-#define lu PRIu32
// The following functions use this global or thread-local state
// It is sized to fit exactly KEYSTREAM_SIZE more states next to the initial state
// 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];
+ 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));
}
void crypto1_bs_print_states(bitslice_t bitsliced_states[]){
size_t slice_idx = 0;
- state_t values[MAX_BITSLICES];
+ state_t values[MAX_BITSLICES] = {{0x00}};
crypto1_bs_convert_states(bitsliced_states, values);
for(slice_idx = 0; slice_idx < MAX_BITSLICES; slice_idx++){
- printf("State %03zu: %012"llx"\n", slice_idx, values[slice_idx].value);
+ printf("State %03zu: %012" PRIx64 "\n", slice_idx, values[slice_idx].value);
}
}