oxedyne/fe2o3/fe2o3_crypto/src/wasm/kem.rs
2.3 KiB, 7 runs
created by r1870400018:252, which is this file's identity for as long as the history lasts, whatever it is later renamed to
download · who wrote it · its history
| 1 | use crate::enc::saber::{ |
| 2 | self, |
| 3 | LightSaber, |
| 4 | Saber, |
| 5 | FireSaber, |
| 6 | SaberAlgorithm, |
| 7 | }; |
| 8 | use console_error_panic_hook; |
| 9 | use wasm_bindgen::prelude::*; |
| 10 | |
| 11 | #[wasm_bindgen] |
| 12 | extern "C" { |
| 13 | fn alert(s: &str); |
| 14 | } |
| 15 | |
| 16 | #[wasm_bindgen] |
| 17 | pub fn greet(name: &str) { |
| 18 | alert(&format!("Hello, {}!", name)); |
| 19 | } |
| 20 | |
| 21 | #[wasm_bindgen] |
| 22 | pub fn key_encap( |
| 23 | scheme_id: u8, |
| 24 | pk_key: &[u8], |
| 25 | pk_seed: &[u8], |
| 26 | mut secret: &mut [u8], |
| 27 | ) -> |
| 28 | Vec<u8> // Ciphertext |
| 29 | { |
| 30 | console_error_panic_hook::set_once(); |
| 31 | match scheme_id { |
| 32 | saber::LIGHTSABER_ID => { |
| 33 | let scheme = saber::LightSaber; |
| 34 | return scheme.generic_kem_encap_wasm::< |
| 35 | {LightSaber::L}, |
| 36 | {LightSaber::POLY_VEC_BYTES}, |
| 37 | {LightSaber::L * LightSaber::POLY_VEC_BYTES}, |
| 38 | {LightSaber::POLY_VEC_COMPRESSED_BYTES}, |
| 39 | {LightSaber::POLY_COIN_BYTES}, |
| 40 | {LightSaber::L * LightSaber::POLY_COIN_BYTES}, |
| 41 | {LightSaber::SCALE_BYTES_KEM}, |
| 42 | >( |
| 43 | pk_key, |
| 44 | pk_seed, |
| 45 | &mut secret, |
| 46 | ).unwrap_or_default(); |
| 47 | }, |
| 48 | saber::SABER_ID => { |
| 49 | let scheme = saber::Saber; |
| 50 | return scheme.generic_kem_encap_wasm::< |
| 51 | {Saber::L}, |
| 52 | {Saber::POLY_VEC_BYTES}, |
| 53 | {Saber::L * Saber::POLY_VEC_BYTES}, |
| 54 | {Saber::POLY_VEC_COMPRESSED_BYTES}, |
| 55 | {Saber::POLY_COIN_BYTES}, |
| 56 | {Saber::L * Saber::POLY_COIN_BYTES}, |
| 57 | {Saber::SCALE_BYTES_KEM}, |
| 58 | >( |
| 59 | pk_key, |
| 60 | pk_seed, |
| 61 | &mut secret, |
| 62 | ).unwrap_or_default(); |
| 63 | }, |
| 64 | saber::FIRESABER_ID => { |
| 65 | let scheme = saber::FireSaber; |
| 66 | return scheme.generic_kem_encap_wasm::< |
| 67 | {FireSaber::L}, |
| 68 | {FireSaber::POLY_VEC_BYTES}, |
| 69 | {FireSaber::L * FireSaber::POLY_VEC_BYTES}, |
| 70 | {FireSaber::POLY_VEC_COMPRESSED_BYTES}, |
| 71 | {FireSaber::POLY_COIN_BYTES}, |
| 72 | {FireSaber::L * FireSaber::POLY_COIN_BYTES}, |
| 73 | {FireSaber::SCALE_BYTES_KEM}, |
| 74 | >( |
| 75 | pk_key, |
| 76 | pk_seed, |
| 77 | &mut secret, |
| 78 | ).unwrap_or_default(); |
| 79 | }, |
| 80 | _ => unimplemented!(), |
| 81 | } |
| 82 | |
| 83 | } |