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")]
|
||||
pub mod upload_signing_keys;
|
||||
|
||||
/// Signatures for a `SignedKey` object.
|
||||
pub type SignedKeySignatures = BTreeMap<UserId, BTreeMap<DeviceKeyId, String>>;
|
||||
|
||||
/// A key for the SignedCurve25519 algorithm
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub struct SignedKey {
|
||||
/// Base64-encoded 32-byte Curve25519 public key.
|
||||
pub key: String,
|
||||
|
||||
/// 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.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
#[serde(untagged)]
|
||||
pub enum OneTimeKey {
|
||||
/// A key containing signatures, for the SignedCurve25519 algorithm.
|
||||
@ -36,8 +48,12 @@ pub enum OneTimeKey {
|
||||
Key(String),
|
||||
}
|
||||
|
||||
/// Signatures for a `CrossSigningKey` object.
|
||||
pub type CrossSigningKeySignatures = BTreeMap<UserId, BTreeMap<String, String>>;
|
||||
|
||||
/// A cross signing key.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
pub struct CrossSigningKey {
|
||||
/// The ID of the user the key belongs to.
|
||||
pub user_id: UserId,
|
||||
@ -50,11 +66,25 @@ pub struct CrossSigningKey {
|
||||
|
||||
/// Signatures of the key. Only optional for master key.
|
||||
#[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.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
#[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum KeyUsage {
|
||||
/// Master key.
|
||||
|
Loading…
x
Reference in New Issue
Block a user