pdc_rs/
pad.rs

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}