#![allow(missing_docs)]
use wolfcose::{Algorithm, CoseKeyBuilder, Encrypt0Builder, Mac0Builder, PayloadMode};
fn main() -> wolfcose::Result<()> {
let enc_key = CoseKeyBuilder::symmetric([0x11u8; 16])
.algorithm(Algorithm::A128GCM)
.kid(b"enc-key")
.build()?;
let mac_key = CoseKeyBuilder::symmetric([0x22u8; 32])
.algorithm(Algorithm::HMAC256)
.kid(b"mac-key")
.build()?;
let iv = [0x33u8; 12];
let encrypted = Encrypt0Builder::new()
.key(&enc_key)
.algorithm(Algorithm::A128GCM)
.iv(&iv)
.payload(PayloadMode::Attached(b"configuration"))
.encrypt_to_vec()?;
let mac = Mac0Builder::new()
.key(&mac_key)
.algorithm(Algorithm::HMAC256)
.kid(b"mac-key")
.payload(PayloadMode::Attached(&encrypted))
.mac_to_vec()?;
println!("encrypt0={} mac0={}", encrypted.len(), mac.len());
Ok(())
}