use std::ffi::CStr;
use deno_core::GarbageCollected;
use deno_core::op2;
use deno_core::v8;
use crate::shared::InsertKeyData;
use crate::shared::RawKeyData;
use crate::shared::StoredKeyData;
pub struct CryptoKeyHandle {
data: RawKeyData,
}
impl CryptoKeyHandle {
pub fn data(&self) -> &RawKeyData {
&self.data
}
}
unsafe impl GarbageCollected for CryptoKeyHandle {
fn trace(&self, _visitor: &mut v8::cppgc::Visitor) {}
fn get_name(&self) -> &'static CStr {
c"CryptoKeyHandle"
}
}
#[op2]
#[cppgc]
pub fn op_crypto_key_store_insert(
#[serde] data: InsertKeyData,
) -> CryptoKeyHandle {
CryptoKeyHandle { data: data.into() }
}
#[op2]
pub fn op_crypto_key_store_get(
#[cppgc] handle: &CryptoKeyHandle,
) -> StoredKeyData {
handle.data.to_stored_key_data()
}