diff --git a/crates/ruma-signatures/Cargo.toml b/crates/ruma-signatures/Cargo.toml index 695223fd..8d98c5ed 100644 --- a/crates/ruma-signatures/Cargo.toml +++ b/crates/ruma-signatures/Cargo.toml @@ -14,6 +14,7 @@ edition = "2021" all-features = true [features] +compat = [] ring-compat = ["dep:subslice"] unstable-exhaustive-types = [] diff --git a/crates/ruma-signatures/src/lib.rs b/crates/ruma-signatures/src/lib.rs index 518ea88c..a271b847 100644 --- a/crates/ruma-signatures/src/lib.rs +++ b/crates/ruma-signatures/src/lib.rs @@ -85,7 +85,11 @@ fn split_id(id: &str) -> Result<(Algorithm, String), Error> { let version = signature_id[1]; - if !version.bytes().all(|ch| ch.is_ascii_alphanumeric() || ch == b'_') { + #[cfg(feature = "compat")] + const EXTRA_ALLOWED: [u8; 3] = [b'_', b'+', b'/']; + #[cfg(not(feature = "compat"))] + const EXTRA_ALLOWED: [u8; 1] = [b'_']; + if !version.bytes().all(|ch| ch.is_ascii_alphanumeric() || EXTRA_ALLOWED.contains(&ch)) { return Err(Error::InvalidVersion(version.into())); } diff --git a/crates/ruma/Cargo.toml b/crates/ruma/Cargo.toml index 045e0217..3821297b 100644 --- a/crates/ruma/Cargo.toml +++ b/crates/ruma/Cargo.toml @@ -97,6 +97,7 @@ compat = [ "ruma-common/compat", "ruma-client-api?/compat", "ruma-federation-api?/compat", + "ruma-signatures?/compat", ] # Specific compatibility for past ring public/private key documents.