根据Coinbase pro API文档:
CB-ACCESS-SIGN 标头是通过使用预哈希字符串时间戳 + 方法 + requestPath + 正文(其中 + 表示字符串串联)上的 base64 解码密钥创建 sha256 HMAC 并对输出进行 base64 编码而生成的。时间戳值与 CB-ACCESS-TIMESTAMP 标头相同。
正文是请求正文字符串,如果没有请求正文,则省略(通常用于 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))
}
我在哪里搞砸了?
LEATH
白衣非少年
相关分类