keybase-protocol 0.1.1

Provides the Keybase types defined in the Keybase AVDL Protocol files for Rust.
Documentation
// Namespace: "keybase.1"
// Protocol: "UPK"
#![allow(dead_code)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(unused_imports)]
use serde::{Serialize, Deserialize};
use serde_repr::{Deserialize_repr, Serialize_repr};use super::*;

use super::common::*;
#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum KeyType {
  None_0,
  Nacl_1,
  Pgp_2,
}

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum UPK2MinorVersion {
  V0_0,
  V1_1,
  V2_2,
  V3_3,
  V4_4,
  V5_5,
  V6_6,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct MerkleRootV2 {
  pub seqno: Option<Seqno>,
  pub hashMeta: Option<HashMeta>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct SigChainLocation {
  pub seqno: Option<Seqno>,
  pub seqType: Option<SeqType>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct MerkleTreeLocation {
  pub leaf: Option<UserOrTeamID>,
  pub loc: Option<SigChainLocation>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct SignatureMetadata {
  pub signingKID: Option<KID>,
  pub prevMerkleRootSigned: Option<MerkleRootV2>,
  pub firstAppearedUnverified: Option<Seqno>,
  pub time: Option<Time>,
  pub sigChainLocation: Option<SigChainLocation>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct PublicKeyV2Base {
  pub kid: Option<KID>,
  #[serde(default)]
  pub isSibkey: Option<bool>,
  #[serde(default)]
  pub isEldest: Option<bool>,
  pub cTime: Option<Time>,
  pub eTime: Option<Time>,
  pub provisioning: Option<SignatureMetadata>,
  pub revocation: Option<SignatureMetadata>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct PublicKeyV2NaCl {
  pub base: Option<PublicKeyV2Base>,
  pub parent: Option<KID>,
  pub deviceID: Option<DeviceID>,
  #[serde(default)]
  pub deviceDescription: Option<String>,
  #[serde(default)]
  pub deviceType: Option<String>,
}

pub type PGPFingerprint = Vec<u8>;

#[derive(Serialize, Deserialize, Debug)]
pub struct PublicKeyV2PGPSummary {
  pub base: Option<PublicKeyV2Base>,
  pub fingerprint: Option<PGPFingerprint>,
  #[serde(default)]
  pub identities: Option<Vec<PGPIdentity>>,
}

#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum PublicKeyV2 {
  Nacl {nacl: PublicKeyV2NaCl},
  Pgp {pgp: PublicKeyV2PGPSummary},
  Default {},
}

#[derive(Serialize, Deserialize, Debug)]
pub struct UserPlusKeysV2 {
  pub uid: Option<UID>,
  #[serde(default)]
  pub username: Option<String>,
  pub eldestSeqno: Option<Seqno>,
  pub status: Option<StatusCode>,
  #[serde(default)]
  pub perUserKeys: Option<Vec<PerUserKey>>,
  pub deviceKeys: Option<std::collections::HashMap<KID, PublicKeyV2NaCl>>,
  pub pgpKeys: Option<std::collections::HashMap<KID, PublicKeyV2PGPSummary>>,
  pub stellarAccountID: Option<String>,
  pub remoteTracks: Option<std::collections::HashMap<UID, RemoteTrack>>,
  pub reset: Option<ResetSummary>,
  #[serde(default)]
  pub unstubbed: Option<bool>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct UserPlusKeysV2AllIncarnations {
  pub current: Option<UserPlusKeysV2>,
  #[serde(default)]
  pub pastIncarnations: Option<Vec<UserPlusKeysV2>>,
  #[serde(default)]
  pub uvv: Option<UserVersionVector>,
  pub seqnoLinkIDs: Option<std::collections::HashMap<Seqno, LinkID>>,
  pub minorVersion: Option<UPK2MinorVersion>,
}

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum UPAKVersion {
  V1_1,
  V2_2,
}

#[derive(Serialize, Deserialize, Debug)]
#[serde(untagged)]
pub enum UPAKVersioned {
  V1 {v1: UserPlusAllKeys},
  V2 {v2: UserPlusKeysV2AllIncarnations},
}

#[derive(Serialize_repr, Deserialize_repr, Debug, Hash, PartialEq, Eq)]
#[repr(u8)]
pub enum UPKLiteMinorVersion {
  V0_0,
}

// @lint("ignore")
#[derive(Serialize, Deserialize, Debug)]
pub struct UPKLiteV1 {
  pub uid: Option<UID>,
  #[serde(default)]
  pub username: Option<String>,
  pub eldestSeqno: Option<Seqno>,
  pub status: Option<StatusCode>,
  pub deviceKeys: Option<std::collections::HashMap<KID, PublicKeyV2NaCl>>,
  pub reset: Option<ResetSummary>,
}

// @lint("ignore")
#[derive(Serialize, Deserialize, Debug)]
pub struct UPKLiteV1AllIncarnations {
  pub current: Option<UPKLiteV1>,
  #[serde(default)]
  pub pastIncarnations: Option<Vec<UPKLiteV1>>,
  pub seqnoLinkIDs: Option<std::collections::HashMap<Seqno, LinkID>>,
  pub minorVersion: Option<UPKLiteMinorVersion>,
}