From 98fd0e14ead529e416f327a2a40a2f95f9e1a164 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Thu, 1 Apr 2021 17:44:06 +0200 Subject: proof of concept: age in wasm in a browser --- src/lib.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/lib.rs (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..c422e2b --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,47 @@ +mod utils; + +use wasm_bindgen::prelude::*; + +use std::io::{Read, Write}; +use std::iter; + + +use age::x25519::Recipient; + +//use rand::{rngs::OsRng, RngCore}; + +// When the `wee_alloc` feature is enabled, use `wee_alloc` as the global +// allocator. +#[cfg(feature = "wee_alloc")] +#[global_allocator] +static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; + +#[wasm_bindgen] +extern { + fn alert(s: &str); +} + +#[wasm_bindgen] +pub fn greet() { + alert("Hello, {{project-name}}!"); +} + + +#[wasm_bindgen] +pub fn lalala(plaintext : String) -> Option> { + + utils::set_panic_hook(); + + let pubkey = "age1m6k5wqnrk63wxhlwtl7s244ngmacn6xph3lxjd3x735f6wm8z4lsysfzg5".parse::().ok()?; + + let encryptor = age::Encryptor::with_recipients(vec![Box::new(pubkey)]); + + let mut encrypted = vec![]; + + let mut writer = encryptor.wrap_output(&mut encrypted).ok()?; + + writer.write_all(&plaintext.as_bytes()).ok()?; + writer.finish().ok()?; + + Some(encrypted) +} -- cgit v1.2.3