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::LPParameterGenerationAlgorithm< Element > Class Template Referenceabstract

Abstract interface for parameter generation algorithm. More...

#include <pubkeylp.h>

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

Public Member Functions

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 =0
 
virtual bool ParamsGen (shared_ptr< LPCryptoParameters< Element >> cryptoParams, usint cyclOrder, usint numPrimes, usint scaleExp, usint relinWindow, MODE mode, KeySwitchTechnique ksTech, usint firstModSize, RescalingTechnique rsTech) const
 
virtual bool ParamsGen (shared_ptr< LPCryptoParameters< Element >> cryptoParams, usint cyclOrder, usint numPrimes, usint scaleExp, usint relinWindow, MODE mode, KeySwitchTechnique ksTech=BV, usint firstModSize=60, RescalingTechnique=APPROXRESCALE, uint32_t numLargeDigits=4) const
 
virtual bool ParamsGen (shared_ptr< LPCryptoParameters< Element >> cryptoParams, usint cyclOrder, usint ptm, usint numPrimes, usint relinWindow, MODE mode, KeySwitchTechnique ksTech=BV, usint firstModSize=60, usint dcrtBits=60, uint32_t numLargeDigits=4) 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)
 
std::string SerializedObjectName () const
 

Detailed Description

template<class Element>
class lbcrypto::LPParameterGenerationAlgorithm< Element >

Abstract interface for parameter generation algorithm.

Template Parameters
Elementa ring element.

Member Function Documentation

◆ ParamsGen() [1/4]

template<class Element >
virtual bool lbcrypto::LPParameterGenerationAlgorithm< Element >::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
pure virtual

Method for computing all derived parameters based on chosen primitive parameters

Parameters
*cryptoParamsthe crypto parameters object to be populated with parameters.
evalAddCountnumber of EvalAdds assuming no EvalMult and KeySwitch operations are performed.
evalMultCountnumber of EvalMults assuming no EvalAdd and KeySwitch operations are performed.
keySwitchCountnumber of KeySwitch operations assuming no EvalAdd and EvalMult operations are performed.
dcrtBitsnumber of bits in each CRT modulus*
nring dimension in case the user wants to use a custom ring dimension

Implemented in lbcrypto::LPAlgorithmParamsGenNull< Element >, lbcrypto::LPAlgorithmParamsGenBGVrns< Element >, lbcrypto::LPAlgorithmParamsGenCKKS< Element >, lbcrypto::LPAlgorithmParamsGenBFVrnsB< Element >, lbcrypto::LPAlgorithmParamsGenBFVrns< Element >, and lbcrypto::LPAlgorithmParamsGenBFV< Element >.

◆ ParamsGen() [2/4]

template<class Element >
virtual bool lbcrypto::LPParameterGenerationAlgorithm< Element >::ParamsGen ( shared_ptr< LPCryptoParameters< Element >>  cryptoParams,
usint  cyclOrder,
usint  numPrimes,
usint  scaleExp,
usint  relinWindow,
MODE  mode,
KeySwitchTechnique  ksTech,
usint  firstModSize,
RescalingTechnique  rsTech 
) const
inlinevirtual

Method for computing all derived parameters based on chosen primitive parameters. This is intended for CKKS and DCRTPoly.

Parameters
*cryptoParamsthe crypto parameters object to be populated with parameters.
cyclOrderthe cyclotomic order.
numPrimesnumber of modulus towers to support.
scaleExpthe bit-width for plaintexts and DCRTPoly's.
relinWindowthe relinearization window
mode
ksTechthe key switching technique used (e.g., BV or GHS)
firstModSizethe bit-size of the first modulus
rsTechthe rescaling technique used (e.g., APPROXRESCALE or EXACTRESCALE)

◆ ParamsGen() [3/4]

template<class Element >
virtual bool lbcrypto::LPParameterGenerationAlgorithm< Element >::ParamsGen ( shared_ptr< LPCryptoParameters< Element >>  cryptoParams,
usint  cyclOrder,
usint  numPrimes,
usint  scaleExp,
usint  relinWindow,
MODE  mode,
KeySwitchTechnique  ksTech = BV,
usint  firstModSize = 60,
RescalingTechnique  = APPROXRESCALE,
uint32_t  numLargeDigits = 4 
) const
inlinevirtual

Method for computing all derived parameters based on chosen primitive parameters.

Parameters
*cryptoParamsthe crypto parameters object to be populated with parameters.
cyclOrderthe cyclotomic order.
numPrimesnumber of modulus towers to support.
scaleExpthe bit-width for plaintexts and DCRTPoly's.
relinWindowthe relinearization window
mode
ksTechthe key switching technique used (e.g., BV or GHS)
firstModSizethe bit-size of the first modulus
rsTechthe rescaling technique used (e.g., APPROXRESCALE or EXACTRESCALE)

Reimplemented in lbcrypto::LPAlgorithmParamsGenCKKS< Element >.

◆ ParamsGen() [4/4]

template<class Element >
virtual bool lbcrypto::LPParameterGenerationAlgorithm< Element >::ParamsGen ( shared_ptr< LPCryptoParameters< Element >>  cryptoParams,
usint  cyclOrder,
usint  ptm,
usint  numPrimes,
usint  relinWindow,
MODE  mode,
KeySwitchTechnique  ksTech = BV,
usint  firstModSize = 60,
usint  dcrtBits = 60,
uint32_t  numLargeDigits = 4 
) const
inlinevirtual

Method for computing all derived parameters based on chosen primitive parameters. This is intended for BGVrns

Parameters
*cryptoParamsthe crypto parameters object to be populated with parameters.
cyclOrderthe cyclotomic order.
numPrimesnumber of modulus towers to support.
relinWindowthe relinearization window
mode
ksTechthe key switching technique used (e.g., BV or GHS)
firstModSizethe bit-size of the first modulus
dcrtBitsthe bit-width of moduli.

Reimplemented in lbcrypto::LPAlgorithmParamsGenBGVrns< Element >.


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