严格的DER签名编码/解码。
bip66的Python项目详细描述
严格的DER签名编码/解码。
见bip66。
- 此模块仅适用于two's complement数字。
- BIP66不检查
r
或s
是否完全有效。check
/decode
不会检查r
或s
是否大于33字节,或者这个数字是否表示椭圆曲线上的有效点。encode
不检查r
/s
是否表示椭圆曲线上的有效点
示例
importbip66r="29db2d5f4e1dcc04e19266cce3cb135865784c62ab653b307f0e0bb744f5c2aa"s="00a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844"encoded=bip66.encode(binascii.unhexlify(r),binascii.unhexlify(s))signature=binascii.hexlify(encoded).decode()# > 00a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844DER="3044022029db2d5f4e1dcc04e19266cce3cb135865784c62ab653b307f0e0bb" \ "744f5c2aa022000a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844"r,s=bip66.decode(binascii.unhexlify(DER))print(binascii.hexlify(r).decode())print(binascii.hexlify(s).decode())# > 29db2d5f4e1dcc04e19266cce3cb135865784c62ab653b307f0e0bb744f5c2aa# > 00a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844
全捕获异常正则表达式:
/ExpectedDER(integer|sequence)|(R|S)value(excessivelypadded|isnegative)|(R|S|DERsequence)lengthis(zero|tooshort|toolong|invalid)/