pub struct CompressedServerKey {
pub compressed_ap_server_key: CompressedAtomicPatternServerKey,
pub message_modulus: MessageModulus,
pub carry_modulus: CarryModulus,
pub max_degree: MaxDegree,
pub max_noise_level: MaxNoiseLevel,
}
Available on crate feature
shortint
only.Expand description
A structure containing a compressed server public key.
The server key is generated by the client and is meant to be published: the client sends it to the server so it can compute homomorphic circuits.
Fields§
§compressed_ap_server_key: CompressedAtomicPatternServerKey
§message_modulus: MessageModulus
§carry_modulus: CarryModulus
§max_degree: MaxDegree
§max_noise_level: MaxNoiseLevel
Implementations§
Source§impl CompressedServerKey
impl CompressedServerKey
Sourcepub fn new(client_key: &ClientKey) -> Self
pub fn new(client_key: &ClientKey) -> Self
Generate a compressed server key.
§Example
use tfhe::shortint::client_key::ClientKey;
use tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS;
use tfhe::shortint::server_key::CompressedServerKey;
// Generate the client key:
let cks = ClientKey::new(PARAM_MESSAGE_2_CARRY_2_KS_PBS);
let sks = CompressedServerKey::new(&cks);
Sourcepub fn decompress(&self) -> ServerKey
pub fn decompress(&self) -> ServerKey
Decompress a CompressedServerKey
into a ServerKey
.
Sourcepub fn into_raw_parts(
self,
) -> (CompressedAtomicPatternServerKey, MessageModulus, CarryModulus, MaxDegree, MaxNoiseLevel)
pub fn into_raw_parts( self, ) -> (CompressedAtomicPatternServerKey, MessageModulus, CarryModulus, MaxDegree, MaxNoiseLevel)
Deconstruct a CompressedServerKey
into its constituents.
Sourcepub fn from_raw_parts(
compressed_ap_server_key: CompressedAtomicPatternServerKey,
message_modulus: MessageModulus,
carry_modulus: CarryModulus,
max_degree: MaxDegree,
max_noise_level: MaxNoiseLevel,
) -> Self
pub fn from_raw_parts( compressed_ap_server_key: CompressedAtomicPatternServerKey, message_modulus: MessageModulus, carry_modulus: CarryModulus, max_degree: MaxDegree, max_noise_level: MaxNoiseLevel, ) -> Self
Construct a CompressedServerKey
from its constituents.
§Panics
Panics if the constituents are not compatible with each others.
Sourcepub fn new_with_max_degree(cks: &ClientKey, max_degree: MaxDegree) -> Self
pub fn new_with_max_degree(cks: &ClientKey, max_degree: MaxDegree) -> Self
Generate a compressed server key with a chosen maximum degree
pub fn ciphertext_lwe_dimension(&self) -> LweDimension
pub fn ciphertext_modulus(&self) -> CiphertextModulus
pub fn bootstrapping_key_size_bytes(&self) -> usize
pub fn bootstrapping_key_size_elements(&self) -> usize
Trait Implementations§
Source§impl Clone for CompressedServerKey
impl Clone for CompressedServerKey
Source§fn clone(&self) -> CompressedServerKey
fn clone(&self) -> CompressedServerKey
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for CompressedServerKey
impl Debug for CompressedServerKey
Source§impl Deprecable for CompressedServerKey
impl Deprecable for CompressedServerKey
Source§impl<'de> Deserialize<'de> for CompressedServerKey
impl<'de> Deserialize<'de> for CompressedServerKey
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl ParameterSetConformant for CompressedServerKey
impl ParameterSetConformant for CompressedServerKey
type ParameterSet = (AtomicPatternParameters, MaxDegree)
fn is_conformant( &self, (parameter_set, expected_max_degree): &Self::ParameterSet, ) -> bool
Source§impl PartialEq for CompressedServerKey
impl PartialEq for CompressedServerKey
Source§impl Serialize for CompressedServerKey
impl Serialize for CompressedServerKey
Source§impl Unversionize for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
impl Unversionize for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
Source§fn unversionize(
versioned: Self::VersionedOwned,
) -> Result<Self, UnversionizeError>
fn unversionize( versioned: Self::VersionedOwned, ) -> Result<Self, UnversionizeError>
Creates an object from a versioned enum, and eventually upgrades from previous
variants.
Source§impl UnversionizeVec for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
impl UnversionizeVec for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
fn unversionize_vec( versioned: Self::VersionedVec, ) -> Result<Vec<Self>, UnversionizeError>
Source§impl Upgrade<CompressedServerKey> for CompressedServerKeyV2
impl Upgrade<CompressedServerKey> for CompressedServerKeyV2
type Error = Infallible
fn upgrade(self) -> Result<CompressedServerKey, Self::Error>
Source§impl Version for CompressedServerKeywhere
CompressedAtomicPatternServerKey: VersionizeOwned + Unversionize + Versionize,
MessageModulus: VersionizeOwned + Unversionize + Versionize,
CarryModulus: VersionizeOwned + Unversionize + Versionize,
MaxDegree: VersionizeOwned + Unversionize + Versionize,
MaxNoiseLevel: VersionizeOwned + Unversionize + Versionize,
impl Version for CompressedServerKeywhere
CompressedAtomicPatternServerKey: VersionizeOwned + Unversionize + Versionize,
MessageModulus: VersionizeOwned + Unversionize + Versionize,
CarryModulus: VersionizeOwned + Unversionize + Versionize,
MaxDegree: VersionizeOwned + Unversionize + Versionize,
MaxNoiseLevel: VersionizeOwned + Unversionize + Versionize,
Source§impl Versionize for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
impl Versionize for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
Source§type Versioned<'vers> = <CompressedServerKeyVersions as VersionsDispatch<CompressedServerKey>>::Ref<'vers>
type Versioned<'vers> = <CompressedServerKeyVersions as VersionsDispatch<CompressedServerKey>>::Ref<'vers>
The equivalent versioned type. It should have a variant for each version.
It may own the underlying data or only hold a read-only reference to it.
Source§fn versionize(&self) -> Self::Versioned<'_>
fn versionize(&self) -> Self::Versioned<'_>
Wraps the object into a versioned enum with a variant for each version. This will
use references on the underlying types if possible.
Source§impl VersionizeOwned for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
impl VersionizeOwned for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
type VersionedOwned = <CompressedServerKeyVersions as VersionsDispatch<CompressedServerKey>>::Owned
Source§fn versionize_owned(self) -> Self::VersionedOwned
fn versionize_owned(self) -> Self::VersionedOwned
Wraps the object into a versioned enum with a variant for each version. This will
clone the underlying types.
Source§impl VersionizeSlice for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
impl VersionizeSlice for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
type VersionedSlice<'vers> = Vec<<CompressedServerKey as Versionize>::Versioned<'vers>>
fn versionize_slice(slice: &[Self]) -> Self::VersionedSlice<'_>
Source§impl VersionizeVec for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
impl VersionizeVec for CompressedServerKeywhere
CompressedServerKeyVersions: VersionsDispatch<Self>,
type VersionedVec = Vec<<CompressedServerKey as VersionizeOwned>::VersionedOwned>
fn versionize_vec(vec: Vec<Self>) -> Self::VersionedVec
impl StructuralPartialEq for CompressedServerKey
Auto Trait Implementations§
impl Freeze for CompressedServerKey
impl RefUnwindSafe for CompressedServerKey
impl Send for CompressedServerKey
impl Sync for CompressedServerKey
impl Unpin for CompressedServerKey
impl UnwindSafe for CompressedServerKey
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more