cyware_convert/encoding/
base32hex.rs1use data_encoding::BASE32HEX;
2#[cfg(target_family = "wasm")]
3use serde::{Deserialize, Serialize};
4
5use crate::Operation;
6use crate::OperationError;
7
8#[derive(Clone, Copy)]
9#[cfg_attr(target_family = "wasm", derive(Serialize, Deserialize))]
10pub struct Base32HexDecode {}
11
12impl Operation for Base32HexDecode {
13 fn execute(&self, input: &[u8]) -> Result<Vec<u8>, OperationError> {
14 BASE32HEX
15 .decode(input)
16 .map_err(|_| OperationError::DecodeError("Invalid base64 input".to_string()))
17 }
18}
19
20impl Base32HexDecode {
21 pub const fn new() -> Self {
22 Base32HexDecode {}
23 }
24}
25
26#[derive(Clone)]
27#[cfg_attr(target_family = "wasm", derive(Serialize, Deserialize))]
28pub struct Base32HexEncode {}
29
30impl Operation for Base32HexEncode {
31 fn execute(&self, input: &[u8]) -> Result<Vec<u8>, OperationError> {
32 Ok(BASE32HEX.encode(input).into())
33 }
34}
35
36impl Base32HexEncode {
37 pub const fn new() -> Self {
38 Base32HexEncode {}
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn base64_decode() {
48 let encoder = Base32HexDecode::new();
49 let actual = encoder.execute("CDGMIP3F".as_bytes()).unwrap();
50 let expected = "caido".as_bytes().to_vec();
51 assert_eq!(actual, expected);
52 }
53
54 #[test]
55 fn base64_encode() {
56 let encoder = Base32HexEncode::new();
57 let actual = encoder.execute("caido".as_bytes()).unwrap();
58 let expected = "CDGMIP3F".as_bytes().to_vec();
59 assert_eq!(actual, expected);
60 }
61}