ssh_agent/proto/
message.rs

1use serde::{Deserialize, Serialize};
2
3use super::private_key::PrivateKey;
4
5#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
6pub struct Identity {
7    pub pubkey_blob: Vec<u8>,
8    pub comment: String,
9}
10
11#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
12pub struct SignRequest {
13    pub pubkey_blob: Vec<u8>,
14    pub data: Vec<u8>,
15    pub flags: u32
16}
17
18#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
19pub struct AddIdentity {
20    pub privkey: PrivateKey,
21    pub comment: String
22}
23
24#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
25pub struct AddIdentityConstrained {
26    pub identity: AddIdentity,
27    pub constraints: Vec<KeyConstraint>
28}
29
30#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
31pub struct RemoveIdentity {
32    pub pubkey_blob: Vec<u8>
33}
34
35#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
36pub struct SmartcardKey {
37    pub id: String,
38    pub pin: String
39}
40
41#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
42pub struct KeyConstraint {
43    pub constraint_type: u8,
44    pub constraint_data: Vec<u8>
45}
46
47#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
48pub struct AddSmartcardKeyConstrained {
49    pub key: SmartcardKey,
50    pub constraints: Vec<KeyConstraint>
51}
52
53#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
54pub struct Extension {
55    extension_type: String,
56    extension_contents: Vec<u8>
57}
58
59pub type Passphrase = String;
60pub type SignatureBlob = Vec<u8>;
61
62#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
63pub enum Message {
64    Reserved0,
65    Reserved1,
66    Reserved2,
67    Reserved3,
68    Reserved4,
69    Failure,
70    Success,
71    Reserved7,
72    Reserved8,
73    Reserved9,
74    Reserved10,
75    RequestIdentities,
76    IdentitiesAnswer(Vec<Identity>),
77    SignRequest(SignRequest),
78    SignResponse(SignatureBlob),
79    Reserved15,
80    Reserved16,
81    AddIdentity(AddIdentity),
82    RemoveIdentity(RemoveIdentity),
83    RemoveAllIdentities,
84    AddSmartcardKey(SmartcardKey),
85    RemoveSmartcardKey(SmartcardKey),
86    Lock(Passphrase),
87    Unlock(Passphrase),
88    Reserved24,
89    AddIdConstrained(AddIdentityConstrained),
90    AddSmartcardKeyConstrained(AddSmartcardKeyConstrained),
91    Extension(Extension),
92    ExtensionFailure,
93}