Class RingGSWAccumulator

Inheritance Relationships

Derived Types

Class Documentation

class lbcrypto::RingGSWAccumulator

Inheritence diagram for lbcrypto::RingGSWAccumulator:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "2" [label="lbcrypto::RingGSWAccumulatorCGGI" tooltip="lbcrypto::RingGSWAccumulatorCGGI"] "1" [label="lbcrypto::RingGSWAccumulator" tooltip="lbcrypto::RingGSWAccumulator" fillcolor="#BFBFBF"] "4" [label="lbcrypto::RingGSWAccumulatorLMKCDEY" tooltip="lbcrypto::RingGSWAccumulatorLMKCDEY"] "3" [label="lbcrypto::RingGSWAccumulatorDM" tooltip="lbcrypto::RingGSWAccumulatorDM"] "2" -> "1" [dir=forward tooltip="public-inheritance"] "4" -> "1" [dir=forward tooltip="public-inheritance"] "3" -> "1" [dir=forward tooltip="public-inheritance"] }

Ring GSW accumulator schemes described in https://eprint.iacr.org/2014/816, https://eprint.iacr.org/2020/086 and https://eprint.iacr.org/2022/198.

Subclassed by lbcrypto::RingGSWAccumulatorCGGI, lbcrypto::RingGSWAccumulatorDM, lbcrypto::RingGSWAccumulatorLMKCDEY

Public Functions

RingGSWAccumulator() = default
inline virtual RingGSWACCKey KeyGenAcc(const std::shared_ptr<RingGSWCryptoParams> &params, const NativePoly &skNTT, ConstLWEPrivateKey &LWEsk) const

Key generation for internal Ring GSW

Parameters
  • params – a shared pointer to RingGSW scheme parameters

  • skNTT – secret key polynomial in the EVALUATION representation

  • LWEsk – the secret key

Returns

a shared pointer to the resulting keys

inline virtual void EvalAcc(const std::shared_ptr<RingGSWCryptoParams> &params, ConstRingGSWACCKey &ek, RLWECiphertext &acc, const NativeVector &a) const

Main accumulator function used in bootstrapping

Parameters
  • params – a shared pointer to RingGSW scheme parameters

  • ek – the accumulator key

  • acc – previous value of the accumulator

  • a – value to update the accumulator with

void SignedDigitDecompose(const std::shared_ptr<RingGSWCryptoParams> &params, const std::vector<NativePoly> &input, std::vector<NativePoly> &output) const

The signed digit decomposition which takes an RLWE ciphertext input and outputs a vector of its digits, i.e., an RLWE’ ciphertext

Parameters
  • params – a shared pointer to RingGSW scheme parameters

  • input – input RLWE ciphertext

  • output – output RLWE’ ciphertext

void SignedDigitDecompose(const std::shared_ptr<RingGSWCryptoParams> &params, const NativePoly &input, std::vector<NativePoly> &output) const

The signed digit decomposition which takes a ring element input and outputs a vector of its digits, i.e., decompose(a) = (a_0, …, a_{d-1}) = R^d. Only for automorphism key switching LMKCDEY

Parameters
  • params – a shared pointer to RingGSW scheme parameters

  • input – input ring element

  • output – decomposed value