Skip to content

Commit bc0527a

Browse files
committed
Add sender data secret hint function for debugging purposes
1 parent 4e5502e commit bc0527a

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

openmls/src/group/mls_group/exporting.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use errors::{ExportGroupInfoError, ExportSecretError};
2-
use openmls_traits::{crypto::OpenMlsCrypto, signatures::Signer};
2+
use openmls_traits::{crypto::OpenMlsCrypto, signatures::Signer, types::HashType};
33

44
#[cfg(feature = "extensions-draft-08")]
55
use crate::group::{PendingSafeExportSecretError, SafeExportSecretError};
@@ -99,6 +99,20 @@ impl MlsGroup {
9999
self.group_epoch_secrets().epoch_authenticator()
100100
}
101101

102+
/// Returns a hint (first 8 bytes of SHA-256 hash) of the sender data secret.
103+
/// XMTP ONLY USED FOR DEBUGGING PURPOSES.
104+
pub fn sender_data_secret_hint<Provider: OpenMlsProvider>(&self, provider: &Provider) -> Vec<u8> {
105+
let crypto = provider.crypto();
106+
let message_secrets = self.message_secrets_store.message_secrets();
107+
let sender_data_secret_bytes = message_secrets.sender_data_secret().as_slice(); // Secret type in OpenMLS exposes as_slice()
108+
let sender_data_secret_tag = crypto
109+
.hash(HashType::Sha2_256, sender_data_secret_bytes)
110+
.unwrap_or_default();
111+
sender_data_secret_tag[..sender_data_secret_tag.len().min(8)].to_vec()
112+
}
113+
114+
115+
102116
/// Returns the resumption PSK secret of the current epoch.
103117
pub fn resumption_psk_secret(&self) -> &ResumptionPskSecret {
104118
self.group_epoch_secrets().resumption_psk()

0 commit comments

Comments
 (0)