api_signature/
helpers.rs

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}