Supported Data Types
The FHE data types supported by Concrete-core belong to several categories, described below.
The supported encryption keys are GLWE secret keys, LWE secret keys and LWE public keys.
A number of keyswitch key types are supported:
- The LWE keyswitch key and its compressed version (the seeded LWE keyswitch key).
- The LWE packing keyswitch key
- The LWE private functional packing keyswitch key
- The list of LWE private functional packing keyswitch keys for circuit bootstrapping
Concrete-coreexposes a type for the LWE bootstrap key and its compressed equivalent.
Concrete-corecurrently supports LWE ciphertexts and their compressed equivalent (the seeded LWE ciphertexts). It also exposes types for GLWE ciphertexts and their compressed equivalent, and for GGSW ciphertexts and their compressed equivalent. All those ciphertext types are also exposed in their
Vectorform, which corresponds to lists of such objects that are contiguous in memory. Having those vector types is useful to send batches of data to a given hardware, for example.
Concrete-corecurrently supports an encoder type and its vector form.
Two types of non-encrypted data are exposed in the form of types in the API (aside from cryptographic parameters types):
- Plaintexts (and their vector form): unsigned integers in 32 or 64 bits representation that should contain an encoded message ready for encryption;
- Cleartexts (and their vector form): data of arbitrary type that is used in clear during a homomorphic computation (it is not encoded, and may be a float, a signed integer, etc.).