use crate::Url;
use crate::nips::nip96;
use nostr::Keys;
use nostr_sdk::prelude::*;
use openssl::hash::MessageDigest;
use openssl::x509::X509;
use windmark_titanesque::context::TitanResource;
pub fn fingerprint(cert: &X509) -> Option<String> {
use std::fmt::Write;
match cert.digest(MessageDigest::sha256()) {
Ok(dbytes) => {
let digest: String =
dbytes.iter().fold(String::new(), |mut out, x| {
let _ = write!(out, "{:02x}", x);
out
});
Some(digest)
}
Err(_error) => None,
}
}
pub async fn titan96(
titan_rsc: Option<TitanResource>,
keys: &Keys,
) -> Option<Url> {
if let Some(titan) = titan_rsc {
(nip96::upload_file_data(
None,
titan.content,
titan.mime,
keys,
)
.await).ok()
} else {
None
}
}