package tencentrtc import ( "crypto/hmac" "crypto/sha256" "encoding/base64" "strings" ) const ( // CallbackHeaderSign 是腾讯 RTC 事件回调携带的签名 header。 CallbackHeaderSign = "Sign" // CallbackHeaderSDKAppID 是腾讯 RTC 事件回调携带的应用 ID header。 CallbackHeaderSDKAppID = "SdkAppId" ) // VerifyCallbackSignature 校验腾讯 RTC 事件回调签名。 func VerifyCallbackSignature(key string, body []byte, sign string) bool { key = strings.TrimSpace(key) sign = strings.TrimSpace(sign) if key == "" || sign == "" { // 回调入口必须 fail-closed;没有 key 或签名都不能进入房间命令链路。 return false } mac := hmac.New(sha256.New, []byte(key)) _, _ = mac.Write(body) expected := base64.StdEncoding.EncodeToString(mac.Sum(nil)) return hmac.Equal([]byte(expected), []byte(sign)) }