diff --git a/core/lib/src/parser/signature.rs b/core/lib/src/parser/signature.rs index 8582da01..efd780d4 100644 --- a/core/lib/src/parser/signature.rs +++ b/core/lib/src/parser/signature.rs @@ -31,13 +31,13 @@ use sha2::Sha256; /// // NG /// } /// ``` -pub fn validate_signature(channel_secret: String, signature: String, body: String) -> bool { +pub fn validate_signature(channel_secret: &str, signature: &str, body: &str) -> bool { type HmacSha256 = Hmac; let mut mac = HmacSha256::new_from_slice(channel_secret.as_bytes()) .expect("HMAC can take key of any size"); mac.update(body.as_bytes()); let mut buf = String::new(); - general_purpose::STANDARD.encode_string(&mac.finalize().into_bytes().to_vec(), &mut buf); + general_purpose::STANDARD.encode_string(mac.finalize().into_bytes(), &mut buf); buf == signature } diff --git a/examples/actix_web_example/src/main.rs b/examples/actix_web_example/src/main.rs index 350bdefa..57b79ccc 100644 --- a/examples/actix_web_example/src/main.rs +++ b/examples/actix_web_example/src/main.rs @@ -26,7 +26,7 @@ async fn callback(signature: Signature, bytes: web::Bytes) -> Result (Status, &'static str) { println!("{signature:#?}"); println!("{body:#?}"); - if !validate_signature(channel_secret.to_string(), signature.key, body.clone()) { + if !validate_signature(channel_secret, &signature.key, &body) { return (Status::BadRequest, "x-line-signature is invalid."); }