client-api: Make types in r0::keys non-exhaustive
This commit is contained in:
parent
34484c0225
commit
a891d1c615
@ -15,18 +15,30 @@ pub mod upload_signatures;
|
|||||||
#[cfg(feature = "unstable-pre-spec")]
|
#[cfg(feature = "unstable-pre-spec")]
|
||||||
pub mod upload_signing_keys;
|
pub mod upload_signing_keys;
|
||||||
|
|
||||||
|
/// Signatures for a `SignedKey` object.
|
||||||
|
pub type SignedKeySignatures = BTreeMap<UserId, BTreeMap<DeviceKeyId, String>>;
|
||||||
|
|
||||||
/// A key for the SignedCurve25519 algorithm
|
/// A key for the SignedCurve25519 algorithm
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
pub struct SignedKey {
|
pub struct SignedKey {
|
||||||
/// Base64-encoded 32-byte Curve25519 public key.
|
/// Base64-encoded 32-byte Curve25519 public key.
|
||||||
pub key: String,
|
pub key: String,
|
||||||
|
|
||||||
/// Signatures for the key object.
|
/// Signatures for the key object.
|
||||||
pub signatures: BTreeMap<UserId, BTreeMap<DeviceKeyId, String>>,
|
pub signatures: SignedKeySignatures,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SignedKey {
|
||||||
|
/// Creates a new `SignedKey` with the given key and signatures.
|
||||||
|
pub fn new(key: String, signatures: SignedKeySignatures) -> Self {
|
||||||
|
Self { key, signatures }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A one-time public key for "pre-key" messages.
|
/// A one-time public key for "pre-key" messages.
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
pub enum OneTimeKey {
|
pub enum OneTimeKey {
|
||||||
/// A key containing signatures, for the SignedCurve25519 algorithm.
|
/// A key containing signatures, for the SignedCurve25519 algorithm.
|
||||||
@ -36,8 +48,12 @@ pub enum OneTimeKey {
|
|||||||
Key(String),
|
Key(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Signatures for a `CrossSigningKey` object.
|
||||||
|
pub type CrossSigningKeySignatures = BTreeMap<UserId, BTreeMap<String, String>>;
|
||||||
|
|
||||||
/// A cross signing key.
|
/// A cross signing key.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
pub struct CrossSigningKey {
|
pub struct CrossSigningKey {
|
||||||
/// The ID of the user the key belongs to.
|
/// The ID of the user the key belongs to.
|
||||||
pub user_id: UserId,
|
pub user_id: UserId,
|
||||||
@ -50,11 +66,25 @@ pub struct CrossSigningKey {
|
|||||||
|
|
||||||
/// Signatures of the key. Only optional for master key.
|
/// Signatures of the key. Only optional for master key.
|
||||||
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
|
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
|
||||||
pub signatures: BTreeMap<UserId, BTreeMap<String, String>>,
|
pub signatures: CrossSigningKeySignatures,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CrossSigningKey {
|
||||||
|
/// Creates a new `CrossSigningKey` with the given user ID, usage, keys and
|
||||||
|
/// signatures.
|
||||||
|
pub fn new(
|
||||||
|
user_id: UserId,
|
||||||
|
usage: Vec<KeyUsage>,
|
||||||
|
keys: BTreeMap<String, String>,
|
||||||
|
signatures: CrossSigningKeySignatures,
|
||||||
|
) -> Self {
|
||||||
|
Self { user_id, usage, keys, signatures }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The usage of a cross signing key.
|
/// The usage of a cross signing key.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum KeyUsage {
|
pub enum KeyUsage {
|
||||||
/// Master key.
|
/// Master key.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user