Class CoefPackedEncoding

Inheritance Relationships

Base Type

Class Documentation

class lbcrypto::CoefPackedEncoding : public lbcrypto::PlaintextImpl

Inheritence diagram for lbcrypto::CoefPackedEncoding:

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

Collaboration diagram for lbcrypto::CoefPackedEncoding:

digraph {
    graph [bgcolor="#00000000"]
    node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
    edge [color="#1414CE"]
    "12" [label="lbcrypto::ILElement< DerivedType, BigVecType >" tooltip="lbcrypto::ILElement< DerivedType, BigVecType >"]
    "9" [label="lbcrypto::BigIntegerInterface< NativeIntegerT< NativeInt > >" tooltip="lbcrypto::BigIntegerInterface< NativeIntegerT< NativeInt > >"]
    "2" [label="lbcrypto::PlaintextImpl" tooltip="lbcrypto::PlaintextImpl"]
    "8" [label="intnat::NativeIntegerT< NativeInt >" tooltip="intnat::NativeIntegerT< NativeInt >"]
    "6" [label="lbcrypto::Serializable" tooltip="lbcrypto::Serializable"]
    "1" [label="lbcrypto::CoefPackedEncoding" tooltip="lbcrypto::CoefPackedEncoding" fillcolor="#BFBFBF"]
    "10" [label="lbcrypto::DCRTPolyImpl< BigVector >" tooltip="lbcrypto::DCRTPolyImpl< BigVector >"]
    "11" [label="lbcrypto::DCRTPolyInterface< DerivedType, BigVecType, LilVecType, RNSContainerType >" tooltip="lbcrypto::DCRTPolyInterface< DerivedType, BigVecType, LilVecType, RNSContainerType >"]
    "4" [label="lbcrypto::PolyInterface< DerivedType, VecType, ContainerType >" tooltip="lbcrypto::PolyInterface< DerivedType, VecType, ContainerType >"]
    "5" [label="lbcrypto::ILElement< DerivedType, VecType >" tooltip="lbcrypto::ILElement< DerivedType, VecType >"]
    "3" [label="lbcrypto::PolyImpl< NativeVector >" tooltip="lbcrypto::PolyImpl< NativeVector >"]
    "7" [label="lbcrypto::PolyImpl< BigVector >" tooltip="lbcrypto::PolyImpl< BigVector >"]
    "12" -> "6" [dir=forward tooltip="public-inheritance"]
    "2" -> "3" [dir=forward tooltip="usage"]
    "2" -> "7" [dir=forward tooltip="usage"]
    "2" -> "8" [dir=forward tooltip="usage"]
    "2" -> "10" [dir=forward tooltip="usage"]
    "8" -> "9" [dir=forward tooltip="public-inheritance"]
    "1" -> "2" [dir=forward tooltip="public-inheritance"]
    "10" -> "11" [dir=forward tooltip="public-inheritance"]
    "11" -> "12" [dir=forward tooltip="public-inheritance"]
    "4" -> "5" [dir=forward tooltip="public-inheritance"]
    "5" -> "6" [dir=forward tooltip="public-inheritance"]
    "3" -> "4" [dir=forward tooltip="public-inheritance"]
    "7" -> "4" [dir=forward tooltip="public-inheritance"]
}

Plaintext encoding that stores a vector of integers directly in the coefficients of the polynomial (no SIMD packing), so that homomorphic multiplication computes polynomial products of the encoded vectors.

Public Functions

template<typename T, typename std::enable_if<std::is_same<T, Poly::Params>::value || std::is_same<T, NativePoly::Params>::value || std::is_same<T, DCRTPoly::Params>::value, bool>::type = true>
inline CoefPackedEncoding(std::shared_ptr<T> vp, EncodingParams ep, SCHEME schemeId = SCHEME::INVALID_SCHEME)

Constructs an empty coefficient-packed plaintext over the given element parameters.

Parameters
  • vp – element parameters of the polynomial (Poly, NativePoly or DCRTPoly parameters)

  • ep – encoding parameters

  • schemeId – scheme the plaintext is created for

template<typename T, typename std::enable_if<std::is_same<T, Poly::Params>::value || std::is_same<T, NativePoly::Params>::value || std::is_same<T, DCRTPoly::Params>::value, bool>::type = true>
inline CoefPackedEncoding(std::shared_ptr<T> vp, EncodingParams ep, const std::vector<int64_t> &coeffs, SCHEME schemeId = SCHEME::INVALID_SCHEME)

Constructs a coefficient-packed plaintext holding the given coefficients (not encoded yet; call Encode).

Parameters
  • vp – element parameters of the polynomial (Poly, NativePoly or DCRTPoly parameters)

  • ep – encoding parameters

  • coeffs – the integer coefficients

  • schemeId – scheme the plaintext is created for

~CoefPackedEncoding() override = default
inline virtual const std::vector<int64_t> &GetCoefPackedValue() const override

GetCoefPackedValue

Returns

the un-encoded integer vector

inline virtual void SetIntVectorValue(const std::vector<int64_t> &val) override

SetIntVectorValue

Parameters

val – integer vector to initialize the plaintext

virtual bool Encode() override

Encode the plaintext into the Poly

Returns

true on success

virtual bool Decode() override

Decode the Poly into the string

Returns

true on success

inline virtual size_t GetLength() const override

Get length of the plaintext

Returns

number of elements in this plaintext

inline virtual void SetLength(size_t siz) override

SetLength of the plaintext to the given size

Parameters

siz – the new number of elements

Protected Functions

inline virtual void PrintValue(std::ostream &out) const override

PrintValue() is called by operator<<.

Parameters

out – stream to print to

inline virtual bool CompareTo(const PlaintextImpl &rhs) const override

Method to compare two plaintext to test for equivalence Testing that the plaintexts are of the same type done in operator==

Parameters

rhs – - the other plaintext to compare to.

Returns

whether the two plaintext are equivalent.