Service Binary Sketch
pub async fn run_svid_exchange(name: &str) -> Result<()> {
let mut client = WorkloadApiClient::default().await?;
let svids = client.fetch_x509_svid().await?;
let svid = svids.first().ok_or("no SVID issued for this process")?;
println!("[{}] Got SPIFFE ID: {}", name, svid.spiffe_id());
let pem = pem::encode(&pem::Pem::new("CERTIFICATE", svid.cert_chain()[0].clone()));
std::fs::write(format!("/tmp/svid-{name}.pem"), &pem)?;
println!("[{}] Wrote cert to /tmp/svid-{name}.pem", name, name);
let peer = if name == "a" { "b" } else { "a" };
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
validate_peer_svid(&format!("/tmp/svid-{peer}.pem"), svid.trust_bundle())?;
println!("[{}] Peer service-{} identity valid ✓", name, peer);
Ok(())
}