Trait StorageProviderTrait
pub trait StorageProviderTrait<const VERSION: u16> {
type Error: Debug + Error;
Show 69 methods
// Required methods
fn write_mls_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
config: &MlsGroupJoinConfig,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
MlsGroupJoinConfig: MlsGroupJoinConfig<VERSION>;
fn append_own_leaf_node<GroupId, LeafNode>(
&self,
group_id: &GroupId,
leaf_node: &LeafNode,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
LeafNode: LeafNode<VERSION>;
fn queue_proposal<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
proposal: &QueuedProposal,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
QueuedProposal: QueuedProposal<VERSION>;
fn write_tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
tree: &TreeSync,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
TreeSync: TreeSync<VERSION>;
fn write_interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
interim_transcript_hash: &InterimTranscriptHash,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
InterimTranscriptHash: InterimTranscriptHash<VERSION>;
fn write_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
group_context: &GroupContext,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
GroupContext: GroupContext<VERSION>;
fn write_confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
confirmation_tag: &ConfirmationTag,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ConfirmationTag: ConfirmationTag<VERSION>;
fn write_group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
group_state: &GroupState,
) -> Result<(), Self::Error>
where GroupState: GroupState<VERSION>,
GroupId: GroupId<VERSION>;
fn write_message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
message_secrets: &MessageSecrets,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
MessageSecrets: MessageSecrets<VERSION>;
fn write_resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
resumption_psk_store: &ResumptionPskStore,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ResumptionPskStore: ResumptionPskStore<VERSION>;
fn write_own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
own_leaf_index: &LeafNodeIndex,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
LeafNodeIndex: LeafNodeIndex<VERSION>;
fn write_group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
group_epoch_secrets: &GroupEpochSecrets,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
GroupEpochSecrets: GroupEpochSecrets<VERSION>;
fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
application_export_tree: &ApplicationExportTree,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>;
fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), Self::Error>
where EpochId: VcEpochId<VERSION>,
VcEmulationEpochState: VcEmulationEpochState<VERSION>;
fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
bindings: &VcEmulationBindings,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
VcEmulationBindings: VcEmulationBindings<VERSION>;
fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
vc_operation_tree: &VcOperationTree,
) -> Result<(), Self::Error>
where EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>;
fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
epoch_id: &EpochId,
operation_tree: &VcOperationTree,
materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), Self::Error>
where EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
KeyPackageRef: HashReference<VERSION>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<VERSION>;
fn write_signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
signature_key_pair: &SignatureKeyPair,
) -> Result<(), Self::Error>
where SignaturePublicKey: SignaturePublicKey<VERSION>,
SignatureKeyPair: SignatureKeyPair<VERSION>;
fn write_encryption_key_pair<EncryptionKey, HpkeKeyPair>(
&self,
public_key: &EncryptionKey,
key_pair: &HpkeKeyPair,
) -> Result<(), Self::Error>
where EncryptionKey: EncryptionKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>;
fn write_encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
key_pairs: &[HpkeKeyPair],
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>;
fn write_key_package<HashReference, KeyPackage>(
&self,
hash_ref: &HashReference,
key_package: &KeyPackage,
) -> Result<(), Self::Error>
where HashReference: HashReference<VERSION>,
KeyPackage: KeyPackage<VERSION>;
fn write_psk<PskId, PskBundle>(
&self,
psk_id: &PskId,
psk: &PskBundle,
) -> Result<(), Self::Error>
where PskId: PskId<VERSION>,
PskBundle: PskBundle<VERSION>;
fn mls_group_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
) -> Result<Option<MlsGroupJoinConfig>, Self::Error>
where GroupId: GroupId<VERSION>,
MlsGroupJoinConfig: MlsGroupJoinConfig<VERSION>;
fn own_leaf_nodes<GroupId, LeafNode>(
&self,
group_id: &GroupId,
) -> Result<Vec<LeafNode>, Self::Error>
where GroupId: GroupId<VERSION>,
LeafNode: LeafNode<VERSION>;
fn queued_proposal_refs<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<Vec<ProposalRef>, Self::Error>
where GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>;
fn queued_proposals<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
) -> Result<Vec<(ProposalRef, QueuedProposal)>, Self::Error>
where GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
QueuedProposal: QueuedProposal<VERSION>;
fn tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
) -> Result<Option<TreeSync>, Self::Error>
where GroupId: GroupId<VERSION>,
TreeSync: TreeSync<VERSION>;
fn group_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupContext>, Self::Error>
where GroupId: GroupId<VERSION>,
GroupContext: GroupContext<VERSION>;
fn interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
) -> Result<Option<InterimTranscriptHash>, Self::Error>
where GroupId: GroupId<VERSION>,
InterimTranscriptHash: InterimTranscriptHash<VERSION>;
fn confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
) -> Result<Option<ConfirmationTag>, Self::Error>
where GroupId: GroupId<VERSION>,
ConfirmationTag: ConfirmationTag<VERSION>;
fn group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupState>, Self::Error>
where GroupState: GroupState<VERSION>,
GroupId: GroupId<VERSION>;
fn message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<MessageSecrets>, Self::Error>
where GroupId: GroupId<VERSION>,
MessageSecrets: MessageSecrets<VERSION>;
fn resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
) -> Result<Option<ResumptionPskStore>, Self::Error>
where GroupId: GroupId<VERSION>,
ResumptionPskStore: ResumptionPskStore<VERSION>;
fn own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
) -> Result<Option<LeafNodeIndex>, Self::Error>
where GroupId: GroupId<VERSION>,
LeafNodeIndex: LeafNodeIndex<VERSION>;
fn group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupEpochSecrets>, Self::Error>
where GroupId: GroupId<VERSION>,
GroupEpochSecrets: GroupEpochSecrets<VERSION>;
fn signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
) -> Result<Option<SignatureKeyPair>, Self::Error>
where SignaturePublicKey: SignaturePublicKey<VERSION>,
SignatureKeyPair: SignatureKeyPair<VERSION>;
fn encryption_key_pair<HpkeKeyPair, EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<Option<HpkeKeyPair>, Self::Error>
where HpkeKeyPair: HpkeKeyPair<VERSION>,
EncryptionKey: EncryptionKey<VERSION>;
fn encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<Vec<HpkeKeyPair>, Self::Error>
where GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>;
fn key_package<KeyPackageRef, KeyPackage>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<KeyPackage>, Self::Error>
where KeyPackageRef: HashReference<VERSION>,
KeyPackage: KeyPackage<VERSION>;
fn psk<PskBundle, PskId>(
&self,
psk_id: &PskId,
) -> Result<Option<PskBundle>, Self::Error>
where PskBundle: PskBundle<VERSION>,
PskId: PskId<VERSION>;
fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, Self::Error>
where GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>;
fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, Self::Error>
where EpochId: VcEpochId<VERSION>,
VcEmulationEpochState: VcEmulationEpochState<VERSION>;
fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, Self::Error>
where GroupId: GroupId<VERSION>,
VcEmulationBindings: VcEmulationBindings<VERSION>;
fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, Self::Error>
where EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>;
fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, Self::Error>
where KeyPackageRef: HashReference<VERSION>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<VERSION>;
fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, Self::Error>
where EpochId: VcEpochId<VERSION>;
fn remove_proposal<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>;
fn delete_own_leaf_nodes<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_group_config<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_tree<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_confirmation_tag<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_group_state<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_context<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_interim_transcript_hash<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_message_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_all_resumption_psk_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_own_leaf_index<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_group_epoch_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn clear_proposal_queue<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>;
fn delete_signature_key_pair<SignaturePublicKey>(
&self,
public_key: &SignaturePublicKey,
) -> Result<(), Self::Error>
where SignaturePublicKey: SignaturePublicKey<VERSION>;
fn delete_encryption_key_pair<EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<(), Self::Error>
where EncryptionKey: EncryptionKey<VERSION>;
fn delete_encryption_epoch_key_pairs<GroupId, EpochKey>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>;
fn delete_key_package<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), Self::Error>
where KeyPackageRef: HashReference<VERSION>;
fn delete_psk<PskKey>(&self, psk_id: &PskKey) -> Result<(), Self::Error>
where PskKey: PskId<VERSION>;
fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>;
fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, Self::Error>
where EpochId: VcEpochId<VERSION>;
fn delete_vc_emulation_bindings<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>
where GroupId: GroupId<VERSION>;
fn delete_retained_key_package_material<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), Self::Error>
where KeyPackageRef: HashReference<VERSION>;
// Provided method
fn version() -> u16 { ... }
}test-utils) only.Expand description
StorageProvider describes the storage backing OpenMLS and persists the state of OpenMLS groups.
The getters for individual values usually return a Result<Option<T>, E>, where Err(_)
indicates that some sort of IO or internal error occurred, and Ok(None) indicates that no
error occurred, but no value exists.
Many getters for lists return a Result<Vec<T>, E>. In this case, if there was no error but
the value doesn’t exist, an empty vector should be returned.
Any value that uses the group id as key is required by the group.
Returning None or an error for any of them will cause a failure when
loading a group.
More details can be taken from the comments on the respective method.
Required Associated Types§
Required Methods§
fn write_mls_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
config: &MlsGroupJoinConfig,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
MlsGroupJoinConfig: MlsGroupJoinConfig<VERSION>,
fn write_mls_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
config: &MlsGroupJoinConfig,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
MlsGroupJoinConfig: MlsGroupJoinConfig<VERSION>,
Writes the MlsGroupJoinConfig for the group with given id to storage
fn append_own_leaf_node<GroupId, LeafNode>(
&self,
group_id: &GroupId,
leaf_node: &LeafNode,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
LeafNode: LeafNode<VERSION>,
fn append_own_leaf_node<GroupId, LeafNode>(
&self,
group_id: &GroupId,
leaf_node: &LeafNode,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
LeafNode: LeafNode<VERSION>,
Adds an own leaf node for the group with given id to storage
fn queue_proposal<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
proposal: &QueuedProposal,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
QueuedProposal: QueuedProposal<VERSION>,
fn queue_proposal<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
proposal: &QueuedProposal,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
QueuedProposal: QueuedProposal<VERSION>,
Enqueue a proposal.
A good way to implement this could be to add a proposal to a proposal store, indexed by the proposal reference, and adding the reference to a per-group proposal queue list.
fn write_tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
tree: &TreeSync,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
TreeSync: TreeSync<VERSION>,
fn write_tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
tree: &TreeSync,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
TreeSync: TreeSync<VERSION>,
Write the TreeSync tree.
fn write_interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
interim_transcript_hash: &InterimTranscriptHash,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
InterimTranscriptHash: InterimTranscriptHash<VERSION>,
fn write_interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
interim_transcript_hash: &InterimTranscriptHash,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
InterimTranscriptHash: InterimTranscriptHash<VERSION>,
Write the interim transcript hash.
fn write_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
group_context: &GroupContext,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
GroupContext: GroupContext<VERSION>,
fn write_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
group_context: &GroupContext,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
GroupContext: GroupContext<VERSION>,
Write the group context.
fn write_confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
confirmation_tag: &ConfirmationTag,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ConfirmationTag: ConfirmationTag<VERSION>,
fn write_confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
confirmation_tag: &ConfirmationTag,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ConfirmationTag: ConfirmationTag<VERSION>,
Write the confirmation tag.
fn write_group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
group_state: &GroupState,
) -> Result<(), Self::Error>where
GroupState: GroupState<VERSION>,
GroupId: GroupId<VERSION>,
fn write_group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
group_state: &GroupState,
) -> Result<(), Self::Error>where
GroupState: GroupState<VERSION>,
GroupId: GroupId<VERSION>,
Writes the MlsGroupState for group with given id.
fn write_message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
message_secrets: &MessageSecrets,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
MessageSecrets: MessageSecrets<VERSION>,
fn write_message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
message_secrets: &MessageSecrets,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
MessageSecrets: MessageSecrets<VERSION>,
Writes the MessageSecretsStore for the group with the given id.
fn write_resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
resumption_psk_store: &ResumptionPskStore,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ResumptionPskStore: ResumptionPskStore<VERSION>,
fn write_resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
resumption_psk_store: &ResumptionPskStore,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ResumptionPskStore: ResumptionPskStore<VERSION>,
Writes the ResumptionPskStore for the group with the given id.
fn write_own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
own_leaf_index: &LeafNodeIndex,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
LeafNodeIndex: LeafNodeIndex<VERSION>,
fn write_own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
own_leaf_index: &LeafNodeIndex,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
LeafNodeIndex: LeafNodeIndex<VERSION>,
Writes the own leaf index inside the group for the group with the given id.
fn write_group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
group_epoch_secrets: &GroupEpochSecrets,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
GroupEpochSecrets: GroupEpochSecrets<VERSION>,
fn write_group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
group_epoch_secrets: &GroupEpochSecrets,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
GroupEpochSecrets: GroupEpochSecrets<VERSION>,
Writes the GroupEpochSecrets for the group with the given id.
fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
application_export_tree: &ApplicationExportTree,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
Available on crate feature extensions-draft only.
fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
application_export_tree: &ApplicationExportTree,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
extensions-draft only.Write the ApplicationExportTree for the group with the given id.
fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), Self::Error>where
EpochId: VcEpochId<VERSION>,
VcEmulationEpochState: VcEmulationEpochState<VERSION>,
Available on crate feature virtual-clients-draft only.
fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), Self::Error>where
EpochId: VcEpochId<VERSION>,
VcEmulationEpochState: VcEmulationEpochState<VERSION>,
virtual-clients-draft only.Write the virtual clients per-emulation-epoch state (the AEAD key plus the registering client’s emulation-group leaf index) for the given epoch.
fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
bindings: &VcEmulationBindings,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
VcEmulationBindings: VcEmulationBindings<VERSION>,
Available on crate feature virtual-clients-draft only.
fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
bindings: &VcEmulationBindings,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
VcEmulationBindings: VcEmulationBindings<VERSION>,
virtual-clients-draft only.Store the record binding each recent epoch of a higher-level group to
the emulation-group epoch whose virtual-client LeafNode was active at
that epoch. Used by the reuse-guard derivation path to look up the
per-message ReuseGuardSecret for the epoch a message was sent in.
The record is updated on every commit merged on the higher-level group and prunes its own entries in lockstep with the group’s message-secrets retention. A subsequent write replaces any previously stored record.
fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
vc_operation_tree: &VcOperationTree,
) -> Result<(), Self::Error>where
EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
Available on crate feature virtual-clients-draft only.
fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
vc_operation_tree: &VcOperationTree,
) -> Result<(), Self::Error>where
EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
virtual-clients-draft only.Write the per-emulation-epoch Virtual Client Operation Secret Tree
(the lazily derived node secrets plus the per-leaf operation
ratchets) for the given epoch. The tree is written back after every
ratchet advance. It is stored separately from the static
EmulationEpochState so that per-operation writes do not rewrite
the static fields.
fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
epoch_id: &EpochId,
operation_tree: &VcOperationTree,
materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), Self::Error>where
EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
KeyPackageRef: HashReference<VERSION>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<VERSION>,
Available on crate feature virtual-clients-draft only.
fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
epoch_id: &EpochId,
operation_tree: &VcOperationTree,
materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), Self::Error>where
EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
KeyPackageRef: HashReference<VERSION>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<VERSION>,
virtual-clients-draft only.Store the advanced operation secret tree for epoch_id together with
the retained virtual clients KeyPackage material for every reference in
materials.
A sibling calls this once when it processes a KeyPackageUpload: the
upload consumes one operation generation in the tree and produces one
RetainedKeyPackageMaterial per
KeyPackage. These writes belong together: the tree must never be
persisted as advanced without the materials it produced. Providers do
not open their own transaction, so an application using a transactional
provider (such as SQLite) should call this within a transaction to get
atomicity and rollback on error. The in-memory provider applies the
writes while holding its write lock. Each material is keyed by its
HashReference
and tagged with epoch_id so the epoch-liveness query
(Self::has_retained_key_package_material_for_epoch) can find it. A
subsequent write for the same reference replaces the stored material.
fn write_signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
signature_key_pair: &SignatureKeyPair,
) -> Result<(), Self::Error>where
SignaturePublicKey: SignaturePublicKey<VERSION>,
SignatureKeyPair: SignatureKeyPair<VERSION>,
fn write_signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
signature_key_pair: &SignatureKeyPair,
) -> Result<(), Self::Error>where
SignaturePublicKey: SignaturePublicKey<VERSION>,
SignatureKeyPair: SignatureKeyPair<VERSION>,
Store a signature key.
The signature key pair is not known to OpenMLS. This may be used by the application
fn write_encryption_key_pair<EncryptionKey, HpkeKeyPair>(
&self,
public_key: &EncryptionKey,
key_pair: &HpkeKeyPair,
) -> Result<(), Self::Error>where
EncryptionKey: EncryptionKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>,
fn write_encryption_key_pair<EncryptionKey, HpkeKeyPair>(
&self,
public_key: &EncryptionKey,
key_pair: &HpkeKeyPair,
) -> Result<(), Self::Error>where
EncryptionKey: EncryptionKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>,
Store an HPKE encryption key pair. This includes the private and public key
This is only be used for encryption key pairs that are generated for update leaf nodes. All other encryption key pairs are stored as part of the key package or the epoch encryption key pairs.
fn write_encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
key_pairs: &[HpkeKeyPair],
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>,
fn write_encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
key_pairs: &[HpkeKeyPair],
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>,
Store a list of HPKE encryption key pairs for a given epoch. This includes the private and public keys.
fn write_key_package<HashReference, KeyPackage>(
&self,
hash_ref: &HashReference,
key_package: &KeyPackage,
) -> Result<(), Self::Error>where
HashReference: HashReference<VERSION>,
KeyPackage: KeyPackage<VERSION>,
fn write_key_package<HashReference, KeyPackage>(
&self,
hash_ref: &HashReference,
key_package: &KeyPackage,
) -> Result<(), Self::Error>where
HashReference: HashReference<VERSION>,
KeyPackage: KeyPackage<VERSION>,
Store key packages.
Store a key package. This includes the private init key.
The encryption key is stored separately with write_encryption_key_pair.
Note that it is recommended to store a list of the hash references as well in order to iterate over key packages. OpenMLS does not have a reference for them.
fn write_psk<PskId, PskBundle>(
&self,
psk_id: &PskId,
psk: &PskBundle,
) -> Result<(), Self::Error>where
PskId: PskId<VERSION>,
PskBundle: PskBundle<VERSION>,
fn write_psk<PskId, PskBundle>(
&self,
psk_id: &PskId,
psk: &PskBundle,
) -> Result<(), Self::Error>where
PskId: PskId<VERSION>,
PskBundle: PskBundle<VERSION>,
Store a PSK.
This stores PSKs based on the PSK id.
PSKs are only read by OpenMLS. The application is responsible for managing and storing PSKs.
fn mls_group_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
) -> Result<Option<MlsGroupJoinConfig>, Self::Error>where
GroupId: GroupId<VERSION>,
MlsGroupJoinConfig: MlsGroupJoinConfig<VERSION>,
fn mls_group_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
) -> Result<Option<MlsGroupJoinConfig>, Self::Error>where
GroupId: GroupId<VERSION>,
MlsGroupJoinConfig: MlsGroupJoinConfig<VERSION>,
Returns the MlsGroupJoinConfig for the group with given id
fn own_leaf_nodes<GroupId, LeafNode>(
&self,
group_id: &GroupId,
) -> Result<Vec<LeafNode>, Self::Error>where
GroupId: GroupId<VERSION>,
LeafNode: LeafNode<VERSION>,
fn own_leaf_nodes<GroupId, LeafNode>(
&self,
group_id: &GroupId,
) -> Result<Vec<LeafNode>, Self::Error>where
GroupId: GroupId<VERSION>,
LeafNode: LeafNode<VERSION>,
Returns the own leaf nodes for the group with given id
fn queued_proposal_refs<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<Vec<ProposalRef>, Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
fn queued_proposal_refs<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<Vec<ProposalRef>, Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
Returns references of all queued proposals for the group with group id group_id, or an empty vector of none are stored.
fn queued_proposals<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
) -> Result<Vec<(ProposalRef, QueuedProposal)>, Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
QueuedProposal: QueuedProposal<VERSION>,
fn queued_proposals<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
) -> Result<Vec<(ProposalRef, QueuedProposal)>, Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
QueuedProposal: QueuedProposal<VERSION>,
Returns all queued proposals for the group with group id group_id, or an empty vector of none are stored.
fn tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
) -> Result<Option<TreeSync>, Self::Error>where
GroupId: GroupId<VERSION>,
TreeSync: TreeSync<VERSION>,
fn tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
) -> Result<Option<TreeSync>, Self::Error>where
GroupId: GroupId<VERSION>,
TreeSync: TreeSync<VERSION>,
Returns the TreeSync tree for the group with group id group_id.
fn group_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupContext>, Self::Error>where
GroupId: GroupId<VERSION>,
GroupContext: GroupContext<VERSION>,
fn group_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupContext>, Self::Error>where
GroupId: GroupId<VERSION>,
GroupContext: GroupContext<VERSION>,
Returns the group context for the group with group id group_id.
fn interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
) -> Result<Option<InterimTranscriptHash>, Self::Error>where
GroupId: GroupId<VERSION>,
InterimTranscriptHash: InterimTranscriptHash<VERSION>,
fn interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
) -> Result<Option<InterimTranscriptHash>, Self::Error>where
GroupId: GroupId<VERSION>,
InterimTranscriptHash: InterimTranscriptHash<VERSION>,
Returns the interim transcript hash for the group with group id group_id.
fn confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
) -> Result<Option<ConfirmationTag>, Self::Error>where
GroupId: GroupId<VERSION>,
ConfirmationTag: ConfirmationTag<VERSION>,
fn confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
) -> Result<Option<ConfirmationTag>, Self::Error>where
GroupId: GroupId<VERSION>,
ConfirmationTag: ConfirmationTag<VERSION>,
Returns the confirmation tag for the group with group id group_id.
fn group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupState>, Self::Error>where
GroupState: GroupState<VERSION>,
GroupId: GroupId<VERSION>,
fn group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupState>, Self::Error>where
GroupState: GroupState<VERSION>,
GroupId: GroupId<VERSION>,
Returns the group state for the group with group id group_id.
fn message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<MessageSecrets>, Self::Error>where
GroupId: GroupId<VERSION>,
MessageSecrets: MessageSecrets<VERSION>,
fn message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<MessageSecrets>, Self::Error>where
GroupId: GroupId<VERSION>,
MessageSecrets: MessageSecrets<VERSION>,
Returns the MessageSecretsStore for the group with the given id.
fn resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
) -> Result<Option<ResumptionPskStore>, Self::Error>where
GroupId: GroupId<VERSION>,
ResumptionPskStore: ResumptionPskStore<VERSION>,
fn resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
) -> Result<Option<ResumptionPskStore>, Self::Error>where
GroupId: GroupId<VERSION>,
ResumptionPskStore: ResumptionPskStore<VERSION>,
Returns the ResumptionPskStore for the group with the given id.
Returning None here is considered an error because the store is needed
by OpenMLS when loading a group.
fn own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
) -> Result<Option<LeafNodeIndex>, Self::Error>where
GroupId: GroupId<VERSION>,
LeafNodeIndex: LeafNodeIndex<VERSION>,
fn own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
) -> Result<Option<LeafNodeIndex>, Self::Error>where
GroupId: GroupId<VERSION>,
LeafNodeIndex: LeafNodeIndex<VERSION>,
Returns the own leaf index inside the group for the group with the given id.
fn group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupEpochSecrets>, Self::Error>where
GroupId: GroupId<VERSION>,
GroupEpochSecrets: GroupEpochSecrets<VERSION>,
fn group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupEpochSecrets>, Self::Error>where
GroupId: GroupId<VERSION>,
GroupEpochSecrets: GroupEpochSecrets<VERSION>,
Returns the GroupEpochSecrets for the group with the given id.
fn signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
) -> Result<Option<SignatureKeyPair>, Self::Error>where
SignaturePublicKey: SignaturePublicKey<VERSION>,
SignatureKeyPair: SignatureKeyPair<VERSION>,
fn signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
) -> Result<Option<SignatureKeyPair>, Self::Error>where
SignaturePublicKey: SignaturePublicKey<VERSION>,
SignatureKeyPair: SignatureKeyPair<VERSION>,
Get a signature key based on the public key.
The signature key pair is not known to OpenMLS. This may be used by the application
fn encryption_key_pair<HpkeKeyPair, EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<Option<HpkeKeyPair>, Self::Error>where
HpkeKeyPair: HpkeKeyPair<VERSION>,
EncryptionKey: EncryptionKey<VERSION>,
fn encryption_key_pair<HpkeKeyPair, EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<Option<HpkeKeyPair>, Self::Error>where
HpkeKeyPair: HpkeKeyPair<VERSION>,
EncryptionKey: EncryptionKey<VERSION>,
Get an HPKE encryption key pair based on the public key.
This is only be used for encryption key pairs that are generated for update leaf nodes. All other encryption key pairs are stored as part of the key package or the epoch encryption key pairs.
fn encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<Vec<HpkeKeyPair>, Self::Error>where
GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>,
fn encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<Vec<HpkeKeyPair>, Self::Error>where
GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
HpkeKeyPair: HpkeKeyPair<VERSION>,
Get a list of HPKE encryption key pairs for a given epoch. This includes the private and public keys.
fn key_package<KeyPackageRef, KeyPackage>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<KeyPackage>, Self::Error>where
KeyPackageRef: HashReference<VERSION>,
KeyPackage: KeyPackage<VERSION>,
fn key_package<KeyPackageRef, KeyPackage>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<KeyPackage>, Self::Error>where
KeyPackageRef: HashReference<VERSION>,
KeyPackage: KeyPackage<VERSION>,
Get a key package based on its hash reference.
fn psk<PskBundle, PskId>(
&self,
psk_id: &PskId,
) -> Result<Option<PskBundle>, Self::Error>where
PskBundle: PskBundle<VERSION>,
PskId: PskId<VERSION>,
fn psk<PskBundle, PskId>(
&self,
psk_id: &PskId,
) -> Result<Option<PskBundle>, Self::Error>where
PskBundle: PskBundle<VERSION>,
PskId: PskId<VERSION>,
Get a PSK based on the PSK identifier.
fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
Available on crate feature extensions-draft only.
fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
extensions-draft only.Get the application export tree for the group with the given id.
fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, Self::Error>where
EpochId: VcEpochId<VERSION>,
VcEmulationEpochState: VcEmulationEpochState<VERSION>,
Available on crate feature virtual-clients-draft only.
fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, Self::Error>where
EpochId: VcEpochId<VERSION>,
VcEmulationEpochState: VcEmulationEpochState<VERSION>,
virtual-clients-draft only.Get the virtual clients per-emulation-epoch state for the given epoch (the AEAD key plus the registering client’s emulation-group leaf index).
fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, Self::Error>where
GroupId: GroupId<VERSION>,
VcEmulationBindings: VcEmulationBindings<VERSION>,
Available on crate feature virtual-clients-draft only.
fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, Self::Error>where
GroupId: GroupId<VERSION>,
VcEmulationBindings: VcEmulationBindings<VERSION>,
virtual-clients-draft only.Load the per-epoch emulation bindings of a higher-level group (see
Self::write_vc_emulation_bindings). Returns None if no VC
commit has been merged on this higher-level group.
fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, Self::Error>where
EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
Available on crate feature virtual-clients-draft only.
fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, Self::Error>where
EpochId: VcEpochId<VERSION>,
VcOperationTree: VcOperationTree<VERSION>,
virtual-clients-draft only.Get the per-emulation-epoch Virtual Client Operation Secret Tree for the given epoch (the lazily derived node secrets plus the per-leaf operation ratchets).
fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, Self::Error>where
KeyPackageRef: HashReference<VERSION>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<VERSION>,
Available on crate feature virtual-clients-draft only.
fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, Self::Error>where
KeyPackageRef: HashReference<VERSION>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<VERSION>,
virtual-clients-draft only.Get the retained virtual clients KeyPackage material for the given
KeyPackage reference. Returns None if no material was stored for that
reference.
fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, Self::Error>where
EpochId: VcEpochId<VERSION>,
Available on crate feature virtual-clients-draft only.
fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, Self::Error>where
EpochId: VcEpochId<VERSION>,
virtual-clients-draft only.Return true if any retained virtual clients KeyPackage material still
references epoch_id. Used to keep an emulation epoch’s state alive
while KeyPackages derived from it can still be welcomed (see
Self::delete_vc_emulation_state_if_unreferenced).
fn remove_proposal<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
fn remove_proposal<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
Removes an individual proposal from the proposal queue of the group with the provided id
fn delete_own_leaf_nodes<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_own_leaf_nodes<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes own leaf nodes for the given id from storage
fn delete_group_config<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_group_config<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the MlsGroupJoinConfig for the given id from storage
fn delete_tree<GroupId>(&self, group_id: &GroupId) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_tree<GroupId>(&self, group_id: &GroupId) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the tree from storage
fn delete_confirmation_tag<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_confirmation_tag<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the confirmation tag from storage
fn delete_group_state<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_group_state<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the MlsGroupState for group with given id.
fn delete_context<GroupId>(&self, group_id: &GroupId) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_context<GroupId>(&self, group_id: &GroupId) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the group context for the group with given id
fn delete_interim_transcript_hash<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_interim_transcript_hash<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the interim transcript hash for the group with given id
fn delete_message_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_message_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the MessageSecretsStore for the group with the given id.
fn delete_all_resumption_psk_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_all_resumption_psk_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the ResumptionPskStore for the group with the given id.
fn delete_own_leaf_index<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_own_leaf_index<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the own leaf index inside the group for the group with the given id.
fn delete_group_epoch_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
fn delete_group_epoch_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Deletes the GroupEpochSecrets for the group with the given id.
fn clear_proposal_queue<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
fn clear_proposal_queue<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ProposalRef: ProposalRef<VERSION>,
Clear the proposal queue for the group with the given id.
fn delete_signature_key_pair<SignaturePublicKey>(
&self,
public_key: &SignaturePublicKey,
) -> Result<(), Self::Error>where
SignaturePublicKey: SignaturePublicKey<VERSION>,
fn delete_signature_key_pair<SignaturePublicKey>(
&self,
public_key: &SignaturePublicKey,
) -> Result<(), Self::Error>where
SignaturePublicKey: SignaturePublicKey<VERSION>,
Delete a signature key pair based on its public key
The signature key pair is not known to OpenMLS. This may be used by the application
fn delete_encryption_key_pair<EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<(), Self::Error>where
EncryptionKey: EncryptionKey<VERSION>,
fn delete_encryption_key_pair<EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<(), Self::Error>where
EncryptionKey: EncryptionKey<VERSION>,
Delete an encryption key pair for a public key.
This is only be used for encryption key pairs that are generated for update leaf nodes. All other encryption key pairs are stored as part of the key package or the epoch encryption key pairs.
fn delete_encryption_epoch_key_pairs<GroupId, EpochKey>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
fn delete_encryption_epoch_key_pairs<GroupId, EpochKey>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
EpochKey: EpochKey<VERSION>,
Delete a list of HPKE encryption key pairs for a given epoch. This includes the private and public keys.
fn delete_key_package<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), Self::Error>where
KeyPackageRef: HashReference<VERSION>,
fn delete_key_package<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), Self::Error>where
KeyPackageRef: HashReference<VERSION>,
Delete a key package based on the hash reference.
Under the virtual-clients-draft feature, an implementation must also
delete the retained virtual clients KeyPackage material stored for the
same reference (see Self::delete_retained_key_package_material).
Deleting non-existent material is a no-op, so this is safe for
KeyPackages that were never uploaded by a virtual client.
fn delete_psk<PskKey>(&self, psk_id: &PskKey) -> Result<(), Self::Error>where
PskKey: PskId<VERSION>,
fn delete_psk<PskKey>(&self, psk_id: &PskKey) -> Result<(), Self::Error>where
PskKey: PskId<VERSION>,
Delete a PSK based on an identifier.
fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
Available on crate feature extensions-draft only.
fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
extensions-draft only.Delete the application export tree for the group with the given id.
fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, Self::Error>where
EpochId: VcEpochId<VERSION>,
Available on crate feature virtual-clients-draft only.
fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, Self::Error>where
EpochId: VcEpochId<VERSION>,
virtual-clients-draft only.Delete all per-epoch state for the given emulation epoch (both the emulation epoch state and the Virtual Client Operation Secret Tree), but only if no retained virtual clients KeyPackage material still references it.
Returns Ok(true) if the epoch state was deleted, and Ok(false) if
it was kept because retained material still references the epoch. The
liveness check and the deletion belong together. Providers do not open
their own transaction, so an application using a transactional provider
(such as SQLite) should call this within a transaction, so a material
stored concurrently cannot be orphaned by a deletion that already
observed the epoch as unreferenced. The in-memory provider holds its
write lock across both.
fn delete_vc_emulation_bindings<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
Available on crate feature virtual-clients-draft only.
fn delete_vc_emulation_bindings<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
virtual-clients-draft only.Remove the per-epoch emulation bindings of the given group. Called when the group is being deleted.
fn delete_retained_key_package_material<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), Self::Error>where
KeyPackageRef: HashReference<VERSION>,
Available on crate feature virtual-clients-draft only.
fn delete_retained_key_package_material<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), Self::Error>where
KeyPackageRef: HashReference<VERSION>,
virtual-clients-draft only.Delete the retained virtual clients KeyPackage material stored for the
given KeyPackage reference. Called from Self::delete_key_package so
the material is removed together with the KeyPackage it describes.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
§impl StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}> for MemoryStorage
impl StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}> for MemoryStorage
type Error = MemoryStorageError
fn write_encryption_key_pair<EncryptionKey, HpkeKeyPair>(
&self,
public_key: &EncryptionKey,
key_pair: &HpkeKeyPair,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EncryptionKey: EncryptionKey<openmls_memory_storage::::test_store::{impl#0}::write_encryption_key_pair::{constant#1}>,
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::test_store::{impl#0}::write_encryption_key_pair::{constant#2}>,
fn encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<Vec<HpkeKeyPair>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::encryption_epoch_key_pairs::{constant#0}>,
EpochKey: EpochKey<openmls_memory_storage::::test_store::{impl#0}::encryption_epoch_key_pairs::{constant#1}>,
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::test_store::{impl#0}::encryption_epoch_key_pairs::{constant#2}>,
fn key_package<KeyPackageRef, KeyPackage>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<KeyPackage>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::key_package::{constant#0}>,
KeyPackage: KeyPackage<openmls_memory_storage::::test_store::{impl#0}::key_package::{constant#1}>,
fn write_key_package<HashReference, KeyPackage>(
&self,
hash_ref: &HashReference,
key_package: &KeyPackage,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
HashReference: HashReference<openmls_memory_storage::::test_store::{impl#0}::write_key_package::{constant#1}>,
KeyPackage: KeyPackage<openmls_memory_storage::::test_store::{impl#0}::write_key_package::{constant#2}>,
fn queue_proposal<GroupId, ProposalRef, QueuedProposal>(
&self,
_group_id: &GroupId,
_proposal_ref: &ProposalRef,
_proposal: &QueuedProposal,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::queue_proposal::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::test_store::{impl#0}::queue_proposal::{constant#1}>,
QueuedProposal: QueuedProposal<openmls_memory_storage::::test_store::{impl#0}::queue_proposal::{constant#2}>,
fn write_tree<GroupId, TreeSync>(
&self,
_group_id: &GroupId,
_tree: &TreeSync,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_tree::{constant#0}>,
TreeSync: TreeSync<openmls_memory_storage::::test_store::{impl#0}::write_tree::{constant#1}>,
fn write_interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
_group_id: &GroupId,
_interim_transcript_hash: &InterimTranscriptHash,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_interim_transcript_hash::{constant#0}>,
InterimTranscriptHash: InterimTranscriptHash<openmls_memory_storage::::test_store::{impl#0}::write_interim_transcript_hash::{constant#1}>,
fn write_context<GroupId, GroupContext>(
&self,
_group_id: &GroupId,
_group_context: &GroupContext,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_context::{constant#0}>,
GroupContext: GroupContext<openmls_memory_storage::::test_store::{impl#0}::write_context::{constant#1}>,
fn write_confirmation_tag<GroupId, ConfirmationTag>(
&self,
_group_id: &GroupId,
_confirmation_tag: &ConfirmationTag,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_confirmation_tag::{constant#0}>,
ConfirmationTag: ConfirmationTag<openmls_memory_storage::::test_store::{impl#0}::write_confirmation_tag::{constant#1}>,
fn write_signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
_public_key: &SignaturePublicKey,
_signature_key_pair: &SignatureKeyPair,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
SignaturePublicKey: SignaturePublicKey<openmls_memory_storage::::test_store::{impl#0}::write_signature_key_pair::{constant#0}>,
SignatureKeyPair: SignatureKeyPair<openmls_memory_storage::::test_store::{impl#0}::write_signature_key_pair::{constant#1}>,
fn write_encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
_group_id: &GroupId,
_epoch: &EpochKey,
_leaf_index: u32,
_key_pairs: &[HpkeKeyPair],
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_encryption_epoch_key_pairs::{constant#0}>,
EpochKey: EpochKey<openmls_memory_storage::::test_store::{impl#0}::write_encryption_epoch_key_pairs::{constant#1}>,
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::test_store::{impl#0}::write_encryption_epoch_key_pairs::{constant#2}>,
fn write_psk<PskId, PskBundle>(
&self,
_psk_id: &PskId,
_psk: &PskBundle,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
PskId: PskId<openmls_memory_storage::::test_store::{impl#0}::write_psk::{constant#0}>,
PskBundle: PskBundle<openmls_memory_storage::::test_store::{impl#0}::write_psk::{constant#1}>,
fn queued_proposal_refs<GroupId, ProposalRef>(
&self,
_group_id: &GroupId,
) -> Result<Vec<ProposalRef>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::queued_proposal_refs::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::test_store::{impl#0}::queued_proposal_refs::{constant#1}>,
fn tree<GroupId, TreeSync>(
&self,
_group_id: &GroupId,
) -> Result<Option<TreeSync>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::tree::{constant#0}>,
TreeSync: TreeSync<openmls_memory_storage::::test_store::{impl#0}::tree::{constant#1}>,
fn group_context<GroupId, GroupContext>(
&self,
_group_id: &GroupId,
) -> Result<Option<GroupContext>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::group_context::{constant#0}>,
GroupContext: GroupContext<openmls_memory_storage::::test_store::{impl#0}::group_context::{constant#1}>,
fn interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
_group_id: &GroupId,
) -> Result<Option<InterimTranscriptHash>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::interim_transcript_hash::{constant#0}>,
InterimTranscriptHash: InterimTranscriptHash<openmls_memory_storage::::test_store::{impl#0}::interim_transcript_hash::{constant#1}>,
fn confirmation_tag<GroupId, ConfirmationTag>(
&self,
_group_id: &GroupId,
) -> Result<Option<ConfirmationTag>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::confirmation_tag::{constant#0}>,
ConfirmationTag: ConfirmationTag<openmls_memory_storage::::test_store::{impl#0}::confirmation_tag::{constant#1}>,
fn signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
_public_key: &SignaturePublicKey,
) -> Result<Option<SignatureKeyPair>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
SignaturePublicKey: SignaturePublicKey<openmls_memory_storage::::test_store::{impl#0}::signature_key_pair::{constant#0}>,
SignatureKeyPair: SignatureKeyPair<openmls_memory_storage::::test_store::{impl#0}::signature_key_pair::{constant#1}>,
fn encryption_key_pair<HpkeKeyPair, EncryptionKey>(
&self,
_public_key: &EncryptionKey,
) -> Result<Option<HpkeKeyPair>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::test_store::{impl#0}::encryption_key_pair::{constant#0}>,
EncryptionKey: EncryptionKey<openmls_memory_storage::::test_store::{impl#0}::encryption_key_pair::{constant#1}>,
fn psk<PskBundle, PskId>(
&self,
_psk_id: &PskId,
) -> Result<Option<PskBundle>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
PskBundle: PskBundle<openmls_memory_storage::::test_store::{impl#0}::psk::{constant#0}>,
PskId: PskId<openmls_memory_storage::::test_store::{impl#0}::psk::{constant#1}>,
fn delete_signature_key_pair<SignaturePublicKeuy>(
&self,
_public_key: &SignaturePublicKeuy,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
SignaturePublicKeuy: SignaturePublicKey<openmls_memory_storage::::test_store::{impl#0}::delete_signature_key_pair::{constant#0}>,
fn delete_encryption_key_pair<EncryptionKey>(
&self,
_public_key: &EncryptionKey,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EncryptionKey: EncryptionKey<openmls_memory_storage::::test_store::{impl#0}::delete_encryption_key_pair::{constant#0}>,
fn delete_encryption_epoch_key_pairs<GroupId, EpochKey>(
&self,
_group_id: &GroupId,
_epoch: &EpochKey,
_leaf_index: u32,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_encryption_epoch_key_pairs::{constant#0}>,
EpochKey: EpochKey<openmls_memory_storage::::test_store::{impl#0}::delete_encryption_epoch_key_pairs::{constant#1}>,
fn delete_key_package<KeyPackageRef>(
&self,
_hash_ref: &KeyPackageRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::delete_key_package::{constant#0}>,
fn delete_psk<PskKey>(
&self,
_psk_id: &PskKey,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
PskKey: PskId<openmls_memory_storage::::test_store::{impl#0}::delete_psk::{constant#0}>,
fn group_state<GroupState, GroupId>(
&self,
_group_id: &GroupId,
) -> Result<Option<GroupState>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupState: GroupState<openmls_memory_storage::::test_store::{impl#0}::group_state::{constant#0}>,
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::group_state::{constant#1}>,
fn write_group_state<GroupState, GroupId>(
&self,
_group_id: &GroupId,
_group_state: &GroupState,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupState: GroupState<openmls_memory_storage::::test_store::{impl#0}::write_group_state::{constant#0}>,
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_group_state::{constant#1}>,
fn delete_group_state<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_group_state::{constant#0}>,
fn message_secrets<GroupId, MessageSecrets>(
&self,
_group_id: &GroupId,
) -> Result<Option<MessageSecrets>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::message_secrets::{constant#0}>,
MessageSecrets: MessageSecrets<openmls_memory_storage::::test_store::{impl#0}::message_secrets::{constant#1}>,
fn write_message_secrets<GroupId, MessageSecrets>(
&self,
_group_id: &GroupId,
_message_secrets: &MessageSecrets,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_message_secrets::{constant#0}>,
MessageSecrets: MessageSecrets<openmls_memory_storage::::test_store::{impl#0}::write_message_secrets::{constant#1}>,
fn delete_message_secrets<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_message_secrets::{constant#0}>,
fn resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
_group_id: &GroupId,
) -> Result<Option<ResumptionPskStore>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::resumption_psk_store::{constant#0}>,
ResumptionPskStore: ResumptionPskStore<openmls_memory_storage::::test_store::{impl#0}::resumption_psk_store::{constant#1}>,
fn write_resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
_group_id: &GroupId,
_resumption_psk_store: &ResumptionPskStore,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_resumption_psk_store::{constant#0}>,
ResumptionPskStore: ResumptionPskStore<openmls_memory_storage::::test_store::{impl#0}::write_resumption_psk_store::{constant#1}>,
fn delete_all_resumption_psk_secrets<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_all_resumption_psk_secrets::{constant#0}>,
fn own_leaf_index<GroupId, LeafNodeIndex>(
&self,
_group_id: &GroupId,
) -> Result<Option<LeafNodeIndex>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::own_leaf_index::{constant#0}>,
LeafNodeIndex: LeafNodeIndex<openmls_memory_storage::::test_store::{impl#0}::own_leaf_index::{constant#1}>,
fn write_own_leaf_index<GroupId, LeafNodeIndex>(
&self,
_group_id: &GroupId,
_own_leaf_index: &LeafNodeIndex,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_own_leaf_index::{constant#0}>,
LeafNodeIndex: LeafNodeIndex<openmls_memory_storage::::test_store::{impl#0}::write_own_leaf_index::{constant#1}>,
fn delete_own_leaf_index<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_own_leaf_index::{constant#0}>,
fn group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
_group_id: &GroupId,
) -> Result<Option<GroupEpochSecrets>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::group_epoch_secrets::{constant#0}>,
GroupEpochSecrets: GroupEpochSecrets<openmls_memory_storage::::test_store::{impl#0}::group_epoch_secrets::{constant#1}>,
fn write_group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
_group_id: &GroupId,
_group_epoch_secrets: &GroupEpochSecrets,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_group_epoch_secrets::{constant#0}>,
GroupEpochSecrets: GroupEpochSecrets<openmls_memory_storage::::test_store::{impl#0}::write_group_epoch_secrets::{constant#1}>,
fn delete_group_epoch_secrets<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_group_epoch_secrets::{constant#0}>,
fn clear_proposal_queue<GroupId, ProposalRef>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::clear_proposal_queue::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::test_store::{impl#0}::clear_proposal_queue::{constant#1}>,
fn mls_group_join_config<GroupId, MlsGroupJoinConfig>(
&self,
_group_id: &GroupId,
) -> Result<Option<MlsGroupJoinConfig>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::mls_group_join_config::{constant#0}>,
MlsGroupJoinConfig: MlsGroupJoinConfig<openmls_memory_storage::::test_store::{impl#0}::mls_group_join_config::{constant#1}>,
fn write_mls_join_config<GroupId, MlsGroupJoinConfig>(
&self,
_group_id: &GroupId,
_config: &MlsGroupJoinConfig,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_mls_join_config::{constant#0}>,
MlsGroupJoinConfig: MlsGroupJoinConfig<openmls_memory_storage::::test_store::{impl#0}::write_mls_join_config::{constant#1}>,
fn own_leaf_nodes<GroupId, LeafNode>(
&self,
_group_id: &GroupId,
) -> Result<Vec<LeafNode>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::own_leaf_nodes::{constant#0}>,
LeafNode: LeafNode<openmls_memory_storage::::test_store::{impl#0}::own_leaf_nodes::{constant#1}>,
fn append_own_leaf_node<GroupId, LeafNode>(
&self,
_group_id: &GroupId,
_leaf_node: &LeafNode,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::append_own_leaf_node::{constant#0}>,
LeafNode: LeafNode<openmls_memory_storage::::test_store::{impl#0}::append_own_leaf_node::{constant#1}>,
fn queued_proposals<GroupId, ProposalRef, QueuedProposal>(
&self,
_group_id: &GroupId,
) -> Result<Vec<(ProposalRef, QueuedProposal)>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::queued_proposals::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::test_store::{impl#0}::queued_proposals::{constant#1}>,
QueuedProposal: QueuedProposal<openmls_memory_storage::::test_store::{impl#0}::queued_proposals::{constant#2}>,
fn remove_proposal<GroupId, ProposalRef>(
&self,
_group_id: &GroupId,
_proposal_ref: &ProposalRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::remove_proposal::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::test_store::{impl#0}::remove_proposal::{constant#1}>,
fn delete_own_leaf_nodes<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_own_leaf_nodes::{constant#0}>,
fn delete_group_config<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_group_config::{constant#0}>,
fn delete_tree<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_tree::{constant#0}>,
fn delete_confirmation_tag<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_confirmation_tag::{constant#0}>,
fn delete_context<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_context::{constant#0}>,
fn delete_interim_transcript_hash<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_interim_transcript_hash::{constant#0}>,
§fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
_group_id: &GroupId,
_application_export_tree: &ApplicationExportTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_application_export_tree::{constant#0}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::test_store::{impl#0}::write_application_export_tree::{constant#1}>,
fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
_group_id: &GroupId,
_application_export_tree: &ApplicationExportTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_application_export_tree::{constant#0}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::test_store::{impl#0}::write_application_export_tree::{constant#1}>,
extensions-draft only.§fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
_group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::application_export_tree::{constant#0}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::test_store::{impl#0}::application_export_tree::{constant#1}>,
fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
_group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::application_export_tree::{constant#0}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::test_store::{impl#0}::application_export_tree::{constant#1}>,
extensions-draft only.§fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_application_export_tree::{constant#0}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::test_store::{impl#0}::delete_application_export_tree::{constant#1}>,
fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_application_export_tree::{constant#0}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::test_store::{impl#0}::delete_application_export_tree::{constant#1}>,
extensions-draft only.§fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
_epoch_id: &EpochId,
_vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_epoch_state::{constant#0}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_epoch_state::{constant#1}>,
fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
_epoch_id: &EpochId,
_vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_epoch_state::{constant#0}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_epoch_state::{constant#1}>,
virtual-clients-draft only.§fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
_epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_epoch_state::{constant#0}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_epoch_state::{constant#1}>,
fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
_epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_epoch_state::{constant#0}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_epoch_state::{constant#1}>,
virtual-clients-draft only.§fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
_epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::delete_vc_emulation_state_if_unreferenced::{constant#0}>,
fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
_epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::delete_vc_emulation_state_if_unreferenced::{constant#0}>,
virtual-clients-draft only.§fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
_group_id: &GroupId,
_bindings: &VcEmulationBindings,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_bindings::{constant#0}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_bindings::{constant#1}>,
fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
_group_id: &GroupId,
_bindings: &VcEmulationBindings,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_bindings::{constant#0}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::test_store::{impl#0}::write_vc_emulation_bindings::{constant#1}>,
virtual-clients-draft only.§fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
_group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_bindings::{constant#0}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_bindings::{constant#1}>,
fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
_group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_bindings::{constant#0}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::test_store::{impl#0}::vc_emulation_bindings::{constant#1}>,
virtual-clients-draft only.§fn delete_vc_emulation_bindings<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_vc_emulation_bindings::{constant#0}>,
fn delete_vc_emulation_bindings<GroupId>(
&self,
_group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::test_store::{impl#0}::delete_vc_emulation_bindings::{constant#0}>,
virtual-clients-draft only.§fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
_epoch_id: &EpochId,
_vc_operation_tree: &VcOperationTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::write_vc_operation_tree::{constant#0}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::test_store::{impl#0}::write_vc_operation_tree::{constant#1}>,
fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
_epoch_id: &EpochId,
_vc_operation_tree: &VcOperationTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::write_vc_operation_tree::{constant#0}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::test_store::{impl#0}::write_vc_operation_tree::{constant#1}>,
virtual-clients-draft only.§fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
_epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::vc_operation_tree::{constant#0}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::test_store::{impl#0}::vc_operation_tree::{constant#1}>,
fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
_epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::vc_operation_tree::{constant#0}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::test_store::{impl#0}::vc_operation_tree::{constant#1}>,
virtual-clients-draft only.§fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
_epoch_id: &EpochId,
_operation_tree: &VcOperationTree,
_materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#0}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#1}>,
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#2}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#3}>,
fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
_epoch_id: &EpochId,
_operation_tree: &VcOperationTree,
_materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#0}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#1}>,
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#2}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::test_store::{impl#0}::write_retained_key_package_material_batch::{constant#3}>,
virtual-clients-draft only.§fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
_hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::retained_key_package_material::{constant#0}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::test_store::{impl#0}::retained_key_package_material::{constant#1}>,
fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
_hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::retained_key_package_material::{constant#0}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::test_store::{impl#0}::retained_key_package_material::{constant#1}>,
virtual-clients-draft only.§fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
_epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::has_retained_key_package_material_for_epoch::{constant#0}>,
fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
_epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::test_store::{impl#0}::has_retained_key_package_material_for_epoch::{constant#0}>,
virtual-clients-draft only.§fn delete_retained_key_package_material<KeyPackageRef>(
&self,
_hash_ref: &KeyPackageRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::delete_retained_key_package_material::{constant#0}>,
fn delete_retained_key_package_material<KeyPackageRef>(
&self,
_hash_ref: &KeyPackageRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::test_store::{impl#0}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::test_store::{impl#0}::delete_retained_key_package_material::{constant#0}>,
virtual-clients-draft only.§impl StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}> for MemoryStorage
impl StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}> for MemoryStorage
type Error = MemoryStorageError
fn queue_proposal<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
proposal: &QueuedProposal,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::queue_proposal::{constant#2}>,
ProposalRef: ProposalRef<openmls_memory_storage::::{impl#3}::queue_proposal::{constant#3}>,
QueuedProposal: QueuedProposal<openmls_memory_storage::::{impl#3}::queue_proposal::{constant#4}>,
fn write_tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
tree: &TreeSync,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_tree::{constant#1}>,
TreeSync: TreeSync<openmls_memory_storage::::{impl#3}::write_tree::{constant#2}>,
fn write_interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
interim_transcript_hash: &InterimTranscriptHash,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_interim_transcript_hash::{constant#1}>,
InterimTranscriptHash: InterimTranscriptHash<openmls_memory_storage::::{impl#3}::write_interim_transcript_hash::{constant#2}>,
fn write_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
group_context: &GroupContext,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_context::{constant#1}>,
GroupContext: GroupContext<openmls_memory_storage::::{impl#3}::write_context::{constant#2}>,
fn write_confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
confirmation_tag: &ConfirmationTag,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_confirmation_tag::{constant#1}>,
ConfirmationTag: ConfirmationTag<openmls_memory_storage::::{impl#3}::write_confirmation_tag::{constant#2}>,
fn write_signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
signature_key_pair: &SignatureKeyPair,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
SignaturePublicKey: SignaturePublicKey<openmls_memory_storage::::{impl#3}::write_signature_key_pair::{constant#1}>,
SignatureKeyPair: SignatureKeyPair<openmls_memory_storage::::{impl#3}::write_signature_key_pair::{constant#2}>,
fn queued_proposal_refs<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<Vec<ProposalRef>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::queued_proposal_refs::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::{impl#3}::queued_proposal_refs::{constant#1}>,
fn queued_proposals<GroupId, ProposalRef, QueuedProposal>(
&self,
group_id: &GroupId,
) -> Result<Vec<(ProposalRef, QueuedProposal)>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::queued_proposals::{constant#0}>,
ProposalRef: ProposalRef<openmls_memory_storage::::{impl#3}::queued_proposals::{constant#1}>,
QueuedProposal: QueuedProposal<openmls_memory_storage::::{impl#3}::queued_proposals::{constant#2}>,
fn tree<GroupId, TreeSync>(
&self,
group_id: &GroupId,
) -> Result<Option<TreeSync>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::tree::{constant#1}>,
TreeSync: TreeSync<openmls_memory_storage::::{impl#3}::tree::{constant#2}>,
fn group_context<GroupId, GroupContext>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupContext>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::group_context::{constant#1}>,
GroupContext: GroupContext<openmls_memory_storage::::{impl#3}::group_context::{constant#2}>,
fn interim_transcript_hash<GroupId, InterimTranscriptHash>(
&self,
group_id: &GroupId,
) -> Result<Option<InterimTranscriptHash>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::interim_transcript_hash::{constant#1}>,
InterimTranscriptHash: InterimTranscriptHash<openmls_memory_storage::::{impl#3}::interim_transcript_hash::{constant#2}>,
fn confirmation_tag<GroupId, ConfirmationTag>(
&self,
group_id: &GroupId,
) -> Result<Option<ConfirmationTag>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::confirmation_tag::{constant#1}>,
ConfirmationTag: ConfirmationTag<openmls_memory_storage::::{impl#3}::confirmation_tag::{constant#2}>,
fn signature_key_pair<SignaturePublicKey, SignatureKeyPair>(
&self,
public_key: &SignaturePublicKey,
) -> Result<Option<SignatureKeyPair>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
SignaturePublicKey: SignaturePublicKey<openmls_memory_storage::::{impl#3}::signature_key_pair::{constant#1}>,
SignatureKeyPair: SignatureKeyPair<openmls_memory_storage::::{impl#3}::signature_key_pair::{constant#2}>,
fn write_key_package<HashReference, KeyPackage>(
&self,
hash_ref: &HashReference,
key_package: &KeyPackage,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
HashReference: HashReference<openmls_memory_storage::::{impl#3}::write_key_package::{constant#1}>,
KeyPackage: KeyPackage<openmls_memory_storage::::{impl#3}::write_key_package::{constant#2}>,
fn write_psk<PskId, PskBundle>(
&self,
psk_id: &PskId,
psk: &PskBundle,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
PskId: PskId<openmls_memory_storage::::{impl#3}::write_psk::{constant#1}>,
PskBundle: PskBundle<openmls_memory_storage::::{impl#3}::write_psk::{constant#2}>,
fn write_encryption_key_pair<EncryptionKey, HpkeKeyPair>(
&self,
public_key: &EncryptionKey,
key_pair: &HpkeKeyPair,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EncryptionKey: EncryptionKey<openmls_memory_storage::::{impl#3}::write_encryption_key_pair::{constant#1}>,
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::{impl#3}::write_encryption_key_pair::{constant#2}>,
fn key_package<KeyPackageRef, KeyPackage>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<KeyPackage>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::key_package::{constant#0}>,
KeyPackage: KeyPackage<openmls_memory_storage::::{impl#3}::key_package::{constant#1}>,
fn psk<PskBundle, PskId>(
&self,
psk_id: &PskId,
) -> Result<Option<PskBundle>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
PskBundle: PskBundle<openmls_memory_storage::::{impl#3}::psk::{constant#0}>,
PskId: PskId<openmls_memory_storage::::{impl#3}::psk::{constant#1}>,
fn encryption_key_pair<HpkeKeyPair, EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<Option<HpkeKeyPair>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::{impl#3}::encryption_key_pair::{constant#0}>,
EncryptionKey: EncryptionKey<openmls_memory_storage::::{impl#3}::encryption_key_pair::{constant#1}>,
fn delete_signature_key_pair<SignaturePublicKeuy>(
&self,
public_key: &SignaturePublicKeuy,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
SignaturePublicKeuy: SignaturePublicKey<openmls_memory_storage::::{impl#3}::delete_signature_key_pair::{constant#1}>,
fn delete_encryption_key_pair<EncryptionKey>(
&self,
public_key: &EncryptionKey,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EncryptionKey: EncryptionKey<openmls_memory_storage::::{impl#3}::delete_encryption_key_pair::{constant#1}>,
fn delete_key_package<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::delete_key_package::{constant#3}>,
fn delete_psk<PskKey>(
&self,
psk_id: &PskKey,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
PskKey: PskId<openmls_memory_storage::::{impl#3}::delete_psk::{constant#1}>,
fn group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupState>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupState: GroupState<openmls_memory_storage::::{impl#3}::group_state::{constant#0}>,
GroupId: GroupId<openmls_memory_storage::::{impl#3}::group_state::{constant#1}>,
fn write_group_state<GroupState, GroupId>(
&self,
group_id: &GroupId,
group_state: &GroupState,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupState: GroupState<openmls_memory_storage::::{impl#3}::write_group_state::{constant#1}>,
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_group_state::{constant#2}>,
fn delete_group_state<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_group_state::{constant#1}>,
fn message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<MessageSecrets>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::message_secrets::{constant#0}>,
MessageSecrets: MessageSecrets<openmls_memory_storage::::{impl#3}::message_secrets::{constant#1}>,
fn write_message_secrets<GroupId, MessageSecrets>(
&self,
group_id: &GroupId,
message_secrets: &MessageSecrets,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_message_secrets::{constant#1}>,
MessageSecrets: MessageSecrets<openmls_memory_storage::::{impl#3}::write_message_secrets::{constant#2}>,
fn delete_message_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_message_secrets::{constant#1}>,
fn resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
) -> Result<Option<ResumptionPskStore>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::resumption_psk_store::{constant#0}>,
ResumptionPskStore: ResumptionPskStore<openmls_memory_storage::::{impl#3}::resumption_psk_store::{constant#1}>,
fn write_resumption_psk_store<GroupId, ResumptionPskStore>(
&self,
group_id: &GroupId,
resumption_psk_store: &ResumptionPskStore,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_resumption_psk_store::{constant#1}>,
ResumptionPskStore: ResumptionPskStore<openmls_memory_storage::::{impl#3}::write_resumption_psk_store::{constant#2}>,
fn delete_all_resumption_psk_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_all_resumption_psk_secrets::{constant#1}>,
fn own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
) -> Result<Option<LeafNodeIndex>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::own_leaf_index::{constant#0}>,
LeafNodeIndex: LeafNodeIndex<openmls_memory_storage::::{impl#3}::own_leaf_index::{constant#1}>,
fn write_own_leaf_index<GroupId, LeafNodeIndex>(
&self,
group_id: &GroupId,
own_leaf_index: &LeafNodeIndex,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_own_leaf_index::{constant#1}>,
LeafNodeIndex: LeafNodeIndex<openmls_memory_storage::::{impl#3}::write_own_leaf_index::{constant#2}>,
fn delete_own_leaf_index<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_own_leaf_index::{constant#1}>,
fn group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
) -> Result<Option<GroupEpochSecrets>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::group_epoch_secrets::{constant#0}>,
GroupEpochSecrets: GroupEpochSecrets<openmls_memory_storage::::{impl#3}::group_epoch_secrets::{constant#1}>,
fn write_group_epoch_secrets<GroupId, GroupEpochSecrets>(
&self,
group_id: &GroupId,
group_epoch_secrets: &GroupEpochSecrets,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_group_epoch_secrets::{constant#1}>,
GroupEpochSecrets: GroupEpochSecrets<openmls_memory_storage::::{impl#3}::write_group_epoch_secrets::{constant#2}>,
fn delete_group_epoch_secrets<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_group_epoch_secrets::{constant#1}>,
fn write_encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
key_pairs: &[HpkeKeyPair],
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_encryption_epoch_key_pairs::{constant#1}>,
EpochKey: EpochKey<openmls_memory_storage::::{impl#3}::write_encryption_epoch_key_pairs::{constant#2}>,
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::{impl#3}::write_encryption_epoch_key_pairs::{constant#3}>,
fn encryption_epoch_key_pairs<GroupId, EpochKey, HpkeKeyPair>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<Vec<HpkeKeyPair>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::encryption_epoch_key_pairs::{constant#1}>,
EpochKey: EpochKey<openmls_memory_storage::::{impl#3}::encryption_epoch_key_pairs::{constant#2}>,
HpkeKeyPair: HpkeKeyPair<openmls_memory_storage::::{impl#3}::encryption_epoch_key_pairs::{constant#3}>,
fn delete_encryption_epoch_key_pairs<GroupId, EpochKey>(
&self,
group_id: &GroupId,
epoch: &EpochKey,
leaf_index: u32,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_encryption_epoch_key_pairs::{constant#1}>,
EpochKey: EpochKey<openmls_memory_storage::::{impl#3}::delete_encryption_epoch_key_pairs::{constant#2}>,
fn clear_proposal_queue<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::clear_proposal_queue::{constant#1}>,
ProposalRef: ProposalRef<openmls_memory_storage::::{impl#3}::clear_proposal_queue::{constant#2}>,
fn mls_group_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
) -> Result<Option<MlsGroupJoinConfig>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::mls_group_join_config::{constant#0}>,
MlsGroupJoinConfig: MlsGroupJoinConfig<openmls_memory_storage::::{impl#3}::mls_group_join_config::{constant#1}>,
fn write_mls_join_config<GroupId, MlsGroupJoinConfig>(
&self,
group_id: &GroupId,
config: &MlsGroupJoinConfig,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_mls_join_config::{constant#1}>,
MlsGroupJoinConfig: MlsGroupJoinConfig<openmls_memory_storage::::{impl#3}::write_mls_join_config::{constant#2}>,
fn own_leaf_nodes<GroupId, LeafNode>(
&self,
group_id: &GroupId,
) -> Result<Vec<LeafNode>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::own_leaf_nodes::{constant#0}>,
LeafNode: LeafNode<openmls_memory_storage::::{impl#3}::own_leaf_nodes::{constant#1}>,
fn append_own_leaf_node<GroupId, LeafNode>(
&self,
group_id: &GroupId,
leaf_node: &LeafNode,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::append_own_leaf_node::{constant#1}>,
LeafNode: LeafNode<openmls_memory_storage::::{impl#3}::append_own_leaf_node::{constant#2}>,
fn delete_own_leaf_nodes<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_own_leaf_nodes::{constant#1}>,
fn delete_group_config<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_group_config::{constant#1}>,
fn delete_tree<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_tree::{constant#1}>,
fn delete_confirmation_tag<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_confirmation_tag::{constant#1}>,
fn delete_context<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_context::{constant#1}>,
fn delete_interim_transcript_hash<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_interim_transcript_hash::{constant#1}>,
fn remove_proposal<GroupId, ProposalRef>(
&self,
group_id: &GroupId,
proposal_ref: &ProposalRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::remove_proposal::{constant#2}>,
ProposalRef: ProposalRef<openmls_memory_storage::::{impl#3}::remove_proposal::{constant#3}>,
§fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
application_export_tree: &ApplicationExportTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_application_export_tree::{constant#1}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::{impl#3}::write_application_export_tree::{constant#2}>,
fn write_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
application_export_tree: &ApplicationExportTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_application_export_tree::{constant#1}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::{impl#3}::write_application_export_tree::{constant#2}>,
extensions-draft only.§fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::application_export_tree::{constant#1}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::{impl#3}::application_export_tree::{constant#2}>,
fn application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<Option<ApplicationExportTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::application_export_tree::{constant#1}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::{impl#3}::application_export_tree::{constant#2}>,
extensions-draft only.§fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_application_export_tree::{constant#1}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::{impl#3}::delete_application_export_tree::{constant#2}>,
fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_application_export_tree::{constant#1}>,
ApplicationExportTree: ApplicationExportTree<openmls_memory_storage::::{impl#3}::delete_application_export_tree::{constant#2}>,
extensions-draft only.§fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::write_vc_emulation_epoch_state::{constant#1}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::{impl#3}::write_vc_emulation_epoch_state::{constant#2}>,
fn write_vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
vc_emulation_epoch_state: &VcEmulationEpochState,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::write_vc_emulation_epoch_state::{constant#1}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::{impl#3}::write_vc_emulation_epoch_state::{constant#2}>,
virtual-clients-draft only.§fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::vc_emulation_epoch_state::{constant#1}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::{impl#3}::vc_emulation_epoch_state::{constant#2}>,
fn vc_emulation_epoch_state<EpochId, VcEmulationEpochState>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcEmulationEpochState>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::vc_emulation_epoch_state::{constant#1}>,
VcEmulationEpochState: VcEmulationEpochState<openmls_memory_storage::::{impl#3}::vc_emulation_epoch_state::{constant#2}>,
virtual-clients-draft only.§fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::delete_vc_emulation_state_if_unreferenced::{constant#2}>,
fn delete_vc_emulation_state_if_unreferenced<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::delete_vc_emulation_state_if_unreferenced::{constant#2}>,
virtual-clients-draft only.§fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
bindings: &VcEmulationBindings,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_vc_emulation_bindings::{constant#1}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::{impl#3}::write_vc_emulation_bindings::{constant#2}>,
fn write_vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
bindings: &VcEmulationBindings,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::write_vc_emulation_bindings::{constant#1}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::{impl#3}::write_vc_emulation_bindings::{constant#2}>,
virtual-clients-draft only.§fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::vc_emulation_bindings::{constant#1}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::{impl#3}::vc_emulation_bindings::{constant#2}>,
fn vc_emulation_bindings<GroupId, VcEmulationBindings>(
&self,
group_id: &GroupId,
) -> Result<Option<VcEmulationBindings>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::vc_emulation_bindings::{constant#1}>,
VcEmulationBindings: VcEmulationBindings<openmls_memory_storage::::{impl#3}::vc_emulation_bindings::{constant#2}>,
virtual-clients-draft only.§fn delete_vc_emulation_bindings<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_vc_emulation_bindings::{constant#1}>,
fn delete_vc_emulation_bindings<GroupId>(
&self,
group_id: &GroupId,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
GroupId: GroupId<openmls_memory_storage::::{impl#3}::delete_vc_emulation_bindings::{constant#1}>,
virtual-clients-draft only.§fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
vc_operation_tree: &VcOperationTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::write_vc_operation_tree::{constant#1}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::{impl#3}::write_vc_operation_tree::{constant#2}>,
fn write_vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
vc_operation_tree: &VcOperationTree,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::write_vc_operation_tree::{constant#1}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::{impl#3}::write_vc_operation_tree::{constant#2}>,
virtual-clients-draft only.§fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::vc_operation_tree::{constant#1}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::{impl#3}::vc_operation_tree::{constant#2}>,
fn vc_operation_tree<EpochId, VcOperationTree>(
&self,
epoch_id: &EpochId,
) -> Result<Option<VcOperationTree>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::vc_operation_tree::{constant#1}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::{impl#3}::vc_operation_tree::{constant#2}>,
virtual-clients-draft only.§fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
epoch_id: &EpochId,
operation_tree: &VcOperationTree,
materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#3}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#4}>,
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#5}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#6}>,
fn write_retained_key_package_material_batch<EpochId, VcOperationTree, KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
epoch_id: &EpochId,
operation_tree: &VcOperationTree,
materials: &[(KeyPackageRef, RetainedKeyPackageMaterial)],
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#3}>,
VcOperationTree: VcOperationTree<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#4}>,
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#5}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::{impl#3}::write_retained_key_package_material_batch::{constant#6}>,
virtual-clients-draft only.§fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::retained_key_package_material::{constant#1}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::{impl#3}::retained_key_package_material::{constant#2}>,
fn retained_key_package_material<KeyPackageRef, RetainedKeyPackageMaterial>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<Option<RetainedKeyPackageMaterial>, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::retained_key_package_material::{constant#1}>,
RetainedKeyPackageMaterial: RetainedKeyPackageMaterial<openmls_memory_storage::::{impl#3}::retained_key_package_material::{constant#2}>,
virtual-clients-draft only.§fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::has_retained_key_package_material_for_epoch::{constant#0}>,
fn has_retained_key_package_material_for_epoch<EpochId>(
&self,
epoch_id: &EpochId,
) -> Result<bool, <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
EpochId: VcEpochId<openmls_memory_storage::::{impl#3}::has_retained_key_package_material_for_epoch::{constant#0}>,
virtual-clients-draft only.§fn delete_retained_key_package_material<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::delete_retained_key_package_material::{constant#2}>,
fn delete_retained_key_package_material<KeyPackageRef>(
&self,
hash_ref: &KeyPackageRef,
) -> Result<(), <MemoryStorage as StorageProvider<openmls_memory_storage::::{impl#3}::{constant#0}>>::Error>where
KeyPackageRef: HashReference<openmls_memory_storage::::{impl#3}::delete_retained_key_package_material::{constant#2}>,
virtual-clients-draft only.