#![cfg(test)]
use ciborium::value::Value;
use super::*;
#[path = "encoding_tests/layout.rs"]
mod layout;
#[path = "encoding_tests/refusals.rs"]
mod refusals;
const ANCHOR_KEY: [u8; 32] = [0xa1; 32];
const SIGNATURE: [u8; 64] = [0x5e; 64];
const NODE_A: [u8; 32] = [0x11; 32];
const NODE_B: [u8; 32] = [0x22; 32];
fn small(n: usize) -> u8 {
u8::try_from(n).unwrap()
}
fn expected_protected(key: &[u8; 32]) -> Vec<u8> {
let mut out = vec![
0xa4, 0x01, 0x27, 0x03, 0x78, 0x23, ];
out.extend_from_slice(b"application/vnd.lys.receipt.v1+cbor");
out.extend_from_slice(&[0x04, 0x58, 0x20]); out.extend_from_slice(key);
out.extend_from_slice(&[0x19, 0x01, 0x8b, 0x01]); out
}
fn expected_inner_proof(tree_size: u8, leaf_index: u8, nodes: &[[u8; 32]]) -> Vec<u8> {
let mut out = vec![0x83, tree_size, leaf_index]; out.push(0x80 | small(nodes.len())); for node in nodes {
out.extend_from_slice(&[0x58, 0x20]);
out.extend_from_slice(node);
}
out
}
fn expected_unprotected(tree_size: u8, leaf_index: u8, nodes: &[[u8; 32]]) -> Vec<u8> {
let proof = expected_inner_proof(tree_size, leaf_index, nodes);
let mut out = vec![
0xa1, 0x19, 0x01, 0x8c, 0xa1, 0x20, 0x81, ];
assert!(proof.len() < 256);
out.extend_from_slice(&[0x58, small(proof.len())]);
out.extend_from_slice(&proof);
out
}
fn sample() -> Vec<u8> {
artifact_bytes(&ANCHOR_KEY, 4, 1, &[NODE_A, NODE_B], &SIGNATURE)
}