signatures: Allow additional key version-string characters in compat mode
This complies with the published specification by default, with optional compatibility for additional federation keys in use. Co-authored-by: Jonathan de Jong <jonathan@automatia.nl>
This commit is contained in:
parent
f9a40e137e
commit
bcb97b139d
@ -14,6 +14,7 @@ edition = "2021"
|
||||
all-features = true
|
||||
|
||||
[features]
|
||||
compat = []
|
||||
ring-compat = ["dep:subslice"]
|
||||
unstable-exhaustive-types = []
|
||||
|
||||
|
@ -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()));
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user