ruma_common/identifiers/
server_signing_key_version.rs

1use ruma_macros::IdZst;
2
3use super::{IdParseError, KeyName};
4
5/// The version of a [homeserver signing key].
6///
7/// This is an opaque character sequences of `[a-zA-Z0-9_]`. This type is provided simply for its
8/// semantic value.
9///
10/// With the `compat-server-signing-key-version` cargo feature, the validation of this type is
11/// relaxed to accept any string.
12///
13/// [homeserver signing key]: https://spec.matrix.org/latest/server-server-api/#retrieving-server-keys
14#[repr(transparent)]
15#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, IdZst)]
16#[ruma_id(
17    validate = ruma_identifiers_validation::server_signing_key_version::validate,
18)]
19pub struct ServerSigningKeyVersion(str);
20
21impl KeyName for ServerSigningKeyVersion {
22    fn validate(s: &str) -> Result<(), IdParseError> {
23        ruma_identifiers_validation::server_signing_key_version::validate(s)
24    }
25}
26
27impl KeyName for OwnedServerSigningKeyVersion {
28    fn validate(s: &str) -> Result<(), IdParseError> {
29        ruma_identifiers_validation::server_signing_key_version::validate(s)
30    }
31}