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))
}
