Skip to main content

immutable_trace/
agent.rs

1use ed25519_dalek::SigningKey;
2
3use crate::crypto::{compute_payload_hash, sign_payload_hash};
4use crate::record::{AuditRecord, Hash32};
5
6pub fn build_signed_record(
7    device_id: impl Into<String>,
8    sequence: u64,
9    timestamp_ms: u64,
10    payload: &[u8],
11    prev_record_hash: Hash32,
12    object_ref: impl Into<String>,
13    signing_key: &SigningKey,
14) -> AuditRecord {
15    let payload_hash = compute_payload_hash(payload);
16    let signature = sign_payload_hash(signing_key, &payload_hash);
17
18    AuditRecord {
19        device_id: device_id.into(),
20        sequence,
21        timestamp_ms,
22        payload_hash,
23        signature,
24        prev_record_hash,
25        object_ref: object_ref.into(),
26    }
27}