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