Module concrete_core::specification::engines
source · [−]Expand description
A module containing specifications of the concrete FHE engines.
In essence, engines are types which can be used to perform operations on fhe entities. These
engines contain all the side-resources needed to execute the operations they declare.
An engine must implement at least the AbstractEngine
super-trait, and can implement any
number of *Engine
traits.
Every fhe operation is defined by a *Engine
operation trait which always expose two entry
points:
- A safe entry point, returning a result, with an operation-dedicated error. When using this entry point, the user relies on the backend to check that the necessary preconditions are verified by the inputs, at the cost of a small overhead.
- An unsafe entry point, returning the raw result if any. When using this entry point, it is the user responsibility to ensure that the necessary preconditions are verified by the inputs. Breaking one of those preconditions will result in either a panic, or an FHE UB.
Engine errors
Implementing the AbstractEngine
trait for a given type implies specifying an associated
EngineError
which should be able to represent all the
possible error cases specific to this engine.
Each *Engine
trait is associated with a specialized *Error<E>
type (for example
LweCiphertextDiscardingKeyswitchError
is associated with
LweCiphertextDiscardingKeyswitchEngine
), which contains:
- Multiple general error variants which can be potentially produced by any backend
(see the
LweCiphertextDiscardingKeyswitchError::InputLweDimensionMismatch
variant for an example) - One specific variant which encapsulate the generic argument error
E
(see theEngine
variant for an example)
When implementing a particular *Engine
trait, this E
argument will be forced to be the
EngineError
from the AbstractEngine
super-trait, by the
signature of the operation entry point
(see LweCiphertextDiscardingKeyswitchEngine::discard_keyswitch_lwe_ciphertext
for instance).
This design makes it possible for each operation, to match the error exhaustively against both general error variants, and backend-related error variants.
A word about Generation and Creation engines
We have two families of engines to make entities:
- Generation engines which generate new entities with non trivial algorithms, e.g. a bootstrap key generation
- Creation engines which wrap/re-interpret data to create entities from them without involving
non trivial algorithms, like creating a
Cleartext64
from au64
by simply wrapping the value.
Operation semantics
For each possible operation, we try to support the three following semantics:
- Pure operations take their inputs as arguments, allocate an object
holding the result, and return it (example:
LweCiphertextEncryptionEngine
). They usually require more resources than other, because of the allocation. - Discarding operations take both their inputs and outputs as arguments
(example:
LweCiphertextDiscardingAdditionEngine
). In those operations, the data originally available in the outputs is not used for the computation. They are usually the fastest ones. - Fusing operations take both their inputs and outputs as arguments
(example:
LweCiphertextFusingAdditionEngine
). In those operations though, the data originally contained in the output is used for computation.
Enums
CleartextConversionEngine
trait.CleartextCreationEngine
trait.CleartextDiscardingConversionEngine
trait.CleartextDiscardingRetrievalEngine
trait.CleartextEncodingEngine
trait.CleartextRetrievalEngine
trait.CleartextVectorConversionEngine
trait.CleartextVectorCreationEngine
trait.CleartextVectorDiscardingConversionEngine
trait.CleartextVectorDiscardingRetrievalEngine
trait.CleartextVectorEncodingEngine
trait.CleartextVectorRetrievalEngine
trait.EncoderCreationEngine
trait.EncoderVectorCreationEngine
trait.EntityDeserializationEngine
trait.EntitySerializationEngine
trait.GgswCiphertextConversionEngine
trait.GgswCiphertextDiscardingConversionEngine
trait.GgswCiphertextScalarDiscardingEncryptionEngine
trait.GgswCiphertextScalarEncryptionEngine
trait.GgswCiphertextScalarTrivialEncryptionEngine
trait.GlweCiphertextConsumingRetrievalEngine
trait.GlweCiphertextConversionEngine
trait.GlweCiphertextCreationEngine
trait.GlweCiphertextDecryptionEngine
trait.GlweCiphertextDiscardingConversionEngine
trait.GlweCiphertextDiscardingDecryptionEngine
trait.GlweCiphertextDiscardingEncryptionEngine
trait.GlweCiphertextDiscardingTrivialEncryptionEngine
trait.GlweCiphertextEncryptionEngine
trait.GlweCiphertextGgswCiphertextDiscardingExternalProductEngine
trait.GlweCiphertextGgswCiphertextExternalProductEngine
trait.GlweCiphertextTrivialDecryptionEngine
trait.GlweCiphertextTrivialEncryptionEngine
trait.GlweCiphertextVectorConsumingRetrievalEngine
trait.GlweCiphertextVectorConversionEngine
trait.GlweCiphertextVectorCreationEngine
trait.GlweCiphertextVectorDecryptionEngine
trait.GlweCiphertextVectorDiscardingConversionEngine
trait.GlweCiphertextVectorDiscardingDecryptionEngine
trait.GlweCiphertextVectorDiscardingEncryptionEngine
trait.GlweCiphertextVectorEncryptionEngine
trait.GlweCiphertextVectorTrivialDecryptionEngine
trait.GlweCiphertextVectorTrivialEncryptionEngine
trait.GlweCiphertextVectorZeroEncryptionEngine
trait.GlweCiphertextZeroEncryptionEngine
trait.GlweCiphertextsGgswCiphertextFusingCmuxEngine
trait.GlweSecretKeyConversionEngine
trait.GlweSecretKeyDiscardingConversionEngine
trait.GlweSecretKeyGenerationEngine
trait.GlweSeededCiphertextEncryptionEngine
trait.GlweSeededCiphertextToGlweCiphertextTransformationEngine
trait.GlweSeededCiphertextVectorEncryptionEngine
trait.GlweSeededCiphertextVectorToGlweCiphertextVectorTransformationEngine
trait.GlweToLweSecretKeyTransformationEngine
trait.LweBootstrapKeyConsumingRetrievalEngine
trait.LweBootstrapKeyConversionEngine
trait.LweBootstrapKeyCreationEngine
trait.LweBootstrapKeyDiscardingConversionEngine
trait.LweBootstrapKeyGenerationEngine
trait.LweCiphertextCleartextDiscardingMultiplicationEngine
trait.LweCiphertextCleartextFusingMultiplicationEngine
trait.LweCiphertextConsumingRetrievalEngine
trait.LweCiphertextConversionEngine
trait.LweCiphertextCreationEngine
trait.LweCiphertextDecryptionEngine
trait.LweCiphertextDiscardingAdditionEngine
trait.LweCiphertextDiscardingBitExtractEngine
trait.LweCiphertextDiscardingBootstrapEngine
trait.LweCiphertextDiscardingCircuitBootstrapBooleanEngine
trait.LweCiphertextDiscardingConversionEngine
trait.LweCiphertextDiscardingDecryptionEngine
trait.LweCiphertextDiscardingEncryptionEngine
trait.LweCiphertextDiscardingExtractionEngine
trait.LweCiphertextDiscardingKeyswitchEngine
trait.LweCiphertextDiscardingLoadingEngine
trait.LweCiphertextDiscardingOppositeEngine
trait.LweCiphertextDiscardingPublicKeyEncryptionEngine
trait.LweCiphertextDiscardingStoringEngine
trait.LweCiphertextDiscardingSubtractionEngine
trait.LweCiphertextEncryptionEngine
trait.LweCiphertextFusingAdditionEngine
trait.LweCiphertextFusingOppositeEngine
trait.LweCiphertextFusingSubtractionEngine
trait.LweCiphertextLoadingEngine
trait.LweCiphertextPlaintextDiscardingAdditionEngine
trait.LweCiphertextPlaintextDiscardingSubtractionEngine
trait.LweCiphertextPlaintextFusingAdditionEngine
trait.LweCiphertextPlaintextFusingSubtractionEngine
trait.LweCiphertextTrivialDecryptionEngine
trait.LweCiphertextTrivialEncryptionEngine
trait.LweCiphertextVectorConsumingRetrievalEngine
trait.LweCiphertextVectorConversionEngine
trait.LweCiphertextVectorCreationEngine
trait.LweCiphertextVectorDecryptionEngine
trait.LweCiphertextVectorDiscardingAdditionEngine
trait.LweCiphertextVectorDiscardingAffineTransformationEngine
trait.LweCiphertextVectorDiscardingBootstrapEngine
trait.LweCiphertextVectorDiscardingCircuitBootstrapBooleanVerticalPackingEngine
trait.LweCiphertextVectorDiscardingConversionEngine
trait.LweCiphertextVectorDiscardingDecryptionEngine
trait.LweCiphertextVectorDiscardingEncryptionEngine
trait.LweCiphertextVectorDiscardingKeyswitchEngine
trait.LweCiphertextVectorDiscardingLoadingEngine
trait.LweCiphertextVectorDiscardingOppositeEngine
trait.LweCiphertextVectorDiscardingSubtractionEngine
trait.LweCiphertextVectorEncryptionEngine
trait.LweCiphertextVectorFusingAdditionEngine
trait.LweCiphertextVectorFusingOppositeEngine
trait.LweCiphertextVectorFusingSubtractionEngine
trait.LweCiphertextVectorGlweCiphertextDiscardingPackingKeyswitchEngine
trait.LweCiphertextVectorGlweCiphertextDiscardingPrivateFunctionalPackingKeyswitchEngine
trait.LweCiphertextVectorLoadingEngine
trait.LweCiphertextVectorTrivialDecryptionEngine
trait.LweCiphertextVectorTrivialEncryptionEngine
trait.LweCiphertextVectorZeroEncryptionEngine
trait.LweCiphertextZeroEncryptionEngine
trait.LweCircuitBootstrapPrivateFunctionalPackingKeyswitchKeysGenerationEngine
trait.LweKeyswitchKeyConsumingRetrievalEngine
trait.LweKeyswitchKeyConversionEngine
trait.LweKeyswitchKeyCreationEngine
trait.LweKeyswitchKeyDiscardingConversionEngine
trait.LweKeyswitchKeyGenerationEngine
trait.LwePackingKeyswitchKeyGenerationEngine
trait.LwePrivateFunctionalLwePackingKeyswitchKeyGenerationEngine
trait.LwePublicKeyGenerationEngine
trait.LweSecretKeyConversionEngine
trait.LweSecretKeyDiscardingConversionEngine
trait.LweSecretKeyGenerationEngine
trait.LweSeededBootstrapKeyGenerationEngine
trait.LweSeededBootstrapKeyToLweBootstrapKeyTransformationEngine
trait.LweSeededCiphertextEncryptionEngine
trait.LweSeededCiphertextToLweCiphertextTransformationEngine
trait.LweSeededCiphertextVectorEncryptionEngine
trait.LweSeededCiphertextVectorToLweCiphertextVectorTransformationEngine
trait.LweSeededKeyswitchKeyGenerationEngine
trait.LweSeededKeyswitchKeyToLweKeyswitchKeyTransformationEngine
trait.LweToGlweSecretKeyTransformationEngine
trait.PlaintextConversionEngine
trait.PlaintextCreationEngine
trait.PlaintextDecodingEngine
trait.PlaintextDiscardingConversionEngine
trait.PlaintextDiscardingRetrievalEngine
trait.PlaintextRetrievalEngine
trait.PlaintextVectorConversionEngine
trait.PlaintextVectorCreationEngine
trait.PlaintextVectorDecodingEngine
trait.PlaintextVectorDiscardingConversionEngine
trait.PlaintextVectorDiscardingRetrievalEngine
trait.PlaintextVectorRetrievalEngine
trait.