golang
sakura.io

sakura.ioのシグネチャをGoで計算する

sakura.ioのシグネチャはハッシュ関数にSHA1を使用したHMACで計算する。Go言語では crypto/hmac , crypto/sha1 を使用することで計算できる。

import (
    "crypto/hmac"
    "crypto/sha1"
    "encoding/hex"
)

const secret string := "secret-string"

// sakura.ioのシグネチャを検証する
func calculateSignature(body []byte, signature string) bool {
    // SHA1でHMACを生成してシークレットキーを渡す
    h := hmac.New(sha1.New, []byte(secret))

    // リクエストボディのバイト列をインスタンスに書き込む
    h.Write(body)

    // `Sum()` でハッシュ値を計算する
    // シグネチャとハッシュ値が同じだったらtrueを返す
    return signature == hex.EncodeToString(h.Sum(nil))
}