1 #ifndef HALFGATE_GEN_H__ 2 #define HALFGATE_GEN_H__ 13 template<
typename T, RTCktOpt rt>
16 template<
typename T, RTCktOpt rt>
19 template<
typename T, RTCktOpt rt>
22 template<
typename T, RTCktOpt rt>
25 template<
typename T, RTCktOpt rt>
28 template<
typename T, RTCktOpt rt = on>
58 block out[2], table[2];
61 }
else if (
isOne(&a)) {
63 }
else if (
isOne(&b)){
67 &out[0], &out[1], delta, table,
gid++, prp.
aes);
68 io->send_block(table, 2);
90 for(
int i = 0; i < length; ++i) {
91 h[0] = prp.
H(b0[i], 2*i);
92 h[1] = prp.
H(b0[i], 2*i+1);
93 h[2] = prp.
H(b1[i], 2*i);
94 h[3] = prp.
H(b1[i], 2*i+1);
119 gc_and_ptr = &halfgate_gen_and<T, RTCktOpt::off>;
120 gc_xor_ptr = &halfgate_gen_xor<T, RTCktOpt::off>;
121 gc_not_ptr = &halfgate_gen_not<T, RTCktOpt::off>;
128 __m128i neq = _mm_xor_si128(b, delta);
129 return _mm_testz_si128(neq, neq);
134 constant[1] =
xorBlocks(constant[1],delta);
140 block out[2], table[2];
142 &out[0], &out[1], delta, table,
gid++, prp.
aes);
143 io->send_block(table, 2);
154 for(
int i = 0; i < length; ++i) {
155 h[0] = prp.
H(b0[i], 2*i);
156 h[1] = prp.
H(b0[i], 2*i+1);
157 h[2] = prp.
H(b1[i], 2*i);
158 h[3] = prp.
H(b1[i], 2*i+1);
163 io->send_block(h, 4);
168 template<
typename T, RTCktOpt rt>
172 template<
typename T, RTCktOpt rt>
176 template<
typename T, RTCktOpt rt>
180 template<
typename T, RTCktOpt rt>
184 template<
typename T, RTCktOpt rt>
189 #endif// HALFGATE_GEN_H__ static block make_delta(const block &a)
Definition: garble_circuit.h:30
block delta
Definition: halfgate_gen.h:105
bool halfgate_gen_is_public(GarbleCircuit *gc, const block &b, int party)
Definition: halfgate_gen.h:169
HalfGateGen(T *io)
Definition: halfgate_gen.h:36
block halfgate_gen_and(GarbleCircuit *gc, const block &a, const block &b)
Definition: halfgate_gen.h:177
__m128i block
Definition: block.h:8
bool isZero(const block *b)
Definition: block.h:71
T * io
Definition: halfgate_gen.h:108
bool with_file_io
Definition: halfgate_gen.h:35
Hash hash
Definition: halfgate_gen.h:34
uint64_t gid
Definition: garble_circuit.h:8
block xorBlocks(block x, block y)
Definition: block.h:35
block public_label_impl(bool b)
Definition: halfgate_gen.h:54
bool isOne(const block *b)
Definition: block.h:75
block(* gc_and_ptr)(GarbleCircuit *gc, const block &a, const block &b)
Definition: garble_circuit.h:11
HalfGateGen(T *io)
Definition: halfgate_gen.h:112
void set_delta(const block &_delta)
Definition: halfgate_gen.h:131
bool is_public_impl(const block &b, int party)
Definition: halfgate_gen.h:48
#define zero_block()
Definition: block.h:66
block(* public_label_ptr)(GarbleCircuit *gc, bool b)
Definition: garble_circuit.h:10
RTCktOpt
Definition: garble_circuit.h:6
block gen_xor(const block &a, const block &b)
Definition: halfgate_gen.h:72
block halfgate_gen_xor(GarbleCircuit *gc, const block &a, const block &b)
Definition: halfgate_gen.h:181
T * io
Definition: halfgate_gen.h:33
bool isDelta(const block &b)
Definition: halfgate_gen.h:127
void generic_to_xor(const block *new_b0, const block *b0, const block *b1, int length)
Definition: halfgate_gen.h:88
void random_block(block *data, int nblocks=1)
Definition: prg.h:75
const char fix_key[]
Definition: block.h:130
Definition: garble_circuit.h:6
block H(block in, uint64_t id)
Definition: prp.h:48
AES_KEY * aes
Definition: prp.h:12
block(* gc_not_ptr)(GarbleCircuit *gc, const block &a)
Definition: garble_circuit.h:13
Hash hash
Definition: halfgate_gen.h:109
block gen_not(const block &a)
Definition: halfgate_gen.h:149
block(* gc_xor_ptr)(GarbleCircuit *gc, const block &a, const block &b)
Definition: garble_circuit.h:12
block delta
Definition: halfgate_gen.h:30
block gen_not(const block &a)
Definition: halfgate_gen.h:80
block public_label_impl(bool b)
Definition: halfgate_gen.h:136
bool is_public_impl(const block &b, int party)
Definition: halfgate_gen.h:124
block halfgate_gen_not(GarbleCircuit *gc, const block &a)
Definition: halfgate_gen.h:185
PRP prp
Definition: halfgate_gen.h:31
void generic_to_xor(const block *new_b0, const block *b0, const block *b1, int length)
Definition: halfgate_gen.h:152
#define one_block()
Definition: block.h:67
block seed
Definition: halfgate_gen.h:107
Definition: garble_circuit.h:7
block gen_and(const block &a, const block &b)
Definition: halfgate_gen.h:139
bool(* is_public_ptr)(GarbleCircuit *gc, const block &b, int party)
Definition: garble_circuit.h:9
block halfgate_gen_public_label(GarbleCircuit *gc, bool b)
Definition: halfgate_gen.h:173
Definition: halfgate_gen.h:29
block gen_and(const block &a, const block &b)
Definition: halfgate_gen.h:57
block gen_xor(const block &a, const block &b)
Definition: halfgate_gen.h:146
block seed
Definition: halfgate_gen.h:32
void set_delta(const block &_delta)
Definition: halfgate_gen.h:51
PRP prp
Definition: halfgate_gen.h:106