|
myl7/fss 2.0.0
Function secret sharing (FSS) primitives including distributed point/comparison function (DPF/DCF)
|
Small-domain PRP via 4-round Feistel network with AES-128 round function and cycle-walking, computed with AES-NI intrinsics. More...
#include <fss/prp.cuh>#include <cuda_runtime.h>#include <cstdint>#include <cassert>#include <fss/util.cuh>#include <wmmintrin.h>#include <emmintrin.h>#include <smmintrin.h>Classes | |
| class | fss::prp::Aes128FeistelRaw |
| Small-domain AES-128 Feistel PRP for Cuckoo hashing, computed with AES-NI intrinsics. More... | |
Functions | |
| void | fss::prp::fss_host_only_Aes128FeistelRaw_used_in_device_code () |
| Declared and never defined. | |
Small-domain PRP via 4-round Feistel network with AES-128 round function and cycle-walking, computed with AES-NI intrinsics.
Bit-exact with Aes128Feistel: same construction (4-round Feistel, per-round key seed ^ round, cycle-walking), same AES-128 block cipher, but every AES block operation runs as ten aesenc intrinsics instead of an OpenSSL EVP call. The four per-round key schedules are expanded once per seed and cached in the instance, so a mapping build with a fixed sigma expands them a single time. The Permu seed parameter keeps its concept signature; passing a different seed than the cached one re-expands the schedules, so every call uses the seed it was given.
Only for host side (x86-64 with AES-NI). Instances are trivially copyable; the cache makes concurrent Permu calls with differing seeds on one instance a data race, like Aes128Feistel's shared OpenSSL context. Device use of Permu() fails to build with an unresolved-extern error naming fss_host_only_Aes128FeistelRaw_used_in_device_code.
| void fss::prp::fss_host_only_Aes128FeistelRaw_used_in_device_code | ( | ) |
Declared and never defined.
Device code that reaches it fails to link with an unresolved-extern error that names this symbol.