miden-validator 0.17.2

Miden validator
use miden_protocol::crypto::dsa::ecdsa_k256_keccak::SigningKey;
use rand_core_06::OsRng;

use super::*;

#[tokio::test]
async fn authentication_signature_commits_to_challenge() -> anyhow::Result<()> {
    let signer = ValidatorSigner::new_local(SigningKey::new());
    let challenge = Challenge::random(&mut OsRng);
    let different = Challenge::random(&mut OsRng);
    let channel_binding = [42; 32];
    let response = challenge.sign(&signer, &channel_binding).await?;

    assert!(response.verify_against(&different, &channel_binding).is_err());
    Ok(())
}

#[test]
fn authentication_signature_commits_to_domain() {
    let signing_key = SigningKey::new();
    let challenge = Challenge::random(&mut OsRng);
    let channel_binding = [42; 32];
    let mut commitment = b"different-protocol-domain".to_vec();
    commitment.extend_from_slice(&channel_binding);
    commitment.extend_from_slice(&challenge.encode());
    let response = ChallengeResponse {
        validator_public_key: signing_key.public_key(),
        signature: signing_key.sign(Rpo256::hash(&commitment)),
    };

    assert!(response.verify_against(&challenge, &channel_binding).is_err());
}