This PR implements a decentralized multi-client inner product scheme based on paper by Abdalla, Benhamouda, Kohlweiss, and Waldner: Decentralizing Inner-Product Functional Encryption. It builds on the already implemented multi-client Damgard type scheme and follows the style used in the implementation in GoFE. In particular, two big changes are introduced:
New decentralized multi-client inner product scheme is implemented.
Damgard type multi-client inner product scheme is modified to better fit the decentralization.
Additionally, many small changes have been introduced, making the code more consistent, and fixing some bugs:
All (!) FE schemes have been modified in the name of the function that produces functional encryption keys. In particular, all the functions have now in the name derive_fe_key and the key is called fe_key. Before some had this name, some were called derive_key and derived_key, etc.
A bug in src/sample/uniform.c in function cfe_uniform_sample_vec_det is fixed where random values are sampled but never used so the function was always returning zero vector.
Small improvement of documentation of DIPPE.
Small bug fix in src/internal/hash.c in functions cfe_hash_G1 and cfe_hash_G2 where sizeof is replaced with strlen.
This PR implements a decentralized multi-client inner product scheme based on paper by Abdalla, Benhamouda, Kohlweiss, and Waldner: Decentralizing Inner-Product Functional Encryption. It builds on the already implemented multi-client Damgard type scheme and follows the style used in the implementation in GoFE. In particular, two big changes are introduced:
Additionally, many small changes have been introduced, making the code more consistent, and fixing some bugs:
derive_fe_key
and the key is calledfe_key
. Before some had this name, some were calledderive_key
andderived_key
, etc.src/sample/uniform.c
in functioncfe_uniform_sample_vec_det
is fixed where random values are sampled but never used so the function was always returning zero vector.src/internal/hash.c
in functionscfe_hash_G1
andcfe_hash_G2
wheresizeof
is replaced withstrlen
.