myl7/fss 1.1.0
Function secret sharing (FSS) primitives including distributed point/comparison function (DPF/DCF)
Loading...
Searching...
No Matches
fss::HalfTreeDpf< in_bits, Group, Prg, In, par_depth > Class Template Reference

2-party DPF scheme using the Half-Tree construction. More...

Classes

struct  Cw
 Correction word. More...
 

Public Member Functions

void Gen (Cw cws[], int4 &ocw, const int4 s0s[2], In a, int4 b_buf)
 Key generation method.
 
int4 Eval (bool b, int4 s0, const Cw cws[], int4 ocw, In x)
 Evaluation method.
 
void EvalAll (bool b, int4 s0, const Cw cws[], int4 ocw, int4 ys[])
 Full domain evaluation method.
 

Public Attributes

Prg prg
 
int4 hash_key
 

Detailed Description

template<int in_bits, typename Group, typename Prg, typename In = uint, int par_depth = -1>
requires ((std::is_unsigned_v<In> || std::is_same_v<In, __uint128_t>) && in_bits <= sizeof(In) * 8 && Groupable<Group> && Prgable<Prg, 1>)
class fss::HalfTreeDpf< in_bits, Group, Prg, In, par_depth >

2-party DPF scheme using the Half-Tree construction.

Template Parameters
in_bitsInput domain bit size.
GroupType for the output domain. See Groupable.
PrgSee Prgable. Requires mul=1 (CCR hash, 128->128 bits).
InType for the input domain. From uint8_t to __uint128_t.
par_depth-1 is to use ceil(log(num of threads)), which should be good enough. Only EvalAll() uses it. See EvalAll() for details.

Member Function Documentation

◆ Eval()

template<int in_bits, typename Group , typename Prg , typename In = uint, int par_depth = -1>
int4 fss::HalfTreeDpf< in_bits, Group, Prg, In, par_depth >::Eval ( bool  b,
int4  s0,
const Cw  cws[],
int4  ocw,
In  x 
)
inline

Evaluation method.

Parameters
bParty index. False for 0 and true for 1.
s0Initial seed of the party.
cwsReturned by Gen().
ocwOutput correction word returned by Gen().
xEvaluated input.
Returns
Output share.

◆ EvalAll()

template<int in_bits, typename Group , typename Prg , typename In = uint, int par_depth = -1>
void fss::HalfTreeDpf< in_bits, Group, Prg, In, par_depth >::EvalAll ( bool  b,
int4  s0,
const Cw  cws[],
int4  ocw,
int4  ys[] 
)
inline

Full domain evaluation method.

Evaluate the key on each input, i.e., 0b00...0 - 0b11...1.

Parameters
ysPre-allocated output array. Its size must be at least 2 ** in_bits.

Support parallel using OpenMP.

◆ Gen()

template<int in_bits, typename Group , typename Prg , typename In = uint, int par_depth = -1>
void fss::HalfTreeDpf< in_bits, Group, Prg, In, par_depth >::Gen ( Cw  cws[],
int4 &  ocw,
const int4  s0s[2],
In  a,
int4  b_buf 
)
inline

Key generation method.

Parameters
cwsPre-allocated array of Cw as returns. The array size must be in_bits.
ocwOutput correction word (for the Convert step).
s0s2 initial seeds. Users can randomly sample them.
aThe special point alpha.
b_bufThe nonzero output value beta. Will be clamped and converted to the group element.

The documentation for this class was generated from the following file: