Skip to main content

keyhive_wasm/js/
encrypted.rs

1use super::change_id::JsChangeId;
2use beekem::encrypted::EncryptedContent;
3use serde::{Deserialize, Serialize};
4use wasm_bindgen::prelude::*;
5
6#[wasm_bindgen(js_name = Encrypted)]
7#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
8pub struct JsEncrypted(pub(crate) EncryptedContent<Vec<u8>, JsChangeId>);
9
10#[wasm_bindgen(js_class = Encrypted)]
11impl JsEncrypted {
12    #[wasm_bindgen(js_name = toBytes)]
13    pub fn to_bytes(&self) -> Vec<u8> {
14        self.0.ciphertext.clone()
15    }
16
17    #[wasm_bindgen(getter)]
18    pub fn ciphertext(&self) -> Vec<u8> {
19        self.0.ciphertext.clone()
20    }
21
22    #[wasm_bindgen(getter)]
23    pub fn nonce(&self) -> Vec<u8> {
24        self.0.nonce.as_bytes().to_vec()
25    }
26
27    #[wasm_bindgen(getter)]
28    pub fn pcs_key_hash(&self) -> Vec<u8> {
29        self.0.pcs_key_hash.raw.as_bytes().to_vec()
30    }
31
32    #[wasm_bindgen(getter)]
33    pub fn content_ref(&self) -> Vec<u8> {
34        self.0.content_ref.bytes().to_vec()
35    }
36
37    #[wasm_bindgen(getter)]
38    pub fn pred_refs(&self) -> Vec<u8> {
39        self.0.pred_refs.raw.as_bytes().to_vec()
40    }
41}
42
43impl From<EncryptedContent<Vec<u8>, JsChangeId>> for JsEncrypted {
44    fn from(encrypted: EncryptedContent<Vec<u8>, JsChangeId>) -> Self {
45        JsEncrypted(encrypted)
46    }
47}