liboxyd 0.1.4

Coldwire's cryptographic library
Documentation
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(())
    }
}