enigma-identity 0.1.0

Enigma Identity: local identity + X3DH bundle + shared secret derivation
Documentation
use crate::identity::LocalIdentity;

#[test]
fn identity_creation_has_uuid_and_username() {
    let id = LocalIdentity::new("alice").unwrap();
    assert_eq!(id.user().username, "alice");
    assert_ne!(id.user().uuid.as_u128(), 0);
}

#[test]
fn bundle_verification_ok() {
    let id = LocalIdentity::new("bob").unwrap();
    let b = id.bundle();
    LocalIdentity::verify_bundle(&b).unwrap();
}

#[test]
fn bundle_verification_fails_if_tampered() {
    let id = LocalIdentity::new("bob").unwrap();
    let mut b = id.bundle();
    b.signed_prekey_public_key[0] ^= 0x01;
    assert!(LocalIdentity::verify_bundle(&b).is_err());
}

#[test]
fn invalid_username_rejected() {
    assert!(LocalIdentity::new("").is_err());
    assert!(LocalIdentity::new("   ").is_err());
}