スマートウォッチPebbleで動作する仮想通貨の自動取引ソフトを作成しようと考えています。

Zaif APIを使って現物公開APIを使用するところまで作成しましたが、取引のためにHMAC-SHA512で署名するやり方がわかりません。なるべくライブラリを使わず、生のJavascriptのみで動作する方法を教えてください。

http://techbureau-api-document.readthedocs.io/ja/latest/trade/1_common.html

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2018/03/13 21:25:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kaoato No.1

回答回数236ベストアンサー獲得回数86

ポイント500pt

jsSHA - SHA Hashes in JavaScript
https://caligatio.github.io/jsSHA/

中身は難読化?されてるけど、
生のJavascriptのみで実現されてるようにみえるので、
これを参考にすればどうでしょうか?


難読化?を少し読みやすく変換しても、500行程度です。

id:Red-Comet

それは以前見つけたのですが、すごく難しそうなので見なかったことにしていました(^^;)
500行ぐらいで実装できそうですか!?
KeyとSignを引き渡すだけでポロッと出てくるといいんですが……。

2018/03/07 22:36:13
id:kaoato

>500行ぐらいで実装できそうですか!?

ライブラリを参考にして、自分で同じロジックを組む場合。
ライブラリをそのまま使うなら、たぶん数行なのでは?

>KeyとSignを引き渡すだけでポロッと出てくるといいんですが……。

https://caligatio.github.io/jsSHA/

そのあたりの処理わかりませんが、デモ画面のHMAC Demoで実現できるんじゃないですか?

で、デモ画面のソースをみると

function calcHMAC() {
try {
var hmacText = document.getElementById("hmacInputText");
var hmacTextType = document.getElementById("hmacTextType");
var hmacKeyInput = document.getElementById("hmacInputKey");
var hmacKeyInputType = document.getElementById("hmacKeyType");
var hmacVariant = document.getElementById("hmacVariant");
var hmacOutputType = document.getElementById("hmacOutputType");
var hmacOutput = document.getElementById("hmacOutputText");
var hmacObj = new jsSHA(
hmacVariant.options[hmacVariant.selectedIndex].value,
hmacTextType.options[hmacTextType.selectedIndex].value
);
hmacObj.setHMACKey(
hmacKeyInput.value,
hmacKeyInputType.options[hmacKeyInputType.selectedIndex].value
);
hmacObj.update(hmacText.value);

hmacOutput.value = hmacObj.getHMAC(hmacOutputType.options[hmacOutputType.selectedIndex].value);
} catch(e) {
hmacOutput.value = e.message
}
}


こんな感じになってるかと思います。

jsSHAというのがライブラリのクラスだと思います。

hmacObj.setHMACKeyでキーの設定?
hmacObj.updateでSign?の設定

hmacObj.getHMACで結果を取り出しているのでは?

2018/03/08 01:11:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません