2017-01-23 18 views
0

私は署名の問題を持つ唯一の人ではないので、他の投稿を検索しました。私はいくつかの言語で試してみましたが、私はいつも同じ問題があります。Coinbase.com無効な署名

私はcoinbase.comとAPI認証と間違って何をやっている:GOで

# normally I fetch the timestamp from https://api.coinbase.com/v2/time 
TIMESTAMP=$(date +%s) 
SIG=$(echo -n "${TIMESTAMP}GET/v2/accounts" | hmac256 --stdkey $COINBASE_SECRET) 

curl https://api.coinbase.com/v2/accounts \ 
    --header "CB-ACCESS-KEY: $COINBASE_KEY" \ 
    --header "CB-ACCESS-SIGN: $SIG" \ 
    --header "CB-ACCESS-TIMESTAMP: $TIMESTAMP" \ 
    --header "CB-VERSION: 2016-03-08" 

私のような何かをしようとしています:

nonce := strconv.FormatInt(int64(time.Data.Epoch), 10) 
message := nonce + req.Method + endpoint // endpoint "/v2/accounts" 
req.Header.Set("CB-ACCESS-KEY", a.Key) 
h := hmac.New(sha256.New, []byte(a.Secret)) 
h.Write([]byte(message)) 

signature := hex.EncodeToString(h.Sum(nil)) 

req.Header.Set("CB-ACCESS-SIGN", signature) 
req.Header.Set("CB-ACCESS-TIMESTAMP", nonce) 
req.Header.Set("CB-VERSION", "2016-03-08") 

をまた、それはサンドボックスがノーであることを縫い目api.sandbox.coinbase.comはご利用いただけません。

種類はbashのため

+0

時間を使用する()。Unix()以上、[ライブラリ](https://developers.coinbase.com/docs/wallet/client-libraries)を使用してください。 – Mark

+0

@上記のgolangライブラリは古くなっていますまだv1を使用しています – zio

答えて

0

について/問題カール私はechoで使用するHMACツールでした。カールのリクエストで私のために働い以下:

SIG=$(echo -n "${TIMESTAMP}GET/v2/accounts" | openssl dgst -sha256 -hmac "$COINBASE_SECRET" |cut -d' ' -f2); 

golangに関しては、私は、ハッシュ合計を比較し、何かが、私が使用している現在のライブラリと魚であるという結論に達しました。

私は自分でライブラリを書いています(https://github.com/Zauberstuhl/go-coinbase)、今は魅力的です。 最終的なエンコーディングにSprintfを使用している点を除いて、私は上記と同じようにしていますが、それは同じでなければなりません。

ありがとうございました!

関連する問題