use openmls::framing::{MlsMessageIn, MlsMessageOut};
use openmls::messages::Welcome;
use tls_codec::{TlsDeserialize, TlsSerialize, TlsSize};
use crate::secret_group::error::SecretGroupError;
use crate::secret_group::SecretGroupMessage;
#[derive(Debug, Clone, TlsSerialize, TlsDeserialize, TlsSize)]
pub struct SecretGroupCommit {
mls_commit_message: MlsMessageOut,
mls_welcome_message: Option<Welcome>,
encrypted_long_term_secrets: SecretGroupMessage,
}
impl SecretGroupCommit {
pub(crate) fn new(
mls_commit_message: MlsMessageOut,
mls_welcome_message: Option<Welcome>,
encrypted_long_term_secrets: SecretGroupMessage,
) -> Result<Self, SecretGroupError> {
Ok(Self {
mls_commit_message,
mls_welcome_message,
encrypted_long_term_secrets,
})
}
pub(crate) fn commit(&self) -> MlsMessageIn {
self.mls_commit_message.to_owned().into()
}
pub(crate) fn welcome(&self) -> Option<Welcome> {
self.mls_welcome_message.clone()
}
pub(crate) fn long_term_secrets(&self) -> SecretGroupMessage {
self.encrypted_long_term_secrets.clone()
}
}