use crate::providers::aes_gcm_siv::Aes256GcmSivProvider;
use crate::frame::Frame;
use crate::aead_policy::{AAD, RecordType, Role, Flags};
pub fn seal_data_record(key: &[u8;32], session_id: [u8;16], subchannel: u32, seq: u64, payload: &[u8], fin: bool, role: Role) -> Vec<u8> {
let flags = if fin { Flags::FIN } else { Flags::empty() };
let aad = AAD { version: 1, role, record_type: RecordType::Data, subchannel, seq, flags, session_id, capabilities_hash16: None };
Frame::seal(&Aes256GcmSivProvider, key, &aad, payload).expect("seal data")
}
pub fn open_data_record(key: &[u8;32], session_id: [u8;16], subchannel: u32, seq: u64, flags: Flags, ct: &[u8], role: Role) -> Option<Vec<u8>> {
let aad = AAD { version: 1, role, record_type: RecordType::Data, subchannel, seq, flags, session_id, capabilities_hash16: None };
Frame::open(&Aes256GcmSivProvider, key, &aad, ct).ok()
}