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}