1 #ifndef OT_SH_EXTENSION_H__ 2 #define OT_SH_EXTENSION_H__ 20 this->base_ot =
new OTNP(io);
21 this->s =
new bool[
l];
36 memcpy(k0, in_k0, l*
sizeof(
block));
42 base_ot->
recv(k0, s, l);
49 memcpy(k0, in_k0, l*
sizeof(
block));
50 memcpy(k1, in_k1, l*
sizeof(
block));
55 base_ot->
send(k0, k1, l);
59 if (length%128 !=0) length = (length/128 + 1)*128;
64 qT =
new block[length];
68 for(
int i = 0; i <
l; ++i) {
73 xorBlocks_arr(q+(i*length/128), q+(i*length/128), tmp, length/128);
75 sse_trans((uint8_t *)(qT), (uint8_t*)q, l, length);
81 int old_length = length;
82 if (length%128 !=0) length = (length/128 + 1)*128;
86 bool * r2 =
new bool[length];
87 memcpy(r2, r, old_length);
89 for(
int i = 0; i < length/128; ++i) {
94 tT =
new block[length];
97 for(
int i = 0; i <
l; ++i) {
107 sse_trans((uint8_t *)tT, (uint8_t*)t, l, length);
117 for(
int i = 0; i < length; ++i) {
120 pi.
H<2>(pad, pad, 2*i);
130 for(
int i = 0; i < length; ++i) {
133 data[i] =
xorBlocks(res[1], pi.
H(tT[i], 2*i+1));
135 data[i] =
xorBlocks(res[0], pi.
H(tT[i], 2*i));
169 for(
int i = 0; i < length; ++i) {
172 pi.
H<2>(pad, pad, 2*i);
183 for(
int i = 0; i < length; ++i) {
188 data[i] = pi.
H(tT[i], 2*i);
195 for(
int i = 0; i < length; ++i) {
198 pi.
H<2>(pad, pad, 2*i);
206 for(
int i = 0; i < length; ++i)
207 data[i] = pi.
H(tT[i], 2*i+r[i]);
212 #endif// OT_EXTENSION_H__ void send_cot(block *data0, block delta, int length)
Definition: shextension.h:150
block block_s
Definition: shextension.h:17
void cot_send_post(block *data0, block delta, int length)
Definition: shextension.h:167
void setup_send(block *in_k0=nullptr, bool *in_s=nullptr)
Definition: shextension.h:33
PRP pi
Definition: shextension.h:12
void send_data(const void *data, int nbyte)
Definition: io_channel.h:14
void send_rot(block *data0, block *data1, int length)
Definition: shextension.h:158
block * k0
Definition: shextension.h:14
void recv_data(void *data, int nbyte)
Definition: io_channel.h:17
void random_bool(bool *data, int length)
Definition: prg.h:57
void recv_rot(block *data, const bool *b, int length)
Definition: shextension.h:162
__m128i block
Definition: block.h:8
void send(const block *data0, const block *data1, int length)
Definition: ot.h:10
block xorBlocks(block x, block y)
Definition: block.h:35
Definition: net_io_channel.h:22
void sse_trans(uint8_t *out, uint8_t const *inp, int nrows, int ncols)
Definition: block.h:85
void recv_impl(block *data, const bool *b, int length)
Definition: shextension.h:145
void recv_pre(const bool *r, int length)
Definition: shextension.h:80
void got_recv_post(block *data, const bool *r, int length)
Definition: shextension.h:128
bool * s
Definition: shextension.h:15
SHOTExtension(NetIO *io)
Definition: shextension.h:19
void recv_cot(block *data, const bool *b, int length)
Definition: shextension.h:154
void setup_recv(block *in_k0=nullptr, block *in_k1=nullptr)
Definition: shextension.h:46
void random_block(block *data, int nblocks=1)
Definition: prg.h:75
block * k1
Definition: shextension.h:14
void rot_send_post(block *data0, block *data1, int length)
Definition: shextension.h:193
block H(block in, uint64_t id)
Definition: prp.h:48
void reseed(const void *key, uint64_t id=0)
Definition: prg.h:41
block * tT
Definition: shextension.h:17
void got_send_post(const block *data0, const block *data1, int length)
Definition: shextension.h:115
OTNP * base_ot
Definition: shextension.h:10
NetIO * io
Definition: ot.h:9
const int l
Definition: shextension.h:13
void recv(block *data, const bool *b, int length)
Definition: ot.h:13
~SHOTExtension()
Definition: shextension.h:26
void rot_recv_post(block *data, const bool *r, int length)
Definition: shextension.h:205
void random_data(void *data, int nbytes)
Definition: prg.h:49
bool setup
Definition: shextension.h:18
Definition: shextension.h:9
void send_pre(int length)
Definition: shextension.h:58
PRG prg
Definition: shextension.h:11
block bool_to128(const bool *data)
Definition: utils.hpp:76
void xorBlocks_arr(block *res, const block *x, const block *y, int nblocks)
Definition: block.h:37
void cot_recv_post(block *data, const bool *r, int length)
Definition: shextension.h:181
void send_impl(const block *data0, const block *data1, int length)
Definition: shextension.h:140
block * qT
Definition: shextension.h:17