[][src]Module cddl_cat::cbor

This module implements validation from serde_cbor::Value.

Examples

use cddl_cat::validate_cbor_bytes;
use serde::Serialize;

#[derive(Serialize)]
struct PersonStruct {
    name: String,
    age: u32,
}

let input = PersonStruct {
    name: "Bob".to_string(),
    age: 43,
};
let cbor_bytes = serde_cbor::to_vec(&input).unwrap();
let cddl_input = "person = {name: tstr, age: int}";

validate_cbor_bytes("person", cddl_input, &cbor_bytes).unwrap();

If the caller wants to reuse the parsed CDDL IVT, replace validate_cbor_bytes(...) with:

use cddl_cat::{cbor::validate_cbor, context::BasicContext, flatten::flatten_from_str};

// Parse the CDDL text and flatten it into IVT form.
let flat_cddl = flatten_from_str(cddl_input).unwrap();
// Create a Context object to store the IVT
let ctx = BasicContext::new(flat_cddl);
// Look up the Rule we want to validate.
let rule_node = ctx.rules.get("person").unwrap();
// Deserialize the CBOR bytes
let cbor_value = serde_cbor::from_slice(&cbor_bytes).unwrap();
// Perform the validation.
validate_cbor(&rule_node, &cbor_value, &ctx).unwrap();

Functions

validate_cbor

Validate already-parsed CBOR data against an already-parsed CDDL schema.

validate_cbor_bytes

Validate CBOR-encoded data against a specified rule in a UTF-8 CDDL schema.