Authorize remote modules with bearer proofs
This commit is contained in:
parent
72cd018a3e
commit
7e39a19c18
8 changed files with 572 additions and 120 deletions
|
|
@ -52,6 +52,7 @@ pub enum ControlRequest {
|
|||
CasFetch {
|
||||
node: String,
|
||||
hash: BlobHash,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
CasHash {
|
||||
path: PathBuf,
|
||||
|
|
@ -182,6 +183,7 @@ pub enum ControlRequest {
|
|||
},
|
||||
SshCertSync {
|
||||
node: String,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
SshRevocationAdd {
|
||||
kind: String,
|
||||
|
|
@ -205,9 +207,11 @@ pub enum ControlRequest {
|
|||
},
|
||||
SshRevocationSync {
|
||||
node: String,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
SshProxyConnect {
|
||||
node: String,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
DbAdd {
|
||||
name: String,
|
||||
|
|
@ -225,6 +229,7 @@ pub enum ControlRequest {
|
|||
node: String,
|
||||
name: String,
|
||||
limit: u32,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
KvCreate {
|
||||
name: String,
|
||||
|
|
@ -242,6 +247,7 @@ pub enum ControlRequest {
|
|||
KvSync {
|
||||
node: String,
|
||||
name: String,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
DocumentCreate {
|
||||
name: String,
|
||||
|
|
@ -259,15 +265,18 @@ pub enum ControlRequest {
|
|||
DocumentSync {
|
||||
node: String,
|
||||
name: String,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
PubsubPub {
|
||||
topic: String,
|
||||
message: String,
|
||||
node: Option<String>,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
PubsubSub {
|
||||
topic: String,
|
||||
node: Option<String>,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
PipeListen {
|
||||
name: String,
|
||||
|
|
@ -275,6 +284,7 @@ pub enum ControlRequest {
|
|||
PipeConnect {
|
||||
target: String,
|
||||
node: Option<String>,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
ModuleStub {
|
||||
module: String,
|
||||
|
|
@ -666,48 +676,57 @@ pub enum PeerControlRequest {
|
|||
peer_card: PeerCard,
|
||||
hash: BlobHash,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
SshCertSync {
|
||||
peer_card: PeerCard,
|
||||
since_ms: i64,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
SshRevocationSync {
|
||||
peer_card: PeerCard,
|
||||
since_ms: i64,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
KvSync {
|
||||
peer_card: PeerCard,
|
||||
name: String,
|
||||
since_ms: i64,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
PubsubPublish {
|
||||
peer_card: PeerCard,
|
||||
topic: String,
|
||||
message: String,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
PubsubSubscribe {
|
||||
peer_card: PeerCard,
|
||||
topic: String,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
PipeConnect {
|
||||
peer_card: PeerCard,
|
||||
target: String,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
SshProxyConnect {
|
||||
peer_card: PeerCard,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
DocumentSync {
|
||||
peer_card: PeerCard,
|
||||
name: String,
|
||||
since_ms: i64,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
DbSync {
|
||||
peer_card: PeerCard,
|
||||
|
|
@ -715,6 +734,7 @@ pub enum PeerControlRequest {
|
|||
after_db_version: Option<i64>,
|
||||
limit: u32,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -1000,6 +1020,7 @@ mod tests {
|
|||
let request = ControlRequest::CasFetch {
|
||||
node: "node:peer".to_owned(),
|
||||
hash: "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef".into(),
|
||||
bearer_secret: Some("bearer:test".to_owned()),
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1050,6 +1071,7 @@ mod tests {
|
|||
|
||||
let request = ControlRequest::SshCertSync {
|
||||
node: "node:ca".to_owned(),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1058,6 +1080,7 @@ mod tests {
|
|||
|
||||
let request = ControlRequest::SshRevocationSync {
|
||||
node: "node:ca".to_owned(),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1107,6 +1130,7 @@ mod tests {
|
|||
let request = ControlRequest::KvSync {
|
||||
node: "node:peer".to_owned(),
|
||||
name: "prefs".to_owned(),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1148,6 +1172,7 @@ mod tests {
|
|||
let request = ControlRequest::PipeConnect {
|
||||
target: "inbox".to_owned(),
|
||||
node: Some("node:peer".to_owned()),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1158,6 +1183,7 @@ mod tests {
|
|||
topic: "presence/test".to_owned(),
|
||||
message: "online".to_owned(),
|
||||
node: Some("node:peer".to_owned()),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1167,6 +1193,7 @@ mod tests {
|
|||
let request = ControlRequest::PubsubSub {
|
||||
topic: "presence/test".to_owned(),
|
||||
node: Some("node:peer".to_owned()),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1231,6 +1258,7 @@ mod tests {
|
|||
|
||||
let request = ControlRequest::SshProxyConnect {
|
||||
node: "node:peer".to_owned(),
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1271,6 +1299,7 @@ mod tests {
|
|||
node: "node:peer".to_owned(),
|
||||
name: "notes".to_owned(),
|
||||
limit: 50,
|
||||
bearer_secret: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1426,6 +1455,7 @@ mod tests {
|
|||
after_db_version: Some(7),
|
||||
limit: 10,
|
||||
nonce: "nonce".to_owned(),
|
||||
bearer_proof: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_peer_request(&encode_peer_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1552,6 +1582,7 @@ mod tests {
|
|||
},
|
||||
topic: "presence/test".to_owned(),
|
||||
nonce: "nonce".to_owned(),
|
||||
bearer_proof: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_peer_request(&encode_peer_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1618,6 +1649,13 @@ mod tests {
|
|||
},
|
||||
},
|
||||
nonce: "nonce".to_owned(),
|
||||
bearer_proof: Some(BearerProof {
|
||||
secret: "bearer:test".into(),
|
||||
resource: "resource:ssh-proxy:local".into(),
|
||||
capabilities: vec!["ssh_proxy.connect".into()],
|
||||
nonce: "nonce".to_owned(),
|
||||
response: "response".to_owned(),
|
||||
}),
|
||||
};
|
||||
assert_eq!(
|
||||
decode_peer_request(&encode_peer_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
|
|||
Loading…
Reference in a new issue