agent-pay 0.1.0

L402 + DID-signed invoices: agent-to-agent Lightning payments (Rust port of @p-vbordei/agent-pay)
Documentation
use agent_pay::{
    did_key_from_public_key, generate_key_pair, public_key_from_did_key, verification_method_id,
};

#[test]
fn generate_key_pair_returns_32_byte_secret_and_public() {
    let kp = generate_key_pair();
    assert_eq!(kp.private_key.len(), 32);
    assert_eq!(kp.public_key.len(), 32);
}

#[test]
fn did_key_roundtrips_an_ed25519_public_key() {
    let kp = generate_key_pair();
    let did = did_key_from_public_key(&kp.public_key).unwrap();
    assert!(did.starts_with("did:key:z"));
    let back = public_key_from_did_key(&did).unwrap();
    assert_eq!(back, kp.public_key);
}

#[test]
fn public_key_from_did_key_rejects_non_did_key() {
    assert!(public_key_from_did_key("did:web:example.com").is_err());
}

#[test]
fn verification_method_id_for_did_key_uses_multibase_as_fragment() {
    let did = "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH";
    assert_eq!(
        verification_method_id(did).unwrap(),
        format!("{did}#z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH"),
    );
}