fix #4360
This commit is contained in:
@@ -944,6 +944,8 @@ def xpub_header(xtype, *, net=None):
|
|||||||
|
|
||||||
def serialize_xprv(xtype, c, k, depth=0, fingerprint=b'\x00'*4,
|
def serialize_xprv(xtype, c, k, depth=0, fingerprint=b'\x00'*4,
|
||||||
child_number=b'\x00'*4, *, net=None):
|
child_number=b'\x00'*4, *, net=None):
|
||||||
|
if not (0 < string_to_number(k) < SECP256k1.order):
|
||||||
|
raise BitcoinException('Impossible xprv (not within curve order)')
|
||||||
xprv = xprv_header(xtype, net=net) \
|
xprv = xprv_header(xtype, net=net) \
|
||||||
+ bytes([depth]) + fingerprint + child_number + c + bytes([0]) + k
|
+ bytes([depth]) + fingerprint + child_number + c + bytes([0]) + k
|
||||||
return EncodeBase58Check(xprv)
|
return EncodeBase58Check(xprv)
|
||||||
@@ -975,6 +977,8 @@ def deserialize_xkey(xkey, prv, *, net=None):
|
|||||||
xtype = list(headers.keys())[list(headers.values()).index(header)]
|
xtype = list(headers.keys())[list(headers.values()).index(header)]
|
||||||
n = 33 if prv else 32
|
n = 33 if prv else 32
|
||||||
K_or_k = xkey[13+n:]
|
K_or_k = xkey[13+n:]
|
||||||
|
if prv and not (0 < string_to_number(K_or_k) < SECP256k1.order):
|
||||||
|
raise BitcoinException('Impossible xprv (not within curve order)')
|
||||||
return xtype, depth, fingerprint, child_number, c, K_or_k
|
return xtype, depth, fingerprint, child_number, c, K_or_k
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user