Trait StorageProviderTrait
pub trait StorageProviderTrait<const VERSION: u16> {
type Error: Debug + Error;
Show 57 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_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 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>;
// 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-08 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-08 only.Write the ApplicationExportTree for the group with the given id.
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-08 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-08 only.Get the application export tree for the group with the given id.
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.
This function only deletes the key package. The corresponding encryption keys must be deleted separately.
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-08 only.
fn delete_application_export_tree<GroupId, ApplicationExportTree>(
&self,
group_id: &GroupId,
) -> Result<(), Self::Error>where
GroupId: GroupId<VERSION>,
ApplicationExportTree: ApplicationExportTree<VERSION>,
extensions-draft-08 only.Delete the application export tree for the group with the given id.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
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-08 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-08 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-08 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#1}>,
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-08 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-08 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-08 only.