pub mod ecdsa;
pub mod ecies;
pub mod keys;
pub use libsecp256k1;
#[cfg(test)]
mod tests {
use super::{ecdsa, ecies, keys};
use async_std;
const TEST_DATA: &[u8] = "hello world".as_bytes();
#[async_std::test]
async fn ecies() -> Result<(), String> {
let (sk, pk) = keys::generate_keypair();
let enc = match ecies::crypto::encrypt(pk, TEST_DATA).await {
Ok(encrypted) => encrypted,
Err(err) => return Err(err.to_string()),
};
let dec = match ecies::crypto::decrypt(sk, &enc).await {
Ok(decypted) => decypted,
Err(err) => return Err(err.to_string()),
};
assert_eq!(dec, TEST_DATA);
Ok(())
}
#[test]
fn ecdsa() -> Result<(), String> {
let (sk, pk) = keys::generate_keypair();
let (signature, _recovery) = match ecdsa::sign(sk, TEST_DATA) {
Ok(res) => res,
Err(err) => return Err(err.to_string()),
};
let is_valid = match ecdsa::verify(pk, TEST_DATA, signature) {
Ok(valid) => valid,
Err(err) => return Err(err.to_string()),
};
assert!(is_valid);
Ok(())
}
}