Skip to main content

immutable_trace/
crypto.rs

1use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey};
2
3use crate::record::{Hash32, Signature64};
4
5pub fn compute_payload_hash(payload: &[u8]) -> Hash32 {
6    *blake3::hash(payload).as_bytes()
7}
8
9pub fn sign_payload_hash(signing_key: &SigningKey, payload_hash: &Hash32) -> Signature64 {
10    signing_key.sign(payload_hash).to_bytes()
11}
12
13pub fn verify_payload_signature(
14    verifying_key: &VerifyingKey,
15    payload_hash: &Hash32,
16    signature: &Signature64,
17) -> bool {
18    let parsed = Signature::from_bytes(signature);
19    verifying_key.verify(payload_hash, &parsed).is_ok()
20}