PALISADE Lattice Crypto Library
1.11.9
A lattice crypto library for software engineers by software engineers.
|
Main public key encryption scheme for BFV implementation,. More...
#include <bfv.h>
Public Member Functions | |
bool | operator== (const LPPublicKeyEncryptionScheme< Element > &sch) const override |
void | Enable (PKESchemeFeature feature) override |
template<class Archive > | |
void | save (Archive &ar, std::uint32_t const version) const |
template<class Archive > | |
void | load (Archive &ar, std::uint32_t const version) |
std::string | SerializedObjectName () const override |
Public Member Functions inherited from lbcrypto::LPPublicKeyEncryptionScheme< Element > | |
virtual bool | operator!= (const LPPublicKeyEncryptionScheme &sch) const |
virtual void | Enable (usint mask) |
virtual usint | GetEnabled () const |
virtual bool | ParamsGen (shared_ptr< LPCryptoParameters< Element >> cryptoParams, int32_t evalAddCount=0, int32_t evalMultCount=0, int32_t keySwitchCount=0, size_t dcrtBits=0, uint32_t n=0) const |
virtual Ciphertext< Element > | Encrypt (const LPPublicKey< Element > publicKey, const Element &plaintext) const |
virtual Ciphertext< Element > | Encrypt (const LPPrivateKey< Element > privateKey, const Element &plaintext) const |
virtual DecryptResult | Decrypt (const LPPrivateKey< Element > privateKey, ConstCiphertext< Element > ciphertext, NativePoly *plaintext) const |
virtual DecryptResult | Decrypt (const LPPrivateKey< Element > privateKey, ConstCiphertext< Element > ciphertext, Poly *plaintext) const |
virtual LPKeyPair< Element > | KeyGen (CryptoContext< Element > cc, bool makeSparse) |
virtual LPEvalKey< Element > | ReKeyGen (const LPPublicKey< Element > newKey, const LPPrivateKey< Element > origPrivateKey) const |
virtual Ciphertext< Element > | ReEncrypt (const LPEvalKey< Element > evalKey, ConstCiphertext< Element > ciphertext, const LPPublicKey< Element > publicKey) const |
virtual LPKeyPair< Element > | MultipartyKeyGen (CryptoContext< Element > cc, const LPPublicKey< Element > pk1, bool makeSparse, bool PRE) |
virtual LPKeyPair< Element > | MultipartyKeyGen (CryptoContext< Element > cc, const vector< LPPrivateKey< Element >> &secretKeys, bool makeSparse) |
virtual Ciphertext< Element > | MultipartyDecryptMain (const LPPrivateKey< Element > privateKey, ConstCiphertext< Element > ciphertext) const |
virtual Ciphertext< Element > | MultipartyDecryptLead (const LPPrivateKey< Element > privateKey, ConstCiphertext< Element > ciphertext) const |
virtual DecryptResult | MultipartyDecryptFusion (const vector< Ciphertext< Element >> &ciphertextVec, NativePoly *plaintext) const |
virtual DecryptResult | MultipartyDecryptFusion (const vector< Ciphertext< Element >> &ciphertextVec, Poly *plaintext) const |
virtual LPEvalKey< Element > | MultiKeySwitchGen (const LPPrivateKey< Element > originalPrivateKey, const LPPrivateKey< Element > newPrivateKey, const LPEvalKey< Element > ek) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | MultiEvalAutomorphismKeyGen (const LPPrivateKey< Element > privateKey, const shared_ptr< std::map< usint, LPEvalKey< Element >>> eAuto, const std::vector< usint > &indexList, const std::string &keyId="") |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | MultiEvalAtIndexKeyGen (const LPPrivateKey< Element > privateKey, const shared_ptr< std::map< usint, LPEvalKey< Element >>> eAuto, const std::vector< int32_t > &indexList, const std::string &keyId="") |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | MultiEvalSumKeyGen (const LPPrivateKey< Element > privateKey, const shared_ptr< std::map< usint, LPEvalKey< Element >>> eSum, const std::string &keyId="") |
virtual LPEvalKey< Element > | MultiAddEvalKeys (LPEvalKey< Element > a, LPEvalKey< Element > b, const std::string &keyId="") |
virtual LPEvalKey< Element > | MultiMultEvalKey (LPEvalKey< Element > evalKey, LPPrivateKey< Element > sk, const std::string &keyId="") |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | MultiAddEvalSumKeys (const shared_ptr< std::map< usint, LPEvalKey< Element >>> es1, const shared_ptr< std::map< usint, LPEvalKey< Element >>> es2, const std::string &keyId="") |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | MultiAddEvalAutomorphismKeys (const shared_ptr< std::map< usint, LPEvalKey< Element >>> es1, const shared_ptr< std::map< usint, LPEvalKey< Element >>> es2, const std::string &keyId="") |
virtual LPPublicKey< Element > | MultiAddPubKeys (LPPublicKey< Element > pubKey1, LPPublicKey< Element > pubKey2, const std::string &keyId="") |
virtual LPEvalKey< Element > | MultiAddEvalMultKeys (LPEvalKey< Element > evalKey1, LPEvalKey< Element > evalKey2, const std::string &keyId="") |
virtual Ciphertext< Element > | AddRandomNoise (ConstCiphertext< Element > ciphertext) const |
virtual Ciphertext< Element > | EvalAdd (ConstCiphertext< Element > ciphertext1, ConstCiphertext< Element > ciphertext2) const |
virtual void | EvalAddInPlace (Ciphertext< Element > &ciphertext1, ConstCiphertext< Element > ciphertext2) const |
virtual Ciphertext< Element > | EvalAddMutable (Ciphertext< Element > &ciphertext1, Ciphertext< Element > &ciphertext2) const |
virtual Ciphertext< Element > | EvalAdd (ConstCiphertext< Element > ciphertext1, ConstPlaintext plaintext) const |
virtual Ciphertext< Element > | EvalAddMutable (Ciphertext< Element > &ciphertext1, Plaintext plaintext) const |
virtual Ciphertext< Element > | EvalAdd (ConstCiphertext< Element > ciphertext1, double constant) const |
virtual Ciphertext< Element > | EvalLinearWSum (vector< Ciphertext< Element >> ciphertexts, vector< double > constants) const |
virtual Ciphertext< Element > | EvalLinearWSumMutable (vector< Ciphertext< Element >> ciphertexts, vector< double > constants) const |
virtual Ciphertext< Element > | EvalSub (ConstCiphertext< Element > ciphertext1, ConstCiphertext< Element > ciphertext2) const |
virtual Ciphertext< Element > | EvalSubMutable (Ciphertext< Element > &ciphertext1, Ciphertext< Element > &ciphertext2) const |
virtual Ciphertext< Element > | EvalSub (ConstCiphertext< Element > ciphertext1, ConstPlaintext plaintext) const |
virtual Ciphertext< Element > | EvalSubMutable (Ciphertext< Element > &ciphertext1, Plaintext plaintext) const |
virtual Ciphertext< Element > | EvalSub (ConstCiphertext< Element > ciphertext1, double constant) const |
virtual Ciphertext< Element > | EvalMult (ConstCiphertext< Element > ciphertext1, ConstCiphertext< Element > ciphertext2) const |
virtual Ciphertext< Element > | EvalMultMutable (Ciphertext< Element > &ciphertext1, Ciphertext< Element > &ciphertext2) const |
virtual Ciphertext< Element > | EvalMult (ConstCiphertext< Element > ciphertext, ConstPlaintext plaintext) const |
virtual Ciphertext< Element > | EvalMultMutable (Ciphertext< Element > &ciphertext, Plaintext plaintext) const |
virtual Ciphertext< Element > | EvalMult (ConstCiphertext< Element > ciphertext1, double constant) const |
virtual Ciphertext< Element > | EvalMultMutable (Ciphertext< Element > &ciphertext1, double constant) const |
virtual Ciphertext< Element > | EvalMult (ConstCiphertext< Element > ciphertext1, ConstCiphertext< Element > ciphertext2, const LPEvalKey< Element > evalKey) const |
virtual Ciphertext< Element > | EvalMultMutable (Ciphertext< Element > &ciphertext1, Ciphertext< Element > &ciphertext2, const LPEvalKey< Element > evalKey) const |
virtual Ciphertext< Element > | EvalMultMany (const vector< Ciphertext< Element >> &ciphertext, const vector< LPEvalKey< Element >> &evalKeys) const |
virtual Ciphertext< Element > | EvalAddMany (const vector< Ciphertext< Element >> &ciphertexts) const |
virtual Ciphertext< Element > | EvalAddManyInPlace (vector< Ciphertext< Element >> &ciphertexts) const |
virtual Ciphertext< Element > | EvalNegate (ConstCiphertext< Element > ciphertext) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | EvalAutomorphismKeyGen (const LPPublicKey< Element > publicKey, const LPPrivateKey< Element > origPrivateKey, const std::vector< usint > &indexList) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | EvalAtIndexKeyGen (const LPPublicKey< Element > publicKey, const LPPrivateKey< Element > origPrivateKey, const std::vector< int32_t > &indexList) const |
virtual Ciphertext< Element > | EvalAutomorphism (ConstCiphertext< Element > ciphertext, usint i, const std::map< usint, LPEvalKey< Element >> &evalKeys, CALLER_INFO_ARGS_HDR) const |
virtual Ciphertext< Element > | EvalAtIndex (ConstCiphertext< Element > ciphertext, usint i, const std::map< usint, LPEvalKey< Element >> &evalKeys) const |
virtual shared_ptr< vector< Element > > | EvalFastRotationPrecompute (ConstCiphertext< Element > ciphertext) const |
virtual Ciphertext< Element > | EvalFastRotation (ConstCiphertext< Element > ciphertext, const usint index, const usint m, const shared_ptr< vector< Element >> digits) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | EvalAutomorphismKeyGen (const LPPrivateKey< Element > privateKey, const std::vector< usint > &indexList) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | EvalSumKeyGen (const LPPrivateKey< Element > privateKey, const LPPublicKey< Element > publicKey) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | EvalSumRowsKeyGen (const LPPrivateKey< Element > privateKey, const LPPublicKey< Element > publicKey, usint rowSize, usint subringDim=0) const |
virtual shared_ptr< std::map< usint, LPEvalKey< Element > > > | EvalSumColsKeyGen (const LPPrivateKey< Element > privateKey, const LPPublicKey< Element > publicKey) const |
virtual Ciphertext< Element > | EvalSum (ConstCiphertext< Element > ciphertext, usint batchSize, const std::map< usint, LPEvalKey< Element >> &evalKeys) const |
virtual Ciphertext< Element > | EvalSumRows (ConstCiphertext< Element > ciphertext, usint rowSize, const std::map< usint, LPEvalKey< Element >> &evalKeys, usint subringDim=0) const |
virtual Ciphertext< Element > | EvalSumCols (ConstCiphertext< Element > ciphertext, usint batchSize, const std::map< usint, LPEvalKey< Element >> &evalKeys, const std::map< usint, LPEvalKey< Element >> &rightEvalKeys) const |
virtual Ciphertext< Element > | EvalInnerProduct (ConstCiphertext< Element > ciphertext1, ConstCiphertext< Element > ciphertext2, usint batchSize, const std::map< usint, LPEvalKey< Element >> &evalSumKeys, const LPEvalKey< Element > evalMultKey) const |
virtual Ciphertext< Element > | EvalMerge (const vector< Ciphertext< Element >> &ciphertextVector, const std::map< usint, LPEvalKey< Element >> &evalKeys) const |
virtual Ciphertext< Element > | EvalInnerProduct (ConstCiphertext< Element > ciphertext1, ConstPlaintext plaintext, usint batchSize, const std::map< usint, LPEvalKey< Element >> &evalSumKeys) const |
virtual LPEvalKey< Element > | KeySwitchGen (const LPPrivateKey< Element > originalPrivateKey, const LPPrivateKey< Element > newPrivateKey) const |
virtual Ciphertext< Element > | KeySwitch (const LPEvalKey< Element > keySwitchHint, ConstCiphertext< Element > cipherText) const |
virtual void | KeySwitchInPlace (const LPEvalKey< Element > keySwitchHint, Ciphertext< Element > &cipherText) const |
virtual LPEvalKey< Element > | EvalMultKeyGen (const LPPrivateKey< Element > originalPrivateKey) const |
virtual vector< LPEvalKey< Element > > | EvalMultKeysGen (const LPPrivateKey< Element > originalPrivateKey) const |
virtual Ciphertext< Element > | EvalMultAndRelinearize (ConstCiphertext< Element > ct1, ConstCiphertext< Element > ct2, const vector< LPEvalKey< Element >> &ek) const |
virtual Ciphertext< Element > | Relinearize (ConstCiphertext< Element > ciphertext, const vector< LPEvalKey< Element >> &ek) const |
virtual void | RelinearizeInPlace (Ciphertext< Element > &ciphertext, const vector< LPEvalKey< Element >> &ek) const |
virtual Ciphertext< Element > | ModReduce (ConstCiphertext< Element > cipherText, size_t levels=1) const |
virtual void | ModReduceInPlace (Ciphertext< Element > &cipherText, size_t levels=1) const |
virtual Ciphertext< Element > | ComposedEvalMult (ConstCiphertext< Element > cipherText1, ConstCiphertext< Element > cipherText2, const LPEvalKey< Element > quadKeySwitchHint) const |
virtual Ciphertext< Element > | LevelReduce (ConstCiphertext< Element > cipherText1, const LPEvalKey< Element > linearKeySwitchHint, size_t levels=1) const |
Ciphertext< Element > | EvalPoly (ConstCiphertext< Element > ciphertext, const std::vector< double > &coefficients) const |
virtual bool | ParamsGen (shared_ptr< LPCryptoParameters< Element >> cryptoParams, usint cyclOrder, usint numPrimes, usint scaleExp, usint relinWindow, MODE mode, enum KeySwitchTechnique ksTech, usint firstModSize, RescalingTechnique rsTech, uint32_t numLargeDigits) const |
virtual bool | ParamsGen (shared_ptr< LPCryptoParameters< Element >> cryptoParams, usint cyclOrder, usint ptm, usint numPrimes, usint relinWindow, MODE mode, enum KeySwitchTechnique ksTech, usint firstModSize, usint dcrtBits, uint32_t numLargeDigits) const |
virtual Ciphertext< Element > | LevelReduceInternal (ConstCiphertext< Element > cipherText1, const LPEvalKey< Element > linearKeySwitchHint, size_t levels) const |
virtual void | LevelReduceInternalInPlace (Ciphertext< Element > &cipherText1, const LPEvalKey< Element > linearKeySwitchHint, size_t levels) const |
virtual Ciphertext< Element > | ModReduceInternal (ConstCiphertext< Element > cipherText, size_t levels=1) const |
virtual void | ModReduceInternalInPlace (Ciphertext< Element > &cipherText, size_t levels=1) const |
virtual Ciphertext< Element > | Compress (ConstCiphertext< Element > cipherText, size_t towersLeft=1) const |
virtual Ciphertext< Element > | AdjustLevelWithRescale (Ciphertext< Element > cipherText, uint32_t targetLevel) const |
const std::shared_ptr< LPEncryptionAlgorithm< Element > > | getAlgorithm () const |
template<class Archive > | |
void | save (Archive &ar, std::uint32_t const version) const |
template<class Archive > | |
void | load (Archive &ar, std::uint32_t const version) |
Additional Inherited Members | |
Static Public Member Functions inherited from lbcrypto::LPPublicKeyEncryptionScheme< Element > | |
static uint32_t | SerializedVersion () |
Protected Attributes inherited from lbcrypto::LPPublicKeyEncryptionScheme< Element > | |
std::shared_ptr< LPParameterGenerationAlgorithm< Element > > | m_algorithmParamsGen |
std::shared_ptr< LPEncryptionAlgorithm< Element > > | m_algorithmEncryption |
std::shared_ptr< LPPREAlgorithm< Element > > | m_algorithmPRE |
std::shared_ptr< LPMultipartyAlgorithm< Element > > | m_algorithmMultiparty |
std::shared_ptr< LPSHEAlgorithm< Element > > | m_algorithmSHE |
std::shared_ptr< LPLeveledSHEAlgorithm< Element > > | m_algorithmLeveledSHE |
Main public key encryption scheme for BFV implementation,.
Element | a ring element. |