開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
Programming Bitcoin: Learn How to Program Bitcoin from Scratch (Jimmy Song(著)、O'Reilly Media)のChapter 4(Serialization)、DER Signatures、Exercises 3(81)の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3 class Signature: def __init__(self, r, s): self.r = r self.s = s def __repr__(self): return f'Signature({self.r:x},{self.s:x})' def der(self): result = b'' for o in [self.r, self.s]: o = o.to_bytes(32, byteorder='big') o = o.lstrip(b'\x00') if o[0] & 0x80: o = b'\x00' + o result += bytes([2, len(o)]) + o return bytes([0x30, len(result)]) + result r = 0x37206a0610995c58074999cb9767b87af4c4978db68c06e8e6e81d282047a7c6 s = 0x8ca63739c1157ebeaec0d03cecca119fc9a75bf86d0fab5c84ac8e2738cdaec sign = Signature(r, s) print(sign.der()) print(sign.der().hex())
入出力結果(cmd(コマンドプロンプト)、Terminal、Jupyter(IPython))
C:\Users\...>py sample3.py b'0D\x02 7 j\x06\x10\x99\\X\x07I\x99\xcb\x97g\xb8z\xf4\xc4\x97\x8d\xb6\x8c\x06\xe8\xe6\xe8\x1d( G\xa7\xc6\x02 \x08\xcacs\x9c\x11W\xeb\xea\xec\r\x03\xce\xcc\xa1\x19\xfc\x9au\xbf\x86\xd0\xfa\xb5\xc8J\xc8\xe2s\x8c\xda\xec' 3044022037206a0610995c58074999cb9767b87af4c4978db68c06e8e6e81d282047a7c6022008ca63739c1157ebeaec0d03cecca119fc9a75bf86d0fab5c84ac8e2738cdaec C:\Users\...>
0 コメント:
コメントを投稿