use crate::ast::*;
use alloc::vec::Vec;
pub fn build_ipsec_ah_payload(spec: &AhSpec, payload: &[u8]) -> (Vec<u8>, u8) {
let spi = spec.spi.unwrap_or(0x2000);
let seq = spec.seq.unwrap_or(1);
let next_hdr = spec.next_header.unwrap_or(59);
let mut ah = Vec::with_capacity(24 + payload.len());
ah.push(next_hdr);
ah.push(4); ah.extend_from_slice(&[0, 0]); ah.extend_from_slice(&spi.to_be_bytes());
ah.extend_from_slice(&seq.to_be_bytes());
if let Some(ref icv) = spec.icv {
ah.extend_from_slice(icv);
} else {
ah.extend_from_slice(&[0u8; 12]); }
ah.extend_from_slice(payload);
(ah, 51)
}