def __init__(self, value, start, lengths, entries_per_block): oram.Block.__init__(self, value, lengths) length = sum(self.lengths) used_bits = entries_per_block * length self.value_bits = self.value.bit_decompose(used_bits) start_length = util.log2(entries_per_block) self.start_bits = util.bit_decompose(start, start_length) self.start_demux = oram.demux_list(self.start_bits) self.entries = [sbits.bit_compose(self.value_bits[i*length:][:length]) \ for i in range(entries_per_block)] self.mul_entries = list(map(operator.mul, self.start_demux, self.entries)) self.bits = sum(self.mul_entries).bit_decompose() self.mul_value = sbits.compose(self.mul_entries, sum(self.lengths)) self.anti_value = self.mul_value + self.value
def __init__(self, value, start, lengths, entries_per_block): oram.Block.__init__(self, value, lengths) length = sum(self.lengths) used_bits = entries_per_block * length self.value_bits = self.value.bit_decompose(used_bits) start_length = util.log2(entries_per_block) self.start_bits = util.bit_decompose(start, start_length) self.start_demux = oram.demux_list(self.start_bits) self.entries = [sbits.bit_compose(self.value_bits[i*length:][:length]) \ for i in range(entries_per_block)] self.mul_entries = map(operator.mul, self.start_demux, self.entries) self.bits = sum(self.mul_entries).bit_decompose() self.mul_value = sbits.compose(self.mul_entries, sum(self.lengths)) self.anti_value = self.mul_value + self.value