myl7/fss 2.0.0
Function secret sharing (FSS) primitives including distributed point/comparison function (DPF/DCF)
Loading...
Searching...
No Matches
fss::prp::Aes128FeistelRaw Class Reference

Small-domain AES-128 Feistel PRP for Cuckoo hashing, computed with AES-NI intrinsics. More...

Public Member Functions

 Aes128FeistelRaw (int4 seed)
 Constructor pre-expanding the round keys for seed.
__uint128_t Permu (int4 seed, __uint128_t x, __uint128_t domain)
 Small-domain PRP on [0, domain) using 4-round Feistel + cycle-walking.

Detailed Description

Small-domain AES-128 Feistel PRP for Cuckoo hashing, computed with AES-NI intrinsics.

Bit-exact with Aes128Feistel and host-only like it, but free of OpenSSL and of per-call key schedules: intended for DMPF/VDMPF setup and evaluation paths whose PRP seed stays fixed for the duration of one mapping build.

Constructor & Destructor Documentation

◆ Aes128FeistelRaw()

fss::prp::Aes128FeistelRaw::Aes128FeistelRaw ( int4 seed)
inlineexplicit

Constructor pre-expanding the round keys for seed.

Parameters
seed16-byte PRP key the mapping build will use.

Member Function Documentation

◆ Permu()

__uint128_t fss::prp::Aes128FeistelRaw::Permu ( int4 seed,
__uint128_t x,
__uint128_t domain )
inline

Small-domain PRP on [0, domain) using 4-round Feistel + cycle-walking.

Bit-exact with Aes128Feistel::Permu. Host-only. Device use fails to build with an unresolved-extern error naming fss_host_only_Aes128FeistelRaw_used_in_device_code.

Parameters
seed16-byte PRP key. Round keys are expanded on first use per seed and cached, so repeated calls with one seed skip the expansion.
xInput in [0, domain).
domainDomain size. Must be >= 2.
Returns
Output in [0, domain).
Precondition
x < domain. A violation aborts with a diagnostic in Debug builds and is undefined behavior in Release builds.

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