CiFEr
Modules
Inner product schemes

Functional encryption schemes for inner products. Based on security assumptions, the schemes are organized into submodules simple (s-IND-CPA security), and fullysec (e.g. "fully secure", offering adaptive IND-CPA security). More...

Modules

 Fully secure schemes
 Fully secure schemes for functional encryption of inner products.
 
 Simple schemes
 Simple schemes for functional encryption of inner products. All implementations in this package are based on the reference paper by Abdalla et. al (see https://eprint.iacr.org/2015/017.pdf). The reference scheme offers selective security under chosen-plaintext attacks (s-IND-CPA security).
 

Detailed Description

Functional encryption schemes for inner products. Based on security assumptions, the schemes are organized into submodules simple (s-IND-CPA security), and fullysec (e.g. "fully secure", offering adaptive IND-CPA security).

Note that in both modules you will find single input as well as multi input schemes. Construction of all multi input schemes is based on the work of Abdalla et. al (see paper: https://eprint.iacr.org/2017/972.pdf)

Most of the functions write their results to pointers which are passed as parameters. The memory used by these results needs to be freed by the caller with xyz_free functions (each struct defined in this library has a respective struct_name_free function). These free the memory used by the struct's members, but not the memory used by the struct itself. This is due to the initialization of the structs' members in functions such as generate_keys and derive_fe_key - this makes the API simpler and easier to use as the user of the library does not to know all struct fields.

The results of the functions are the parameters listed before the pointer to the struct in the parameter list. Consult the appropriate documentation for each scheme for more thorough descriptions of functions and their results.