Skip to main content

tuwunel_api/client/keys/
mod.rs

1mod claim_keys;
2mod get_key_changes;
3mod get_keys;
4mod upload_keys;
5mod upload_signatures;
6mod upload_signing_keys;
7
8use std::{collections::BTreeMap, num::NonZeroUsize, time::Duration};
9
10pub(crate) use claim_keys::{claim_keys_helper, claim_keys_route};
11pub(crate) use get_key_changes::get_key_changes_route;
12pub(crate) use get_keys::{get_keys_helper, get_keys_route};
13use serde_json::{Value as JsonValue, json};
14use tuwunel_core::debug_warn;
15use tuwunel_service::{
16	Services,
17	federation::feds::{Fault, Faults, Opts},
18};
19pub(crate) use upload_keys::upload_keys_route;
20pub(crate) use upload_signatures::upload_signatures_route;
21pub(crate) use upload_signing_keys::upload_signing_keys_route;
22
23type FailureMap = BTreeMap<String, JsonValue>;
24
25fn federation_opts(services: &Services) -> Opts {
26	Opts {
27		width: NonZeroUsize::new(services.server.config.feds_max_width),
28		timeout: Some(Duration::from_secs(services.server.config.federation_keys_timeout)),
29		..Default::default()
30	}
31}
32
33fn federation_failures(
34	endpoint: &'static str,
35	faults: Faults,
36) -> impl Iterator<Item = (String, JsonValue)> {
37	faults.into_iter().map(move |(server, fault)| {
38		match &fault {
39			| Fault::Error(error) =>
40				debug_warn!(%server, %error, endpoint, "key federation request failed"),
41			| _ => debug_warn!(%server, ?fault, endpoint, "key federation request failed"),
42		}
43
44		(server.to_string(), json!({}))
45	})
46}