rust nerd shit, long
// Here we have to retrieve the idcert from the homeserver
let cacheable_cert = HTTP_CLIENT
.get_server_id_cert(
Some(i64_to_u64_checked(naive_dt_not_before.and_utc().timestamp())?),
&url::Url::parse(&cert.id_cert_tbs.issuer.domain_name.to_string()).map_err(
|e| {
Error::new(
crate::errors::Errcode::IllegalInput,
Some(Context::new(
Some("idcert.id_cert_tbs.issuer.domain_name"),
Some(cert.id_cert_tbs.issuer.domain_name.to_string().as_str()),
None,
Some(&format!("Not a valid URL: {e}")),
)),
)
},
)?,
)
.await
.map_err(|e| {
Error::new_internal_error(Some(&format!(
"Failed to retrieve the certificate from home server {}",
cert.id_cert_tbs.issuer.domain_name
)))
})?;
let new_home_server_cert = IdCert::<S, P>::from_pem_unchecked(&cacheable_cert.cert).map_err(|e| {
warn!("Encountered a new home server ID-Cert which could not be parsed into an IdCert from PEM: {e}");
Error::new_internal_error(Some(&format!("Failed to build certificate from home server {}'s certificate PEM", cert.id_cert_tbs.issuer.domain_name)))
})?;
new_home_server_cert.full_verify_home_server(i64_to_u64_checked(
naive_dt_not_before.and_utc().timestamp(),
)?).map_err(|e| {
warn!("Encountered a new home server ID-Cert which could not be parsed into an IdCert from PEM: {e}");
Error::new_internal_error(Some(&format!("Failed to verify certificate from home server {}", cert.id_cert_tbs.issuer.domain_name)))
})?;
let new_home_server_pubkey = &new_home_server_cert.id_cert_tbs.subject_public_key;
new_home_server_pubkey.verify_signature(
&new_home_server_cert.signature,
&new_home_server_cert.signature_data().map_err(|e| {
warn!("Could not verify signature of home server {e}'s ID-Cert, as the signature data is malformed: {e}");
Error::new_internal_error(Some(&format!("Failed to verify certificate signature from home server {}", cert.id_cert_tbs.issuer.domain_name)))
})?,
).map_err(|e| {
warn!("Home server {} sent a certificate which is invalid! {e}", cert.id_cert_tbs.issuer.domain_name);
Error::new_internal_error(Some(&format!("Failed to verify certificate signature from home server {}", cert.id_cert_tbs.issuer.domain_name)))
})?;
Cert::insert_idcert_unchecked(db, new_home_server_cert.clone(), None).await?;
todo!()
};why does building PKI actually have to be complexxxxxxxxxx smhhhhh can't i just do
if !work() { work() } 
