ruma_identifiers/
crypto_algorithms.rs1#[cfg(feature = "serde")]
4use ruma_serde::{DeserializeFromCowStr, SerializeAsRefStr};
5use ruma_serde_macros::{AsRefStr, DisplayAsRefStr, FromString};
6
7use crate::PrivOwnedStr;
8
9#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, AsRefStr, DisplayAsRefStr, FromString)]
14#[non_exhaustive]
15#[ruma_enum(rename_all = "snake_case")]
16#[cfg_attr(feature = "serde", derive(DeserializeFromCowStr, SerializeAsRefStr))]
17pub enum DeviceKeyAlgorithm {
18 Ed25519,
20
21 Curve25519,
23
24 SignedCurve25519,
26
27 #[doc(hidden)]
28 _Custom(PrivOwnedStr),
29}
30
31#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, AsRefStr, DisplayAsRefStr, FromString)]
36#[non_exhaustive]
37#[ruma_enum(rename_all = "snake_case")]
38#[cfg_attr(feature = "serde", derive(DeserializeFromCowStr, SerializeAsRefStr))]
39pub enum SigningKeyAlgorithm {
40 Ed25519,
42
43 #[doc(hidden)]
44 _Custom(PrivOwnedStr),
45}
46
47#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, AsRefStr, DisplayAsRefStr, FromString)]
52#[non_exhaustive]
53#[cfg_attr(feature = "serde", derive(DeserializeFromCowStr, SerializeAsRefStr))]
54pub enum EventEncryptionAlgorithm {
55 #[ruma_enum(rename = "m.olm.v1.curve25519-aes-sha2")]
57 OlmV1Curve25519AesSha2,
58
59 #[ruma_enum(rename = "m.megolm.v1.aes-sha2")]
61 MegolmV1AesSha2,
62
63 #[doc(hidden)]
64 _Custom(PrivOwnedStr),
65}
66
67#[cfg(test)]
68mod tests {
69 use super::{DeviceKeyAlgorithm, SigningKeyAlgorithm};
70
71 #[test]
72 fn parse_device_key_algorithm() {
73 assert_eq!(DeviceKeyAlgorithm::from("ed25519"), DeviceKeyAlgorithm::Ed25519);
74 assert_eq!(DeviceKeyAlgorithm::from("curve25519"), DeviceKeyAlgorithm::Curve25519);
75 assert_eq!(
76 DeviceKeyAlgorithm::from("signed_curve25519"),
77 DeviceKeyAlgorithm::SignedCurve25519
78 );
79 }
80
81 #[test]
82 fn parse_signing_key_algorithm() {
83 assert_eq!(SigningKeyAlgorithm::from("ed25519"), SigningKeyAlgorithm::Ed25519);
84 }
85
86 #[test]
87 #[cfg(feature = "serde")]
88 fn event_encryption_algorithm_serde() {
89 use ruma_serde::test::serde_json_eq;
90 use serde_json::json;
91
92 use super::EventEncryptionAlgorithm;
93
94 serde_json_eq(EventEncryptionAlgorithm::MegolmV1AesSha2, json!("m.megolm.v1.aes-sha2"));
95 serde_json_eq(
96 EventEncryptionAlgorithm::OlmV1Curve25519AesSha2,
97 json!("m.olm.v1.curve25519-aes-sha2"),
98 );
99 serde_json_eq(EventEncryptionAlgorithm::from("io.ruma.test"), json!("io.ruma.test"));
100 }
101}