1use crate::error::Error;
5
6#[inline]
8pub(crate) fn require_exact_len(data: &[u8], expected: usize, code: u8) -> Result<(), Error> {
9 if data.len() != expected {
10 return Err(Error::PayloadLength {
11 code,
12 expected,
13 got: data.len(),
14 });
15 }
16 Ok(())
17}
18
19#[inline]
22pub(crate) fn require_at_least(data: &[u8], min: usize, code: u8) -> Result<(), Error> {
23 if data.len() < min {
24 return Err(Error::PayloadTooShort {
25 code,
26 min,
27 got: data.len(),
28 });
29 }
30 Ok(())
31}
32
33#[inline]
37pub(crate) fn require_positive_multiple_of(
38 data: &[u8],
39 block: usize,
40 code: u8,
41) -> Result<(), Error> {
42 if data.is_empty() || data.len() % block != 0 {
43 return Err(Error::PayloadNotMultiple {
44 code,
45 block,
46 got: data.len(),
47 });
48 }
49 Ok(())
50}
51
52#[inline]
55pub(crate) fn require_multiple_of(data: &[u8], block: usize, code: u8) -> Result<(), Error> {
56 if data.len() % block != 0 {
57 return Err(Error::PayloadNotMultiple {
58 code,
59 block,
60 got: data.len(),
61 });
62 }
63 Ok(())
64}