immutable-trace 0.1.7

Tamper-evident immutable audit trace: signing, verification, ingestion and CLI
Documentation
use ed25519_dalek::SigningKey;

use crate::crypto::{compute_payload_hash, sign_payload_hash};
use crate::record::{AuditRecord, Hash32};

pub fn build_signed_record(
    device_id: impl Into<String>,
    sequence: u64,
    timestamp_ms: u64,
    payload: &[u8],
    prev_record_hash: Hash32,
    object_ref: impl Into<String>,
    signing_key: &SigningKey,
) -> AuditRecord {
    let payload_hash = compute_payload_hash(payload);
    let signature = sign_payload_hash(signing_key, &payload_hash);

    AuditRecord {
        device_id: device_id.into(),
        sequence,
        timestamp_ms,
        payload_hash,
        signature,
        prev_record_hash,
        object_ref: object_ref.into(),
    }
}