bitoku_sdk_agent/
helper.rs

1use crate::consts::*;
2
3pub fn validate_name(name: &[u8]) -> bool {
4    if name.len() > MAX_SIZE as usize {
5        return false;
6    }
7    let non_zero_bytes: Vec<u8> = name.iter().take_while(|&b| *b != 0).copied().collect();
8
9    for b in non_zero_bytes {
10        if !(b >= b'a' && b <= b'z')
11            && !(b >= b'A' && b <= b'Z')
12            && !(b >= b'0' && b <= b'9')
13            && !(b == b'.' || b == b'/' || b == b'_' || b == b'+' || b == b'-')
14        {
15            return false;
16        }
17    }
18    true
19}
20
21pub fn addel(arr: &mut [u8; 32], element: u8) {
22    let byte_index = element / 8;
23    let bit_offset = element % 8;
24    arr[byte_index as usize] |= 1 << bit_offset;
25}
26
27pub fn isel(arr: [u8; 32], element: u8) -> bool {
28    let byte_index = element / 8;
29    let bit_offset = element % 8;
30    let value = (arr[byte_index as usize] >> bit_offset) & 1;
31
32    if value == 1 {
33        return true;
34    }
35    false
36}
37
38pub fn delel(arr: &mut [u8; 32], element: u8) {
39    let byte_index = element / 8;
40    let bit_offset = element % 8;
41    arr[byte_index as usize] &= !(1 << bit_offset);
42}