tencentcloud_sdk_rs/
encryption.rs1use hex;
2use hmac::{Hmac, Mac};
3use sha2::Sha256;
4use sha256::digest;
5use std::convert::TryInto;
6
7pub fn hmac_sha256_hex(message: &[u8], key: &[u8]) -> String {
8 type HmacSha256 = Hmac<Sha256>;
9 let mut mac = HmacSha256::new_from_slice(key).expect("HMAC can take key of any size");
10 mac.update(message);
11 let result = mac.finalize();
12 let code_bytes = result.into_bytes();
13 let code_slice = code_bytes.as_slice();
14 hex::encode(code_slice)
15}
16
17pub fn hmac_sha256(message: &[u8], key: &[u8]) -> [u8; 32] {
18 type HmacSha256 = Hmac<Sha256>;
19 let mut mac = HmacSha256::new_from_slice(key).expect("HMAC can take key of any size");
20 mac.update(message);
21 let result = mac.finalize();
22
23 let code_bytes = result.into_bytes();
24 let code_slice = code_bytes.as_slice();
25 code_slice.try_into().expect("slice with incorrect length")
26}
27
28pub fn sha256_hex(str: &str) -> String {
29 let val = digest(str);
30 hex::encode(&val).to_lowercase()
31}