63 lines
2.4 KiB
Rust
63 lines
2.4 KiB
Rust
//! Tests for keypair functionality.
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use crate::core::keypair;
|
|
|
|
// Helper to ensure keypair is initialized for tests that need it.
|
|
fn ensure_keypair_initialized() {
|
|
// Create a space and keypair for testing
|
|
let _ = keypair::create_space("test_space");
|
|
let _ = keypair::create_keypair("test_keypair");
|
|
let _ = keypair::select_keypair("test_keypair");
|
|
}
|
|
|
|
#[test]
|
|
fn test_keypair_generation_and_retrieval() {
|
|
ensure_keypair_initialized();
|
|
let pub_key = keypair::pub_key().expect("Should be able to get pub key after init");
|
|
assert!(!pub_key.is_empty(), "Public key should not be empty");
|
|
// Basic check for SEC1 format (0x02, 0x03, or 0x04 prefix)
|
|
assert!(pub_key.len() == 33 || pub_key.len() == 65, "Public key length is incorrect");
|
|
assert!(pub_key[0] == 0x02 || pub_key[0] == 0x03 || pub_key[0] == 0x04, "Invalid SEC1 format start byte");
|
|
}
|
|
|
|
#[test]
|
|
fn test_sign_verify_valid() {
|
|
ensure_keypair_initialized();
|
|
let message = b"this is a test message";
|
|
let signature = keypair::sign(message).expect("Signing failed");
|
|
assert!(!signature.is_empty(), "Signature should not be empty");
|
|
|
|
let is_valid = keypair::verify(message, &signature).expect("Verification failed");
|
|
assert!(is_valid, "Signature should be valid");
|
|
}
|
|
|
|
#[test]
|
|
fn test_verify_invalid_signature() {
|
|
ensure_keypair_initialized();
|
|
let message = b"another test message";
|
|
let mut invalid_signature = keypair::sign(message).expect("Signing failed");
|
|
// Tamper with the signature
|
|
invalid_signature[0] = invalid_signature[0].wrapping_add(1);
|
|
|
|
let is_valid = keypair::verify(message, &invalid_signature).expect("Verification process failed");
|
|
assert!(!is_valid, "Tampered signature should be invalid");
|
|
}
|
|
|
|
#[test]
|
|
fn test_verify_wrong_message() {
|
|
ensure_keypair_initialized();
|
|
let message = b"original message";
|
|
let wrong_message = b"different message";
|
|
let signature = keypair::sign(message).expect("Signing failed");
|
|
|
|
let is_valid = keypair::verify(wrong_message, &signature).expect("Verification process failed");
|
|
assert!(!is_valid, "Signature should be invalid for a different message");
|
|
}
|
|
|
|
// Clean up after tests
|
|
fn cleanup() {
|
|
keypair::logout();
|
|
}
|
|
} |