1use hmac::Mac;
2use sha2::{Digest, Sha256, Sha512};
3
4type HmacSha512 = hmac::Hmac<sha2::Sha512>;
5type HmacSha256 = hmac::Hmac<sha2::Sha256>;
6
7pub fn sha256(value: &Vec<u8>) -> Vec<u8> {
8 let mut hasher = Sha256::new();
9 hasher.update(value);
10 hasher.finalize().as_slice().to_vec()
11}
12
13pub fn sha512(value: &Vec<u8>) -> Vec<u8> {
14 let mut hasher = Sha512::new();
15 hasher.update(value);
16 hasher.finalize().as_slice().to_vec()
17}
18
19pub fn hmac_sha512(enc_key: &Vec<u8>, value: &Vec<u8>) -> Vec<u8> {
20 let mut mac =
21 HmacSha512::new_from_slice(enc_key.as_slice()).expect("HMAC can take key of any size");
22 mac.update(value.as_slice());
23 mac.finalize().into_bytes().to_vec()
24}
25
26pub fn hmac_sha256(enc_key: &Vec<u8>, value: &Vec<u8>) -> Vec<u8> {
27 let mut mac =
28 HmacSha256::new_from_slice(enc_key.as_slice()).expect("HMAC can take key of any size");
29 mac.update(value.as_slice());
30 mac.finalize().into_bytes().to_vec()
31}
32
33pub fn base64decode(value: &Vec<u8>) -> Vec<u8> {
34 base64::decode(value).unwrap_or(Vec::new())
35}
36pub fn base64encode(value: &Vec<u8>) -> Vec<u8> {
37 base64::encode(value).as_bytes().to_vec()
38}
39
40pub fn base58decode(value: &Vec<u8>) -> Vec<u8> {
41 bs58::decode(value).into_vec().unwrap_or(Vec::new())
42}
43pub fn base58encode(value: &Vec<u8>) -> Vec<u8> {
44 bs58::encode(value).into_string().as_bytes().to_vec()
45}