Skip to content

Conversation

@SimonThormeyer
Copy link
Contributor

@SimonThormeyer SimonThormeyer commented Dec 15, 2025

What's new in this PR

See above, corresponding jira item, and commit sequence


PR Submission Checklist for internal contributors
  • The PR Title
    • conforms to the style of semantic commits messages¹ supported in Wire's Github Workflow²
    • contains a reference JIRA issue number like SQPIT-764
    • answers the question: If merged, this PR will: ... ³
  1. https://sparkbox.com/foundry/semantic_commit_messages
  2. https://github.com/wireapp/.github#usage
  3. E.g. feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764.

@github-actions
Copy link

github-actions bot commented Dec 15, 2025

🐰 Bencher Report

Branchsimon/feat/credentials-in-conversation-api-WPB-19576
Testbedubuntu-latest

⚠️ WARNING: No Threshold found!

Without a Threshold, no Alerts will ever be generated.

Click here to create a new Threshold
For more information, see the Threshold documentation.
To only post results if a Threshold exists, set the --ci-only-thresholds flag.

Click to view all benchmark results
BenchmarkLatencymicroseconds (µs)
Commit add f(group size)/cs1/mem/1002📈 view plot
⚠️ NO THRESHOLD
18,242.00 µs
Commit add f(group size)/cs1/mem/2📈 view plot
⚠️ NO THRESHOLD
751.04 µs
Commit add f(group size)/cs1/mem/202📈 view plot
⚠️ NO THRESHOLD
4,216.70 µs
Commit add f(group size)/cs1/mem/402📈 view plot
⚠️ NO THRESHOLD
7,686.50 µs
Commit add f(group size)/cs1/mem/602📈 view plot
⚠️ NO THRESHOLD
11,418.00 µs
Commit add f(group size)/cs1/mem/802📈 view plot
⚠️ NO THRESHOLD
14,983.00 µs
Commit add f(number clients)/cs1/mem/1002📈 view plot
⚠️ NO THRESHOLD
993,170.00 µs
Commit add f(number clients)/cs1/mem/2📈 view plot
⚠️ NO THRESHOLD
714.45 µs
Commit add f(number clients)/cs1/mem/202📈 view plot
⚠️ NO THRESHOLD
79,540.00 µs
Commit add f(number clients)/cs1/mem/402📈 view plot
⚠️ NO THRESHOLD
216,640.00 µs
Commit add f(number clients)/cs1/mem/602📈 view plot
⚠️ NO THRESHOLD
423,700.00 µs
Commit add f(number clients)/cs1/mem/802📈 view plot
⚠️ NO THRESHOLD
678,030.00 µs
Commit pending proposals f(group size)/cs1/mem/1002📈 view plot
⚠️ NO THRESHOLD
117,290.00 µs
Commit pending proposals f(group size)/cs1/mem/2📈 view plot
⚠️ NO THRESHOLD
23,267.00 µs
Commit pending proposals f(group size)/cs1/mem/202📈 view plot
⚠️ NO THRESHOLD
41,480.00 µs
Commit pending proposals f(group size)/cs1/mem/402📈 view plot
⚠️ NO THRESHOLD
57,834.00 µs
Commit pending proposals f(group size)/cs1/mem/602📈 view plot
⚠️ NO THRESHOLD
77,382.00 µs
Commit pending proposals f(group size)/cs1/mem/802📈 view plot
⚠️ NO THRESHOLD
93,445.00 µs
Commit pending proposals f(pending size)/cs1/mem/1📈 view plot
⚠️ NO THRESHOLD
17,011.00 µs
Commit pending proposals f(pending size)/cs1/mem/101📈 view plot
⚠️ NO THRESHOLD
115,810.00 µs
Commit pending proposals f(pending size)/cs1/mem/21📈 view plot
⚠️ NO THRESHOLD
34,351.00 µs
Commit pending proposals f(pending size)/cs1/mem/41📈 view plot
⚠️ NO THRESHOLD
56,528.00 µs
Commit pending proposals f(pending size)/cs1/mem/61📈 view plot
⚠️ NO THRESHOLD
74,696.00 µs
Commit pending proposals f(pending size)/cs1/mem/81📈 view plot
⚠️ NO THRESHOLD
94,930.00 µs
Commit remove f(group size)/cs1/mem/1002📈 view plot
⚠️ NO THRESHOLD
10,741.00 µs
Commit remove f(group size)/cs1/mem/2📈 view plot
⚠️ NO THRESHOLD
593.07 µs
Commit remove f(group size)/cs1/mem/202📈 view plot
⚠️ NO THRESHOLD
2,225.50 µs
Commit remove f(group size)/cs1/mem/402📈 view plot
⚠️ NO THRESHOLD
4,149.20 µs
Commit remove f(group size)/cs1/mem/602📈 view plot
⚠️ NO THRESHOLD
6,008.50 µs
Commit remove f(group size)/cs1/mem/802📈 view plot
⚠️ NO THRESHOLD
8,550.30 µs
Commit remove f(number clients)/cs1/mem/1002📈 view plot
⚠️ NO THRESHOLD
13,430.00 µs
Commit remove f(number clients)/cs1/mem/2📈 view plot
⚠️ NO THRESHOLD
134,930.00 µs
Commit remove f(number clients)/cs1/mem/202📈 view plot
⚠️ NO THRESHOLD
110,980.00 µs
Commit remove f(number clients)/cs1/mem/402📈 view plot
⚠️ NO THRESHOLD
86,443.00 µs
Commit remove f(number clients)/cs1/mem/602📈 view plot
⚠️ NO THRESHOLD
62,700.00 µs
Commit remove f(number clients)/cs1/mem/802📈 view plot
⚠️ NO THRESHOLD
37,984.00 µs
Commit update f(group size)/cs1/mem/1002📈 view plot
⚠️ NO THRESHOLD
134,890.00 µs
Commit update f(group size)/cs1/mem/2📈 view plot
⚠️ NO THRESHOLD
763.07 µs
Commit update f(group size)/cs1/mem/202📈 view plot
⚠️ NO THRESHOLD
27,856.00 µs
Commit update f(group size)/cs1/mem/402📈 view plot
⚠️ NO THRESHOLD
54,912.00 µs
Commit update f(group size)/cs1/mem/602📈 view plot
⚠️ NO THRESHOLD
82,577.00 µs
Commit update f(group size)/cs1/mem/802📈 view plot
⚠️ NO THRESHOLD
108,720.00 µs
🐰 View full continuous benchmarking report in Bencher

@SimonThormeyer SimonThormeyer force-pushed the simon/feat/credentials-in-conversation-api-WPB-19576 branch 19 times, most recently from f996884 to 9b8998d Compare December 22, 2025 15:18
… don't use config parameter

We're always using the default. This simplifies their API.
We're not changing the DB schema of this entity though, because we might
want to be able to have multiple different configurations for a single
session in the future; keeping the column avoids migrations based on
assumptions.
Our DS doesn't support it, our API doesn't support it anymore, so we can
stop testing it.
I don't understand how the test was passing before, because only in this
way it makes sense to me. Happy to have someone point out to me how it
was testing reverse-order decryption.
We already had a method on the conversation gaurd that did exactly what
we need (with a little refactoring): `update_key_material_inner()`.
So that becomes `set_credential()`.
@SimonThormeyer SimonThormeyer force-pushed the simon/feat/credentials-in-conversation-api-WPB-19576 branch from 9b8998d to 20b84fd Compare December 22, 2025 15:35
@SimonThormeyer SimonThormeyer changed the title Simon/feat/credentials in conversation api wpb 19576 feat: conversation API with credentials [WPB 19576] Dec 22, 2025
@SimonThormeyer SimonThormeyer marked this pull request as ready for review December 22, 2025 15:46
@SimonThormeyer SimonThormeyer requested a review from a team December 22, 2025 15:46
@SimonThormeyer SimonThormeyer force-pushed the simon/feat/credentials-in-conversation-api-WPB-19576 branch from 20b84fd to dc81264 Compare December 22, 2025 16:18
@SimonThormeyer SimonThormeyer force-pushed the simon/feat/credentials-in-conversation-api-WPB-19576 branch 2 times, most recently from f1517ce to 1cfdbfa Compare December 22, 2025 16:36
@SimonThormeyer SimonThormeyer force-pushed the simon/feat/credentials-in-conversation-api-WPB-19576 branch from 1cfdbfa to b1ec956 Compare December 22, 2025 16:37
Copy link
Contributor

@coriolinus coriolinus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had a few nits, but the only important question is how you determined that JBEC and processing welcome messages does not require custom configuration. If there's a good answer to that (which I'm assuming there is) then this all makes sense. Nicely done!


/// Like [Self::invite], but the key packages of the invited members will be of the provided credential type.
pub async fn invite_with_credential_type(
pub async fn invite_with_credential(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doc-comment wasn't updated.

.into()
}))
.await;
let new_memembers_with_credentials = sessions_with_credentials.into_iter().collect::<Vec<_>>();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why collect into a vector here? If it's about reusing the iterator, you could write it like this:

pub async fn invite_with_credential<S>(self, sessions_with_credentials: S) -> OperationGuard<'a, Commit>
where
  S: IntoIterator<Item = (&'a SessionContext, &'a CredentialRef)>,
  <S as IntoIterator>::IntoIter: Clone

}

/// See [core_crypto::transaction_context::TransactionContext::process_raw_welcome_message]
pub async fn process_welcome_message(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How did you determine that we always use the default custom configuration in these two cases (process welcome message and join by external commit)? Couldn't the clients do something non-default with this public interface without telling us?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants