telepass 1.1.1

Telegram Mini App init data validation and parsing
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
use hmac::{Hmac, KeyInit, Mac};
use sha2::Sha256;

pub fn sign(data: &str, token: &str) -> String {
    type HmacSha256 = Hmac<Sha256>;
    let mut mac = HmacSha256::new_from_slice(b"WebAppData").unwrap();
    mac.update(token.as_bytes());
    let secret = mac.finalize().into_bytes();
    let mut mac2 = HmacSha256::new_from_slice(&secret).unwrap();
    mac2.update(data.as_bytes());
    hex::encode(mac2.finalize().into_bytes())
}