diff --git a/Cargo.toml b/Cargo.toml index d575f5102f..dacde583e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,25 +49,25 @@ branch = "2.x" package = "openmls" git = "https://github.com/wireapp/openmls" #tag = "v1.0.0-pre.core-crypto-1.0.0" -branch = "feat/rfc9420" +branch = "feat/clientid-uri" [patch.crates-io.openmls_traits] package = "openmls_traits" git = "https://github.com/wireapp/openmls" #tag = "v1.0.0-pre.core-crypto-1.0.0" -branch = "feat/rfc9420" +branch = "feat/clientid-uri" [patch.crates-io.openmls_basic_credential] package = "openmls_basic_credential" git = "https://github.com/wireapp/openmls" #tag = "v1.0.0-pre.core-crypto-1.0.0" -branch = "feat/rfc9420" +branch = "feat/clientid-uri" [patch.crates-io.openmls_x509_credential] package = "openmls_x509_credential" git = "https://github.com/wireapp/openmls" #tag = "v1.0.0-pre.core-crypto-1.0.0" -branch = "feat/rfc9420" +branch = "feat/clientid-uri" [patch.crates-io.hpke] git = "https://github.com/wireapp/rust-hpke.git" @@ -76,7 +76,8 @@ branch = "wire/unstable-pq-xyber" [patch.crates-io.wire-e2e-identity] git = "https://github.com/wireapp/rusty-jwt-tools" package = "wire-e2e-identity" -tag = "v0.6.1" +#tag = "v0.6.1" +branch = "feat/clientid-uri" # aarch64-apple-ios-sim target support has not yet been released [patch.crates-io.openssl-src] @@ -86,7 +87,7 @@ package = "openssl-src" [patch.crates-io.jwt-simple] git = "https://github.com/wireapp/rust-jwt-simple" -tag = "v0.11.4-pre.core-crypto-0.7.0" +tag = "v0.12.1-pre.core-crypto-1.0.0" [profile.release] lto = true diff --git a/crypto-ffi/bindings/js/test/CoreCrypto.test.js b/crypto-ffi/bindings/js/test/CoreCrypto.test.js index e51b533015..32c62f2f87 100644 --- a/crypto-ffi/bindings/js/test/CoreCrypto.test.js +++ b/crypto-ffi/bindings/js/test/CoreCrypto.test.js @@ -971,7 +971,7 @@ test("end-to-end-identity", async () => { "identifiers": [ { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/4959bc6ab12f2846@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}", + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:4959bc6ab12f2846@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}", }, ], "authorizations": [ @@ -989,7 +989,7 @@ test("end-to-end-identity", async () => { "expires": "2016-01-02T14:09:30Z", "identifier": { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/4959bc6ab12f2846@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}", + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:4959bc6ab12f2846@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}", }, "challenges": [ { @@ -1050,7 +1050,7 @@ test("end-to-end-identity", async () => { "identifiers": [ { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/4959bc6ab12f2846@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}", + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:4959bc6ab12f2846@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}", }, ], "authorizations": [ @@ -1070,7 +1070,7 @@ test("end-to-end-identity", async () => { "identifiers": [ { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/4959bc6ab12f2846@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}", + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:4959bc6ab12f2846@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}", }, ], "authorizations": [ diff --git a/crypto-ffi/bindings/jvm/src/test/kotlin/com/wire/crypto/client/E2EITest.kt b/crypto-ffi/bindings/jvm/src/test/kotlin/com/wire/crypto/client/E2EITest.kt index 738220797c..16ab655913 100644 --- a/crypto-ffi/bindings/jvm/src/test/kotlin/com/wire/crypto/client/E2EITest.kt +++ b/crypto-ffi/bindings/jvm/src/test/kotlin/com/wire/crypto/client/E2EITest.kt @@ -67,7 +67,7 @@ internal class E2EITest { "identifiers": [ { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/6c1866f567616f31@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}" + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:6c1866f567616f31@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}" } ], "authorizations": [ @@ -85,7 +85,7 @@ internal class E2EITest { "expires": "2016-01-02T14:09:30Z", "identifier": { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/6c1866f567616f31@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}" + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:6c1866f567616f31@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}" }, "challenges": [ { @@ -126,7 +126,7 @@ internal class E2EITest { "identifiers": [ { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/6c1866f567616f31@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}" + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:6c1866f567616f31@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}" } ], "authorizations": [ @@ -146,7 +146,7 @@ internal class E2EITest { "identifiers": [ { "type": "wireapp-id", - "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"im:wireapp=t6wRpI8BRSeviBwwiFp5MQ/6c1866f567616f31@wire.com\",\"handle\":\"im:wireapp=alice_wire\"}" + "value": "{\"name\":\"Alice Smith\",\"domain\":\"wire.com\",\"client-id\":\"wireapp://t6wRpI8BRSeviBwwiFp5MQ:6c1866f567616f31@wire.com\",\"handle\":\"wireapp://%40alice_wire@wire.com\"}" } ], "authorizations": [ diff --git a/crypto/src/e2e_identity/mod.rs b/crypto/src/e2e_identity/mod.rs index bf652f3879..1e7de89a8f 100644 --- a/crypto/src/e2e_identity/mod.rs +++ b/crypto/src/e2e_identity/mod.rs @@ -532,7 +532,7 @@ pub mod tests { pub const E2EI_DISPLAY_NAME: &str = "Alice Smith"; pub const E2EI_HANDLE: &str = "alice_wire"; pub const E2EI_CLIENT_ID: &str = "bd4c7053-1c5a-4020-9559-cd7bf7961954:4959bc6ab12f2846@wire.com"; - pub const E2EI_CLIENT_ID_URI: &str = "vUxwUxxaQCCVWc1795YZVA/4959bc6ab12f2846@wire.com"; + pub const E2EI_CLIENT_ID_URI: &str = "vUxwUxxaQCCVWc1795YZVA:4959bc6ab12f2846@wire.com"; pub const E2EI_EXPIRY: u32 = 90; #[apply(all_cred_cipher)] @@ -653,9 +653,9 @@ pub mod tests { let _order_req = enrollment.new_order_request(previous_nonce.to_string()).unwrap(); let client_id = client_id - .map(|c| format!("{}{c}", wire_e2e_identity::prelude::E2eiClientId::URI_PREFIX)) + .map(|c| format!("{}{c}", wire_e2e_identity::prelude::E2eiClientId::URI_SCHEME)) .unwrap_or_else(|| cc.get_e2ei_client_id().to_uri()); - let identifier_value = format!("{{\"name\":\"{display_name}\",\"domain\":\"wire.com\",\"client-id\":\"{client_id}\",\"handle\":\"im:wireapp=%40{handle}@wire.com\"}}"); + let identifier_value = format!("{{\"name\":\"{display_name}\",\"domain\":\"wire.com\",\"client-id\":\"{client_id}\",\"handle\":\"wireapp://%40{handle}@wire.com\"}}"); let order_resp = json!({ "status": "pending", "expires": "2037-01-05T14:09:07.99Z", diff --git a/crypto/src/e2e_identity/rotate.rs b/crypto/src/e2e_identity/rotate.rs index b4364e8bee..0a6c530cc3 100644 --- a/crypto/src/e2e_identity/rotate.rs +++ b/crypto/src/e2e_identity/rotate.rs @@ -397,7 +397,7 @@ pub mod tests { assert_eq!(c.credential_type(), openmls::prelude::CredentialType::X509); let identity = c.extract_identity().unwrap().unwrap(); assert_eq!(identity.display_name, NEW_DISPLAY_NAME); - assert_eq!(identity.handle, format!("im:wireapp=%40{NEW_HANDLE}@wire.com")); + assert_eq!(identity.handle, format!("wireapp://%40{NEW_HANDLE}@wire.com")); } // Alice has to delete her old KeyPackages @@ -552,7 +552,7 @@ pub mod tests { .unwrap(); let identity = cb.credential().extract_identity().unwrap().unwrap(); assert_eq!(identity.display_name, NEW_DISPLAY_NAME); - assert_eq!(identity.handle, format!("im:wireapp=%40{NEW_HANDLE}@wire.com")); + assert_eq!(identity.handle, format!("wireapp://%40{NEW_HANDLE}@wire.com")); // but keeps her old one since it's referenced from some KeyPackages let old_spk = SignaturePublicKey::from(old_cb.signature_key.public()); @@ -593,7 +593,7 @@ pub mod tests { .unwrap(); let identity = cb.credential().extract_identity().unwrap().unwrap(); assert_eq!(identity.display_name, NEW_DISPLAY_NAME); - assert_eq!(identity.handle, format!("im:wireapp=%40{NEW_HANDLE}@wire.com")); + assert_eq!(identity.handle, format!("wireapp://%40{NEW_HANDLE}@wire.com")); assert_eq!( alice_central.mls_client().unwrap().identities.iter().count(), diff --git a/crypto/src/mls/client/user_id.rs b/crypto/src/mls/client/user_id.rs index 34c71e1733..b3fe6c1665 100644 --- a/crypto/src/mls/client/user_id.rs +++ b/crypto/src/mls/client/user_id.rs @@ -6,7 +6,7 @@ use crate::{CryptoError, CryptoResult}; /// End-to-end Identity re-shuffled that... But we still want to keep this isolated from the rest /// of the crate that's why this should remain here and be used cautiously, having the context quoted /// above in mind. -/// For example in `im:wireapp=LcksJb74Tm6N12cDjFy7lQ/8e6424430d3b28be@wire.com` the [UserId] is `LcksJb74Tm6N12cDjFy7lQ` +/// For example in `wireapp://LcksJb74Tm6N12cDjFy7lQ:8e6424430d3b28be@wire.com` the [UserId] is `LcksJb74Tm6N12cDjFy7lQ` #[derive(Debug, Clone, Copy, Eq, PartialEq, derive_more::Deref)] pub struct UserId<'a>(&'a [u8]); diff --git a/crypto/src/test_utils/central.rs b/crypto/src/test_utils/central.rs index b1a87be4e6..497b1e285e 100644 --- a/crypto/src/test_utils/central.rs +++ b/crypto/src/test_utils/central.rs @@ -14,31 +14,32 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see http://www.gnu.org/licenses/. -use crate::{ - mls::credential::{ext::CredentialExt, CredentialBundle}, - prelude::{ - CertificateBundle, Client, ClientId, ConversationId, CryptoError, CryptoResult, MlsCentral, MlsCiphersuite, - MlsConversation, MlsConversationConfiguration, MlsConversationDecryptMessage, MlsConversationInitBundle, - MlsCredentialType, MlsCustomConfiguration, MlsError, - }, - test_utils::{MessageExt, TestCase}, -}; use openmls::prelude::{ - group_info::VerifiableGroupInfo, Capabilities, Credential, CredentialWithKey, CryptoConfig, HpkePublicKey, - KeyPackage, KeyPackageIn, LeafNodeIndex, Lifetime, MlsMessageIn, QueuedProposal, SignaturePublicKey, StagedCommit, + group_info::VerifiableGroupInfo, Credential, CredentialWithKey, CryptoConfig, HpkePublicKey, KeyPackage, + KeyPackageIn, LeafNodeIndex, Lifetime, MlsMessageIn, QueuedProposal, SignaturePublicKey, StagedCommit, }; use openmls_traits::{types::SignatureScheme, OpenMlsCryptoProvider}; use tls_codec::{Deserialize, Serialize}; +use wire_e2e_identity::prelude::WireIdentityReader; +use x509_cert::der::Encode; -use crate::e2e_identity::device_status::DeviceStatus; -use crate::e2e_identity::id::{QualifiedE2eiClientId, WireQualifiedClientId}; -use crate::prelude::WireIdentity; use core_crypto_keystore::entities::{ EntityFindParams, MlsCredential, MlsEncryptionKeyPair, MlsHpkePrivateKey, MlsKeyPackage, MlsSignatureKeyPair, }; use mls_crypto_provider::MlsCryptoProvider; -use wire_e2e_identity::prelude::WireIdentityReader; -use x509_cert::der::Encode; + +use crate::e2e_identity::device_status::DeviceStatus; +use crate::e2e_identity::id::{QualifiedE2eiClientId, WireQualifiedClientId}; +use crate::prelude::WireIdentity; +use crate::{ + mls::credential::{ext::CredentialExt, CredentialBundle}, + prelude::{ + CertificateBundle, Client, ClientId, ConversationId, CryptoError, CryptoResult, MlsCentral, MlsCiphersuite, + MlsConversation, MlsConversationConfiguration, MlsConversationDecryptMessage, MlsConversationInitBundle, + MlsCredentialType, MlsCustomConfiguration, MlsError, + }, + test_utils::{MessageExt, TestCase}, +}; #[allow(clippy::redundant_static_lifetimes)] pub const TEAM: &'static str = "wire"; @@ -459,7 +460,7 @@ impl MlsCentral { new_handle: &str, new_display_name: &str, ) { - let new_handle = format!("im:wireapp=%40{new_handle}@wire.com"); + let new_handle = format!("wireapp://%40{new_handle}@wire.com"); // verify the identity in.. // the MLS group let cid = self.get_client_id();