mod encrypted;
mod signed;
pub use encrypted::{decrypt, encrypt};
pub use signed::{sign, verify};
pub const SIGNED_VERSION: [u8; 4] = [0x42, 0x42, 0x33, 0x01];
pub const ENCRYPTED_VERSION: [u8; 4] = [0x42, 0x42, 0x10, 0x33];
#[cfg(test)]
mod tests {
use super::*;
use crate::primitives::PrivateKey;
#[test]
fn test_sign_verify_roundtrip() {
let sender = PrivateKey::random();
let recipient = PrivateKey::random();
let message = b"Test message for signing";
let signature = sign(message, &sender, Some(&recipient.public_key())).unwrap();
let valid = verify(message, &signature, Some(&recipient)).unwrap();
assert!(valid);
}
#[test]
fn test_sign_verify_anyone() {
let sender = PrivateKey::random();
let message = b"Anyone can verify this";
let signature = sign(message, &sender, None).unwrap();
let valid = verify(message, &signature, None).unwrap();
assert!(valid);
}
#[test]
fn test_encrypt_decrypt_roundtrip() {
let sender = PrivateKey::random();
let recipient = PrivateKey::random();
let plaintext = b"Secret message content";
let ciphertext = encrypt(plaintext, &sender, &recipient.public_key()).unwrap();
let decrypted = decrypt(&ciphertext, &recipient).unwrap();
assert_eq!(plaintext.to_vec(), decrypted);
}
#[test]
fn test_version_bytes() {
assert_eq!(SIGNED_VERSION, [0x42, 0x42, 0x33, 0x01]);
assert_eq!(ENCRYPTED_VERSION, [0x42, 0x42, 0x10, 0x33]);
}
}