
◇ feとuint256
楕円曲線暗号を把握するにはsecp256k1ライブラリの基本型となるfeをおさえましょう。feを組み合わせて例えば楕円の線分上にfeが存在するのか否かの基本的な処理や 各変換処理が実装されておりました。
ということでfeを処理するためのuint256のサンプルからみていきます。ところで以下のサンプルコード。何の変哲もないuint256の処理になっているとみせかけて一か所feの力がないと処理できないものが含まれております。それは……積の演算です。uint256ライブラリに積の演算は含まれておりません。加法と減法のみです。よってfeの力をお借りします。
◇ サンプルコード
uint256 hash = 0; hash += uint256(12345678); // 和です。 hash += uint256("0x00002046b1c7938971a6089c7105fc15907b8f27ac8dfea9896c27c593a9a966"); uint256 u1("0x1234567"); u1 *= hash; // 積です。 ::fprintf(stdout, "uint256 mul 0x%s\n", u1.ToString().c_str());