Skip to content
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,13 @@

Affected platforms: web

- Removed `send_message` method from `MlsTransport` interface

This wasn't well-documented and wasn't being used in any case. We remove it for the purpose of making life easier for
everyone.

Affected platforms: all

- `MlsTransportResponse` is no longer a union type. `MlsTransport` should return one of the following:

- `MlsTransportResponse.Success.new()`
Expand Down
3 changes: 0 additions & 3 deletions crypto-ffi/bindings/js/benches/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,6 @@ export async function setup() {
window._latestCommitBundle = commitBundle;
return window.ccModule.MlsTransportResponse.Success.new();
},
async sendMessage() {
return window.ccModule.MlsTransportResponse.Success.new();
},
async prepareForTransport(
secret: HistorySecret
): Promise<MlsTransportData> {
Expand Down
3 changes: 0 additions & 3 deletions crypto-ffi/bindings/js/test/wdio/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,6 @@ export async function setup() {
window._latestCommitBundle = commitBundle;
return window.ccModule.MlsTransportResponse.Success.new();
},
async sendMessage() {
return window.ccModule.MlsTransportResponse.Success.new();
},
async prepareForTransport(
secret: HistorySecret
): Promise<MlsTransportData> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ interface MockDeliveryService : MlsTransport {
class MockMlsTransportSuccessProvider : MockDeliveryService {
private var latestCommitBundle: CommitBundle? = null

override suspend fun sendMessage(mlsMessage: ByteArray): MlsTransportResponse =
MlsTransportResponse.Success

override suspend fun sendCommitBundle(commitBundle: CommitBundle): MlsTransportResponse {
latestCommitBundle = commitBundle
return MlsTransportResponse.Success
Expand Down
6 changes: 0 additions & 6 deletions crypto-ffi/src/core_crypto/mls_transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ impl From<MlsTransportResponse> for core_crypto::MlsTransportResponse {
pub trait MlsTransport: Send + Sync {
/// Send a commit bundle to the corresponding endpoint.
async fn send_commit_bundle(&self, commit_bundle: CommitBundle) -> MlsTransportResponse;
/// Send a message to the corresponding endpoint.
async fn send_message(&self, mls_message: Vec<u8>) -> MlsTransportResponse;
/// Prepare a history secret before being sent
async fn prepare_for_transport(&self, history_secret: HistorySecretFfi) -> MlsTransportData;
}
Expand Down Expand Up @@ -85,10 +83,6 @@ impl core_crypto::MlsTransport for MlsTransportShim {
Ok(self.0.send_commit_bundle(commit_bundle).await.into())
}

async fn send_message(&self, mls_message: Vec<u8>) -> core_crypto::Result<core_crypto::MlsTransportResponse> {
Ok(self.0.send_message(mls_message).await.into())
}

async fn prepare_for_transport(
&self,
secret: &HistorySecret,
Expand Down
12 changes: 0 additions & 12 deletions crypto/benches/utils/mls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -343,14 +343,11 @@ pub(crate) trait MlsTransportTestExt: MlsTransport {
async fn latest_group_info(&self) -> MlsGroupInfoBundle {
self.latest_commit_bundle().await.group_info.clone()
}

async fn latest_message(&self) -> Vec<u8>;
}

#[derive(Debug, Default)]
pub(crate) struct CoreCryptoTransportSuccessProvider {
latest_commit_bundle: RwLock<Option<MlsCommitBundle>>,
latest_message: RwLock<Option<Vec<u8>>>,
}

#[async_trait::async_trait]
Expand All @@ -360,11 +357,6 @@ impl MlsTransport for CoreCryptoTransportSuccessProvider {
Ok(MlsTransportResponse::Success)
}

async fn send_message(&self, mls_message: Vec<u8>) -> core_crypto::Result<MlsTransportResponse> {
self.latest_message.write().await.replace(mls_message);
Ok(MlsTransportResponse::Success)
}

async fn prepare_for_transport(&self, secret: &HistorySecret) -> core_crypto::Result<MlsTransportData> {
Ok(MlsTransportData(secret.client_id.clone().into()))
}
Expand All @@ -379,8 +371,4 @@ impl MlsTransportTestExt for CoreCryptoTransportSuccessProvider {
.clone()
.expect("latest_commit_bundle")
}

async fn latest_message(&self) -> Vec<u8> {
self.latest_message.read().await.clone().expect("latest_message")
}
}
6 changes: 0 additions & 6 deletions crypto/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,6 @@ pub struct MlsTransportData(pub Vec<u8>);
pub trait MlsTransport: std::fmt::Debug + Send + Sync {
/// Send a commit bundle to the corresponding endpoint.
async fn send_commit_bundle(&self, commit_bundle: MlsCommitBundle) -> Result<MlsTransportResponse>;
/// Send a message to the corresponding endpoint.
async fn send_message(&self, mls_message: Vec<u8>) -> Result<MlsTransportResponse>;

/// This function will be called before a history secret is sent to the mls transport to allow
/// the application to package it in a suitable transport container (json, protobuf, ...).
Expand All @@ -132,10 +130,6 @@ impl MlsTransport for CoreCryptoTransportNotImplementedProvider {
Err(Error::MlsTransportNotProvided)
}

async fn send_message(&self, _mls_message: Vec<u8>) -> crate::Result<MlsTransportResponse> {
Err(Error::MlsTransportNotProvided)
}

async fn prepare_for_transport(&self, _secret: &HistorySecret) -> crate::Result<MlsTransportData> {
Err(Error::MlsTransportNotProvided)
}
Expand Down
41 changes: 0 additions & 41 deletions crypto/src/test_utils/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -409,14 +409,11 @@ pub trait MlsTransportTestExt: MlsTransport {
async fn latest_group_info(&self) -> MlsGroupInfoBundle {
self.latest_commit_bundle().await.group_info.clone()
}

async fn latest_message(&self) -> Vec<u8>;
}

#[derive(Debug, Default)]
pub struct CoreCryptoTransportSuccessProvider {
latest_commit_bundle: RwLock<Option<MlsCommitBundle>>,
latest_message: RwLock<Option<Vec<u8>>>,
}

#[cfg_attr(target_os = "unknown", async_trait::async_trait(?Send))]
Expand All @@ -427,11 +424,6 @@ impl MlsTransport for CoreCryptoTransportSuccessProvider {
Ok(MlsTransportResponse::Success)
}

async fn send_message(&self, mls_message: Vec<u8>) -> crate::Result<MlsTransportResponse> {
self.latest_message.write().await.replace(mls_message);
Ok(MlsTransportResponse::Success)
}

async fn prepare_for_transport(&self, secret: &HistorySecret) -> crate::Result<MlsTransportData> {
Ok(format!("history secret: {}", secret.client_id).into_bytes().into())
}
Expand All @@ -447,10 +439,6 @@ impl MlsTransportTestExt for CoreCryptoTransportSuccessProvider {
.clone()
.expect("latest_commit_bundle")
}

async fn latest_message(&self) -> Vec<u8> {
self.latest_message.read().await.clone().expect("latest_message")
}
}

#[derive(Debug, Default)]
Expand All @@ -465,12 +453,6 @@ impl MlsTransport for CoreCryptoTransportAbortProvider {
})
}

async fn send_message(&self, _mls_message: Vec<u8>) -> crate::Result<MlsTransportResponse> {
Ok(MlsTransportResponse::Abort {
reason: "abort provider always aborts!".to_string(),
})
}

async fn prepare_for_transport(&self, _secret: &HistorySecret) -> crate::Result<MlsTransportData> {
Err(Error::Recursive(Test(ImplementationError.into())))
}
Expand All @@ -482,17 +464,12 @@ impl MlsTransportTestExt for CoreCryptoTransportAbortProvider {
async fn latest_commit_bundle(&self) -> MlsCommitBundle {
unreachable!("abort provider never stores a commit bundle")
}

async fn latest_message(&self) -> Vec<u8> {
unreachable!("abort provider never stores a message")
}
}

/// This alternates between retry and success responses (starts with retry).
#[derive(Debug, Default)]
pub struct CoreCryptoTransportRetrySuccessProvider {
latest_commit_bundle: RwLock<Option<MlsCommitBundle>>,
latest_message: RwLock<Option<Vec<u8>>>,
just_returned_retry: RwLock<bool>,
retry_count: RwLock<u32>,
success_count: RwLock<u32>,
Expand Down Expand Up @@ -569,20 +546,6 @@ impl MlsTransport for CoreCryptoTransportRetrySuccessProvider {
}
}

async fn send_message(&self, mls_message: Vec<u8>) -> crate::Result<MlsTransportResponse> {
let mut just_returned_retry = self.just_returned_retry.write().await;
if *just_returned_retry {
self.latest_message.write().await.replace(mls_message);
*just_returned_retry = false;
*self.success_count.write().await += 1;
Ok(MlsTransportResponse::Success)
} else {
*just_returned_retry = true;
*self.retry_count.write().await += 1;
Ok(MlsTransportResponse::Retry)
}
}

async fn prepare_for_transport(&self, secret: &HistorySecret) -> crate::Result<MlsTransportData> {
Ok(format!("history_secret: {}", secret.client_id).into_bytes().into())
}
Expand All @@ -598,10 +561,6 @@ impl MlsTransportTestExt for CoreCryptoTransportRetrySuccessProvider {
.clone()
.expect("latest_commit_bundle")
}

async fn latest_message(&self) -> Vec<u8> {
self.latest_message.read().await.clone().expect("latest_message")
}
}

use wire_e2e_identity::pki_env_hooks::{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ class DummyTransport : MlsTransport {
return MlsTransportResponse.Success
}

override suspend fun sendMessage(mlsMessage: ByteArray): MlsTransportResponse {
return MlsTransportResponse.Success
}

override suspend fun prepareForTransport(historySecret: HistorySecret): MlsTransportData {
return historySecret.data
}
Expand Down
11 changes: 0 additions & 11 deletions interop/src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ pub(crate) trait MlsTransportTestExt: MlsTransport {
#[derive(Debug, Default)]
pub(crate) struct MlsTransportSuccessProvider {
latest_commit_bundle: RwLock<Option<MlsCommitBundle>>,
latest_message: RwLock<Option<Vec<u8>>>,
}

#[async_trait::async_trait]
Expand All @@ -89,11 +88,6 @@ impl MlsTransport for MlsTransportSuccessProvider {
Ok(core_crypto::MlsTransportResponse::Success)
}

async fn send_message(&self, mls_message: Vec<u8>) -> core_crypto::Result<core_crypto::MlsTransportResponse> {
self.latest_message.write().await.replace(mls_message);
Ok(core_crypto::MlsTransportResponse::Success)
}

async fn prepare_for_transport(
&self,
secret: &HistorySecret,
Expand All @@ -119,11 +113,6 @@ impl core_crypto_ffi::MlsTransport for MlsTransportSuccessProvider {
core_crypto_ffi::MlsTransportResponse::Success
}

async fn send_message(&self, mls_message: Vec<u8>) -> core_crypto_ffi::MlsTransportResponse {
self.latest_message.write().await.replace(mls_message);
core_crypto_ffi::MlsTransportResponse::Success
}

async fn prepare_for_transport(&self, history_secret: HistorySecretFfi) -> core_crypto_ffi::MlsTransportData {
core_crypto::MlsTransportData::from(format!("history_secret: {:?}", history_secret.client_id).into_bytes())
.into()
Expand Down
Loading