pub struct RetainedKeyPackageMaterial {
pub epoch_id: EpochId,
pub leaf_index: LeafNodeIndex,
pub generation: u32,
pub key_package_ciphersuite: Ciphersuite,
pub key_package_index: u32,
pub key_package_seed_secret: KeyPackageSeedSecret,
}extensions-draft and crate feature virtual-clients-draft and (32-bit or 64-bit) only.Expand description
Per-KeyPackageRef material a sibling retains when it processes a
KeyPackageUpload. It captures what the Welcome path needs to later
rederive the KeyPackage’s init and leaf-encryption keys without touching
the operation tree: the per-KeyPackage seed secret, plus the emulation
epoch, leaf index, generation, and batch index used to validate the leaf
found in the ratchet tree.
The seed is pinned here at upload-processing time so the Welcome path stays independent of the operation tree’s bounded out-of-order tolerance: a batch can hold more KeyPackages than that tolerance, and Welcomes can arrive in any order, yet every seed remains available because the single batch generation is consumed once and each seed is stored alongside its index.
Fields§
§epoch_id: EpochIdEmulation epoch the KeyPackage belongs to.
leaf_index: LeafNodeIndexUploader’s emulation-group leaf index, identifying the operation ratchet the batch generation was allocated from.
generation: u32Operation-ratchet generation consumed for the whole batch.
key_package_ciphersuite: CiphersuiteCiphersuite of the KeyPackage.
key_package_index: u32Position of this KeyPackage within the batch.
key_package_seed_secret: KeyPackageSeedSecretPer-KeyPackage seed secret from which the init and leaf-encryption keys are derived at Welcome time.
Trait Implementations§
Source§impl Debug for RetainedKeyPackageMaterial
impl Debug for RetainedKeyPackageMaterial
Source§impl<'de> Deserialize<'de> for RetainedKeyPackageMaterial
impl<'de> Deserialize<'de> for RetainedKeyPackageMaterial
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>,
impl Entity<CURRENT_VERSION> for RetainedKeyPackageMaterial
impl RetainedKeyPackageMaterial<CURRENT_VERSION> for RetainedKeyPackageMaterial
Auto Trait Implementations§
impl Freeze for RetainedKeyPackageMaterial
impl RefUnwindSafe for RetainedKeyPackageMaterial
impl Send for RetainedKeyPackageMaterial
impl Sync for RetainedKeyPackageMaterial
impl Unpin for RetainedKeyPackageMaterial
impl UnsafeUnpin for RetainedKeyPackageMaterial
impl UnwindSafe for RetainedKeyPackageMaterial
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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>
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>
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