示例#1
0
文件: rlwe.c 项目: DevCybran/rlwekex
/* Constant time version. */
static uint32_t single_sample_ct(uint64_t *in) {
	uint32_t index = 0, i;
	for (i = 0; i < 52; i++) {
		index = ct_select_u64(index, i, cmplt_ct(in, rlwe_table[i]));
	}
	return index;
}
示例#2
0
文件: rlwe.c 项目: google/jalic
/* Constant time version. */
static uint32_t single_sample_ct(uint64_t *in) {
	uint32_t index = 0, i;

	for (i = 0; i < 52; i++) {
		uint32_t mask1, mask2;
		mask1 = cmplt_ct(in, rlwe_table[i]);
		mask1 = (uint32_t) (0 - (int32_t) mask1);
		mask2 = (~mask1);
		index = ((index & mask1) | (i & mask2));
	}
	return index;
}
示例#3
0
文件: rlwe.c 项目: DevCybran/rlwekex
static uint32_t single_sample(uint64_t *in) {
	uint32_t lower_index = 0, this_index = 32, upper_index = 64;
	int i;
	for (i = 0; i < 6; i++) {
		if (cmplt_ct(in, rlwe_table[this_index])) {
			upper_index = this_index;
		} else {
			lower_index = this_index;
		}
		this_index = (lower_index + upper_index) / 2;
	}
	return lower_index;
}