hotgo/server/internal/library/network/tcp/sign.go

42 lines
779 B
Go

package tcp
import (
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/util/gconv"
"hotgo/internal/model/input/msgin"
)
type Sign interface {
SetSign(traceID, appId, secretKey string)
}
// SetSign 设置签名
func SetSign(data interface{}, traceID, appId, secretKey string) {
if c, ok := data.(Sign); ok {
c.SetSign(traceID, appId, secretKey)
return
}
}
// VerifySign 验证签名
func VerifySign(data interface{}, appId, secretKey string) (err error) {
// 无密钥,无需签名
if secretKey == "" {
return
}
var in *msgin.Request
if err = gconv.Scan(data, &in); err != nil {
return
}
if appId != in.AppId {
return gerror.New("appId invalid")
}
if in.Sign != in.GetSign(secretKey) {
return gerror.New("sign invalid")
}
return
}