1pub fn bytes_to_u64(bytes: &[u8]) -> u64 {
2 if bytes.len() != 8 {
3 return 0;
4 }
5
6 let mut buf = [0u8; 8];
7 buf[0] = bytes[0];
8 buf[1] = bytes[1];
9 buf[2] = bytes[2];
10 buf[3] = bytes[3];
11 buf[4] = bytes[4];
12 buf[5] = bytes[5];
13 buf[6] = bytes[6];
14 buf[7] = bytes[7];
15
16 return u64::from_be_bytes(buf);
17}
18
19pub fn pad_data(data: &mut Vec<u8>) -> Vec<u8> {
20 let mut padded_data: Vec<u8> = Vec::new();
21 padded_data.append(&mut (data.len() as u64).to_be_bytes().to_vec());
22 padded_data.append(data);
23
24 let pad = 16 - padded_data.len() % 16;
25 if pad != 16 {
26 for i in 0..pad {
27 padded_data.push(i as u8);
28 }
29 }
30
31 return padded_data;
32}
33
34pub fn unpad_data(data: &mut Vec<u8>) -> Vec<u8> {
35 let unpadded_length = bytes_to_u64(&data[0..8]) as usize;
36 return data[8..unpadded_length + 8].to_vec();
37}