pub fn verify_signature(public_key: &CurvePoint, message_signed: &MessageSigned) -> bool {
    let g = Curve::generator();
    let message = &message_signed.message;
    let (s, e) = &message_signed.signature;

    // rv = g^s * h^e, with h = public_key and (s, e) = signature.
    let rv = g
        .operate_with_self(s.representative())
        .operate_with(&public_key.operate_with_self(e.representative()));

    // We want to compute ev = H(rv || M).
    let mut hasher = Keccak256::new();

    // We append rv to the hasher.
    let rv_coordinate_x_bytes = &rv.to_affine().x().to_bytes_be();
    let rv_coordinate_y_bytes = &rv.to_affine().y().to_bytes_be();
    hasher.update(rv_coordinate_x_bytes);
    hasher.update(rv_coordinate_y_bytes);

    // We append the message to the hasher.
    let message_bytes = message.as_bytes();
    hasher.update(message_bytes);

    // ev = H(rv || M).
    let hashed_data = hasher.finalize().to_vec();
    let ev = FE::from_bytes_be(&hashed_data).unwrap();

    // Check if H(rv || M) = H(r || M)
    ev == *e
}
Function that should use the verifier to verify the message signed sent by the signer.
examples/schnorr-signature/src/schnorr_signature.rs