このシリーズも、早8回目。
すぐにあきらめて終わるだろうと思ったのだが、意外と粘り強いようだ。
粘り強いというか、粘着質というか・・・。
Bitcoinなどで使っている楕円曲線暗号の計算は、楕円曲線のグラフそのままではなく、剰余で範囲を制限した値空間になるということと、その空間ではX座標に対してY座標が正負にあるのではなく、なんだかわからないが偶数/奇数になる、ということが前回分かった。
分かったというか、分からないところも多かったので、そのまま受け入れたというところだ。
では、前回0x02と0x03が逆になったのは、それに関して何か間違っていたのではないかと思うだろう。
よって、今回はY座標の値も見てみた。
・・・偶数/奇数と0x02/0x03の関係は間違っていない。
よく考えたら、非圧縮公開鍵を圧縮公開鍵に変換するのはAPIを使っているから、そこは間違えないのだった。
なのに。。。なぜ。。。
移植元になったjavascriptのライブラリを動かしてみようとしたのだが、さっっっぱりわからん。
動かないということはわかったのだけど、何をして良いのかわからんのだ。
https://stackoverflow.com/questions/28400459/referenceerror-describe-is-not-defined-nodejs
ここにならって、npmでmochaをインストールし、`mocha` とやってみたのだが無いと怒られたので、sudo apt install npmでインストール。。。しようとしたら、404 Not Foundでインストールできず。
たいがいにしとけや、きさーん!と思ったが、こちらにもインストールの方法が載っていた。
https://qiita.com/TsutomuNakamura/items/0eb50bf7622a3906e101
npmにsudoして、-gもやってやらんといかんのか。
このディレクトリだけ動けばいいから-gをつけてないのがいかんかったか。。
そして、一番上のディレクトリで「mocha」を実行すると、何か進んだ。
よかったよかった。
。。。よくない。
ソースはいじってないのに、見たいところがピンポイントでエラーになっているではないか。
1) ecdsa
recoverPubKey
throws on Invalid i value (> 3) (Expected UInt2, got Number 4):
Error: Expected property "2" of type UInt2, got Number 4
at tfSubError (node_modules/typeforce/errors.js:93:9)
at node_modules/typeforce/index.js:159:17
at Array.every (<anonymous>)
at _tuple (node_modules/typeforce/index.js:155:20)
at typeforce (node_modules/typeforce/index.js:196:9)
at Object.recoverPubKey (src/ecdsa.js:166:3)
at test/ecdsa.js:129:17
at tryBlock (assert.js:619:5)
at innerThrows (assert.js:638:18)
at Function.throws (assert.js:662:3)
at Context.<anonymous> (test/ecdsa.js:128:16)
UInt2を期待したけど4が来た?
うーん、UInt2って書いてあると、0~65535までOKのような気がしたが、javascriptは違うんだろうか。
2がbitの2だったら、0~3というのは納得できるが、そもそもこのtestをがんばって意味があるのか。。。
最新版のbitcoinjs-libだったら、書いてあるとおりにやればよいのかもしれんが、recovery pubkeyがあるのは古いバージョンだけなのだ。
残念だが、思考が定まらんし、今回はここまでだ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。