#![forbid(unsafe_code)]
use qs_format::{QSig, Signer, Transparency};
use serde_bytes::ByteBuf;
#[test]
fn claims_cbor_bytes_roundtrip_is_stable() {
let claims_bytes = {
let mut buf = Vec::new();
let claims = [1u8, 2u8, 3u8];
ciborium::ser::into_writer(&claims, &mut buf).unwrap();
buf
};
let qsig = QSig {
version: 1,
alg: "mldsa-87".into(),
digest: vec![0xAA; 32],
sig: vec![0xBB; 2424],
co_sig: vec![ByteBuf::from(vec![0xCC; 16])],
tst: None,
tlog: Some(Transparency {
root: vec![0xDD; 32],
proof: vec![0xEE; 32],
}),
signer: Signer {
kid: "kid-1234".into(),
claims: claims_bytes.clone(),
},
time_unix: 1_700_000_000,
domain_sep: "quantum-sign-v1".into(),
meta: Some(ByteBuf::from(vec![0x01, 0x02])),
};
let encoded1 = {
let mut buf = Vec::new();
ciborium::ser::into_writer(&qsig, &mut buf).unwrap();
buf
};
let decoded: QSig = ciborium::de::from_reader(encoded1.as_slice()).unwrap();
let encoded2 = {
let mut buf = Vec::new();
ciborium::ser::into_writer(&decoded, &mut buf).unwrap();
buf
};
assert_eq!(encoded1, encoded2);
assert_eq!(decoded.signer.claims, claims_bytes);
}