1
大きな整数(つまり、ECDSA signature r and s)をDERでエンコードしてデコードできるGoogle Goアプリケーションを作成したいと考えています。私が理解しているところでは、asn1 packageを使用するべきですが、どの機能を呼び出すべきですか?例えばGo、DER、大きな整数を扱う
、私はこれを取得する
316eb3cad8b66fcf1494a6e6f9542c3555addbf337f04b62bf4758483fdc881d
と
bf46d26cef45d998a2cb5d2d0b8342d70973fa7c3c37ae72234696524b2bc812
をエンコードしたい:
30450220316eb3cad8b66fcf1494a6e6f9542c3555addbf337f04b62bf4758483fdc881d022100bf46d26cef45d998a2cb5d2d0b8342d70973fa7c3c37ae72234696524b2bc81201
およびその逆を。エンコーディングのためにどの関数を呼び出す必要がありますか。
ECDSA-Sig-Value ::= SEQUENCE {
r INTEGER,
s INTEGER }
私が行くの開発者が、ドキュメントの元帥に応じていないですので注意してくださいと非整列化機能が受け入れるようだ:次のように
うーん、符号化されたメッセージは、末尾に01バイトを欠いているように見えます。 – ThePiachu
本当に、あなたは正しいです。私はこの最終的な "01"に気づきませんでしたが、これは正しいASN.1 DERエンコーディングとは思われません。エンコードされたメッセージは「0x30 0x45」で始まります。0x30はユニバーサルタグSEQUENCEで、0x45はシーケンスの長さです(タグと長さは除外されます)。シーケンス内の69バイト(10進数では0x45)を読み取ると、すべてのデータが得られますが、最後の「01」は取得されます。 – Jcs
ええ、それはエンコーディングが使用されている実装固有のバイトかもしれません。既にここでそれについて議論しています - http://bitcoin.stackexchange.com/questions/2376/ecdsa-rs-encoding-as-a-signature – ThePiachu