bitoku_sdk_agent/
helper.rs1use 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}