in src/aes128gcm.rs [189:207]
fn read_from(input: &'a [u8]) -> Result<Header<'a>> {
if input.len() < ECE_AES128GCM_HEADER_LENGTH {
return Err(Error::HeaderTooShort);
}
let keyid_len = input[ECE_AES128GCM_HEADER_LENGTH - 1] as usize;
if input.len() < ECE_AES128GCM_HEADER_LENGTH + keyid_len {
return Err(Error::HeaderTooShort);
}
let salt = &input[0..ECE_SALT_LENGTH];
let rs = BigEndian::read_u32(&input[ECE_SALT_LENGTH..]);
if rs < ECE_AES128GCM_MIN_RS {
return Err(Error::InvalidRecordSize);
}
let keyid = &input[ECE_AES128GCM_HEADER_LENGTH..ECE_AES128GCM_HEADER_LENGTH + keyid_len];
Ok(Header { salt, rs, keyid })
}