Strict DER signature encoding/decoding.
Project description
Strict DER signature encoding/decoding.
See bip66.
- This module works only with two's complement numbers.
- BIP66 doesn't check that
r
ors
are fully valid.check
/decode
doesn't check thatr
ors
great than 33 bytes or that this number represent valid point on elliptic curve.encode
doesn't check thatr
/s
represent valid point on elliptic curve.
Example
import bip66
r = "29db2d5f4e1dcc04e19266cce3cb135865784c62ab653b307f0e0bb744f5c2aa"
s = "00a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844"
encoded = bip66.encode(binascii.unhexlify(r), binascii.unhexlify(s))
signature = binascii.hexlify(encoded).decode()
# > 00a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844
DER = "3044022029db2d5f4e1dcc04e19266cce3cb135865784c62ab653b307f0e0bb" \
"744f5c2aa022000a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844"
r, s = bip66.decode(binascii.unhexlify(DER))
print(binascii.hexlify(r).decode())
print(binascii.hexlify(s).decode())
# > 29db2d5f4e1dcc04e19266cce3cb135865784c62ab653b307f0e0bb744f5c2aa
# > 00a97f5826912cac8b44d9f577a26f169a2f8db781f2ddb7de2bc886e93b6844
A catch-all exception regex:
/Expected DER (integer|sequence)|(R|S) value (excessively padded|is negative)|(R|S|DER sequence) length is (zero|too short|too long|invalid)/
LICENSE MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
bip66-0.4-py3-none-any.whl
(7.9 kB
view hashes)