@@ -28,8 +28,8 @@ use obfuscate::{Obfuscate, Obfuscated};
2828use openmls:: prelude:: KeyPackageSecretEncapsulation ;
2929
3030use crate :: {
31- Ciphersuite , ClientId , ClientIdRef , ClientIdentifier , CoreCrypto , CoreCryptoTransportNotImplementedProvider ,
32- Credential , Error , MlsError , RecursiveError , Result , Session ,
31+ Ciphersuite , ClientId , ClientIdRef , CoreCrypto , CoreCryptoTransportNotImplementedProvider , Credential , Error ,
32+ MlsError , RecursiveError , Result , Session ,
3333 mls_provider:: { DatabaseKey , MlsCryptoProvider } ,
3434} ;
3535
@@ -66,10 +66,9 @@ impl Obfuscate for HistorySecret {
6666/// This implementation lives here instead of there for organizational reasons.
6767pub ( crate ) async fn generate_history_secret ( ciphersuite : Ciphersuite ) -> Result < HistorySecret > {
6868 // generate a new completely arbitrary client id
69- let client_id = uuid:: Uuid :: new_v4 ( ) ;
70- let client_id = format ! ( "{HISTORY_CLIENT_ID_PREFIX}-{client_id}" ) ;
71- let client_id = ClientId :: from ( client_id. into_bytes ( ) ) ;
72- let identifier = ClientIdentifier :: Basic ( client_id. clone ( ) ) ;
69+ let session_id = uuid:: Uuid :: new_v4 ( ) ;
70+ let session_id = format ! ( "{HISTORY_CLIENT_ID_PREFIX}-{session_id}" ) ;
71+ let session_id = ClientId :: from ( session_id. into_bytes ( ) ) ;
7372
7473 let database = Database :: open ( ConnectionType :: InMemory , & DatabaseKey :: generate ( ) )
7574 . await
@@ -82,14 +81,14 @@ pub(crate) async fn generate_history_secret(ciphersuite: Ciphersuite) -> Result<
8281 . map_err ( RecursiveError :: transaction ( "creating new transaction" ) ) ?;
8382
8483 let transport = Arc :: new ( CoreCryptoTransportNotImplementedProvider :: default ( ) ) ;
85- tx. mls_init ( identifier , transport)
84+ tx. mls_init ( session_id . clone ( ) , transport)
8685 . await
8786 . map_err ( RecursiveError :: transaction ( "initializing ephemeral cc" ) ) ?;
8887 let session = tx
8988 . session ( )
9089 . await
9190 . map_err ( RecursiveError :: transaction ( "Getting mls session" ) ) ?;
92- let credential = Credential :: basic ( ciphersuite, client_id . clone ( ) ) . map_err ( RecursiveError :: mls_credential (
91+ let credential = Credential :: basic ( ciphersuite, session_id . clone ( ) ) . map_err ( RecursiveError :: mls_credential (
9392 "generating basic credential for ephemeral client" ,
9493 ) ) ?;
9594 let credential_ref = tx
@@ -112,7 +111,10 @@ pub(crate) async fn generate_history_secret(ciphersuite: Ciphersuite) -> Result<
112111 // there
113112 let _ = tx. abort ( ) . await ;
114113
115- Ok ( HistorySecret { client_id, key_package } )
114+ Ok ( HistorySecret {
115+ client_id : session_id,
116+ key_package,
117+ } )
116118}
117119
118120pub ( crate ) fn is_history_client ( client_id : impl Borrow < ClientIdRef > ) -> bool {
0 commit comments