PALISADE Lattice Crypto Library  1.11.9
A lattice crypto library for software engineers by software engineers.
Public Member Functions | List of all members
lbcrypto::LPPublicKeyEncryptionSchemeBFV< Element > Class Template Reference

Main public key encryption scheme for BFV implementation,. More...

#include <bfv.h>

Inheritance diagram for lbcrypto::LPPublicKeyEncryptionSchemeBFV< Element >:
Inheritance graph
[legend]
Collaboration diagram for lbcrypto::LPPublicKeyEncryptionSchemeBFV< Element >:
Collaboration graph
[legend]

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
 

Detailed Description

template<class Element>
class lbcrypto::LPPublicKeyEncryptionSchemeBFV< Element >

Main public key encryption scheme for BFV implementation,.

Template Parameters
Elementa ring element.

The documentation for this class was generated from the following files: