wx-sdk 0.0.9

A Wechat SDK written in Rust
Documentation
use serde_derive::Deserialize;
use sha1::{Digest, Sha1};

#[derive(Debug, Deserialize)]
pub struct Signature {
    signature: String,
    data: Vec<String>,
}

impl Signature {
    pub fn new<S: AsRef<str>>(signature: S, input: Vec<String>) -> Self {
        Signature {
            signature: signature.as_ref().to_owned(),
            data: input,
        }
    }
    pub fn is_ok(&self) -> bool {
        let mut arr = self.data.clone();
        arr.sort();
        let str = arr.join("");

        let mut hasher = Sha1::new();
        hasher.update(str);
        let result = hasher.finalize();
        format!("{:x}", result) == self.signature
    }

    pub fn generate_signature(input: Vec<String>) -> String {
        let mut input = input;
        input.sort();
        let str = input.join("");

        let mut hasher = Sha1::new();
        hasher.update(str);
        let result = hasher.finalize();
        format!("{:x}", result)
    }
}