1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
extern crate byteorder; extern crate ed25519_dalek; #[macro_use] extern crate failure; extern crate parity_wasm; extern crate rand; extern crate sha2; pub mod errors; pub mod signature; mod wasm_signature; pub use self::errors::*; pub use self::signature::*; use parity_wasm::elements::*; pub fn keygen(signature_alg: &SignatureAlg) -> KeyPair { signature_alg.keygen() } pub fn sign( module_bytes: &[u8], key_pair: &KeyPair, ad: Option<&[u8]>, symbol_name: &str, ) -> Result<Vec<u8>, WError> { let signature_alg = key_pair.sk.to_alg()?; let module: Module = parity_wasm::deserialize_buffer(module_bytes)?; let module = wasm_signature::attach_signature(module, &signature_alg, ad, &key_pair, symbol_name)?; let signed_module_bytes = parity_wasm::serialize(module)?; Ok(signed_module_bytes) } pub fn verify( module_bytes: &[u8], pk: &PublicKey, ad: Option<&[u8]>, symbol_name: &str, ) -> Result<(), WError> { pk.to_alg()?; let module: Module = parity_wasm::deserialize_buffer(module_bytes)?; wasm_signature::verify_signature(&module, ad, pk, symbol_name) }