【发布时间】:2021-04-25 21:37:43
【问题描述】:
CB-ACCESS-SIGN 标头是通过在 prehash 字符串时间戳 + 上使用 base64 解码的密钥创建 sha256 HMAC 生成的 方法 + requestPath + 正文(其中 + 表示字符串连接) 并对输出进行 base64 编码。时间戳值与 CB-ACCESS-TIMESTAMP 标头。
body 是请求正文字符串,如果没有请求则省略 正文(通常用于 GET 请求)。
方法应该是大写。
我从一个更好的程序员那里借来了一个签名函数,并给它提供了如下内容:
1619383731POST/reports{{"end_date":"2021-01-02T11:59:59Z","start_date":"2020-01-01T00:00:00Z","type":"account"}}
但不断从 Coinbase 获得无效签名。
签名功能供参考:
// sign
func (e *exchange) sign(msg string) string {
key, err := base64.StdEncoding.DecodeString(e.http.secret)
if e.checkErr(err) {
return "bad_sig"
}
signature := hmac.New(sha256.New, key)
_, err = signature.Write([]byte(msg))
if e.checkErr(err) {
return "bad_sig"
}
return base64.StdEncoding.EncodeToString(signature.Sum(nil))
}
我在哪里搞砸了?
【问题讨论】:
标签: go coinbase-api