lys-core 0.3.1

Domain-agnostic cryptographic trust primitives — certificate authority, Merkle transparency log, signed attestations, sealed envelopes, and Ed25519 key management.
Documentation
#![cfg(test)]

use super::*;
use serde::Serialize;

#[derive(Serialize)]
struct Sample {
    id: u32,
    label: String,
}

#[test]
fn serialize_leaf_is_deterministic_for_identical_inputs() {
    let a = Sample {
        id: 7,
        label: "alpha".to_string(),
    };
    let b = Sample {
        id: 7,
        label: "alpha".to_string(),
    };
    let bytes_a = serialize_leaf(&a).unwrap();
    let bytes_b = serialize_leaf(&b).unwrap();
    assert_eq!(bytes_a.as_bytes(), bytes_b.as_bytes());
}

#[test]
fn serialize_leaf_differs_between_distinct_inputs() {
    let a = Sample {
        id: 7,
        label: "alpha".to_string(),
    };
    let c = Sample {
        id: 8,
        label: "alpha".to_string(),
    };
    let bytes_a = serialize_leaf(&a).unwrap();
    let bytes_c = serialize_leaf(&c).unwrap();
    assert_ne!(bytes_a.as_bytes(), bytes_c.as_bytes());
}

#[test]
fn serialized_leaf_exposes_bytes_through_as_ref() {
    let leaf = serialize_leaf(&123u64).unwrap();
    let as_ref: &[u8] = leaf.as_ref();
    assert_eq!(as_ref, leaf.as_bytes());
}