Class KeySwitchBV
Defined in File keyswitch-bv.h
Page Contents
Inheritance Relationships
Base Type
public lbcrypto::KeySwitchRNS(Class KeySwitchRNS)
Class Documentation
-
class lbcrypto::KeySwitchBV : public lbcrypto::KeySwitchRNS
Inheritence diagram for lbcrypto::KeySwitchBV:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="lbcrypto::KeySwitchBV" tooltip="lbcrypto::KeySwitchBV" fillcolor="#BFBFBF"]
"2" [label="lbcrypto::KeySwitchRNS" tooltip="lbcrypto::KeySwitchRNS"]
"3" [label="lbcrypto::KeySwitchBase< DCRTPoly >" tooltip="lbcrypto::KeySwitchBase< DCRTPoly >"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
}](../_images/graphviz-18f3d08c191fa2d89d56d8527c22b78a01ff51f1.png)
Collaboration diagram for lbcrypto::KeySwitchBV:
![digraph {
graph [bgcolor="#00000000"]
node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2]
edge [color="#1414CE"]
"1" [label="lbcrypto::KeySwitchBV" tooltip="lbcrypto::KeySwitchBV" fillcolor="#BFBFBF"]
"2" [label="lbcrypto::KeySwitchRNS" tooltip="lbcrypto::KeySwitchRNS"]
"3" [label="lbcrypto::KeySwitchBase< DCRTPoly >" tooltip="lbcrypto::KeySwitchBase< DCRTPoly >"]
"1" -> "2" [dir=forward tooltip="public-inheritance"]
"2" -> "3" [dir=forward tooltip="public-inheritance"]
}](../_images/graphviz-18f3d08c191fa2d89d56d8527c22b78a01ff51f1.png)
Implements BV key switching method from [Fully Homomorphic Encryption from Ring-LWE and Security for Key Dependent Messages (BVScheme)]( https://www.wisdom.weizmann.ac.il/~zvikab/localpapers/IdealHom.pdf ) See the Appendix of https://eprint.iacr.org/2021/204 for more detailed description. Requires the computation of a quadratic number of NTTs.
Public Functions
-
KeySwitchBV() = default
-
virtual ~KeySwitchBV() = default
-
virtual EvalKey<DCRTPoly> KeySwitchGenInternal(const PrivateKey<DCRTPoly> oldPrivateKey, const PrivateKey<DCRTPoly> newPrivateKey) const override
Method for KeySwitchGen
- Parameters
&originalPrivateKey – Original private key used for encryption.
&newPrivateKey – New private key to generate the keyswitch hint.
*KeySwitchHint – is where the resulting keySwitchHint will be placed.
-
virtual EvalKey<DCRTPoly> KeySwitchGenInternal(const PrivateKey<DCRTPoly> oldPrivateKey, const PrivateKey<DCRTPoly> newPrivateKey, const EvalKey<DCRTPoly> evalKey) const override
-
virtual EvalKey<DCRTPoly> KeySwitchGenInternal(const PrivateKey<DCRTPoly> oldPrivateKey, const PublicKey<DCRTPoly> newPublicKey) const override
-
virtual void KeySwitchInPlace(Ciphertext<DCRTPoly> &ciphertext, const EvalKey<DCRTPoly> evalKey) const override
-
virtual std::shared_ptr<std::vector<DCRTPoly>> KeySwitchCore(const DCRTPoly &a, const EvalKey<DCRTPoly> evalKey) const override
-
inline virtual std::string SerializedObjectName() const override
-
KeySwitchBV() = default