LIBFENC -- The Functional Encryption Library ------------------------------------------------------------------------------------------- The functional encryption library is an extensible library implementing several functional encryption schemes. Functional encryption is a new class of encryption that includes Attribute-Based (ABE) and Identity-Based encryption (IBE). The library known as libfenc has a few dependencies: the Pairing-based Crypto (PBC) library which you can download at http://crypto.stanford.edu/pbc/download.html, and the GNU Multi-Precision (GMP) library which you can download at http://gmplib.org/. Your operating system may have packages for installing these automatically. If not, Follow the README documents found within the libraries to install on your system. Within the sub-directories you will find very useful tools and documentation to help you get acclimated with the libfenc source code. The following describes what is contained in each directory: - ./ : the libfenc source code that implements a few cryptosystems based on ABE. This code is research quality and is currently in pre-release stage. - doc : this directory provides documentation for the libfenc design as well as the libfenc API and a useful tutorial for how to use the API under various ABE schemes. - doc/research : this directory provides the research papers of the ABE cryptosystems that the library implements. - misc : sample scripts to build the PBC and GMP in Mac OS X environments for standard (Intel) and mobile platforms (ARM). - tools : a tool chain that uses the CP- and KP-ABE schemes implemented by libfenc. This directory contains abe-setup (initializes the scheme parameters - master public and private parameters), abe-keygen (generates ABE private-keys for users), abe-enc (performs encryption on files under various policies), and abe-dec (performs corresponding decryption). Currently, the library works well on 32-bit systems but we have a few notable bugs on 64-bit systems. ------------------------------------------------------------------------------------------- This is a hybrid library implementing functional encryption and its many other special cases such as attribute-based encryption and identity-based encryption. The implementation of broadcast encryption will be coming soon.