#[cfg(test)]
mod tests {
use crate::log::identity::{DefaultIdentificator, Identificator};
use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey};
use hex;
#[tokio::test]
async fn test_verify_identity_cryptographically() {
let mut identificator = DefaultIdentificator::new();
let identity = identificator.create("test_identity");
println!("Identity created:");
println!(" ID: {}", identity.id());
println!(" Public Key: {}", identity.pub_key());
println!(" ID Signature: {}", identity.signatures().id());
println!(" PubKey Signature: {}", identity.signatures().pub_key());
assert!(!identity.id().is_empty());
assert!(!identity.pub_key().is_empty());
assert!(!identity.signatures().id().is_empty());
assert!(!identity.signatures().pub_key().is_empty());
let pub_key_bytes = hex::decode(identity.pub_key());
assert!(pub_key_bytes.is_ok(), "Public key should be valid hex");
let pub_key_bytes = pub_key_bytes.unwrap();
assert_eq!(
pub_key_bytes.len(),
32,
"Ed25519 public key should be 32 bytes"
);
let mut pk_array = [0u8; 32];
pk_array.copy_from_slice(&pub_key_bytes);
let public_key = VerifyingKey::from_bytes(&pk_array);
assert!(public_key.is_ok(), "Public key should be valid Ed25519 key");
println!("✅ Identity cryptographic verification test components are valid");
}
#[tokio::test]
async fn test_signature_verification_components() {
use rand::Rng;
let mut sk_bytes = [0u8; 32];
rand::rng().fill_bytes(&mut sk_bytes);
let signing_key = SigningKey::from_bytes(&sk_bytes);
let verifying_key = signing_key.verifying_key();
let message = b"test message";
let signature = signing_key.sign(message);
let verification_result = verifying_key.verify(message, &signature);
assert!(
verification_result.is_ok(),
"Signature verification should succeed"
);
let signature_bytes = signature.to_bytes();
let parsed_signature = Signature::from_slice(&signature_bytes);
assert!(parsed_signature.is_ok(), "Signature parsing should succeed");
let verification_result2 = verifying_key.verify(message, &parsed_signature.unwrap());
assert!(
verification_result2.is_ok(),
"Parsed signature verification should succeed"
);
println!("✅ Ed25519 signature verification components work correctly");
}
}