use jks::{Certificate, KeyStore, TrustedCertificateEntry};
use std::time::SystemTime;
#[allow(dead_code)]
struct WasmRng;
impl jks::common::RandomReader for WasmRng {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<()> {
for b in buf.iter_mut() {
*b = 0;
}
Ok(())
}
}
#[no_mangle]
pub extern "C" fn create_trusted_cert() -> usize {
let cert = TrustedCertificateEntry {
creation_time: SystemTime::UNIX_EPOCH,
certificate: Certificate {
cert_type: "X509".to_string(),
content: vec![1, 2, 3], },
};
let mut ks = KeyStore::new();
match ks.set_trusted_certificate_entry("test", cert) {
Ok(_) => 1, Err(_) => 0, }
}
#[no_mangle]
pub extern "C" fn get_alias_count() -> usize {
let ks = KeyStore::new();
ks.aliases().len()
}
#[no_mangle]
pub extern "C" fn test_wasm() -> i32 {
let mut ks = KeyStore::new();
let tce = TrustedCertificateEntry {
creation_time: SystemTime::UNIX_EPOCH,
certificate: Certificate {
cert_type: "X509".to_string(),
content: vec![1, 2, 3],
},
};
if ks.set_trusted_certificate_entry("test", tce).is_err() {
return -1; }
if !ks.is_trusted_certificate_entry("test") {
return -2; }
let aliases = ks.aliases();
if aliases.len() != 1 || aliases[0] != "test" {
return -3; }
0 }