Handle multiple zero-bytes on signatures
This commit is contained in:
parent
c287e1dae7
commit
3fb5745f98
@ -40,10 +40,17 @@ class ReferenceSigner(Signer):
|
||||
tx.v = v.to_bytes(int(byts), 'big')
|
||||
tx.r = z[:32]
|
||||
tx.s = z[32:64]
|
||||
if tx.r[0] == 0:
|
||||
tx.r = tx.r[1:]
|
||||
if tx.s[0] == 0:
|
||||
tx.s = tx.s[1:]
|
||||
|
||||
for i in range(len(tx.r)):
|
||||
if tx.r[i] > 0:
|
||||
tx.r = tx.r[i:]
|
||||
break
|
||||
|
||||
for i in range(len(tx.s)):
|
||||
if tx.s[i] > 0:
|
||||
tx.s = tx.s[i:]
|
||||
break
|
||||
|
||||
return z
|
||||
|
||||
|
||||
|
@ -78,7 +78,7 @@ class EIP155Transaction:
|
||||
self.sender = strip_hex_prefix(tx['from'])
|
||||
|
||||
|
||||
def rlp_serialize(self):
|
||||
def __canonical_order(self):
|
||||
s = [
|
||||
self.nonce,
|
||||
self.gas_price,
|
||||
@ -90,8 +90,22 @@ class EIP155Transaction:
|
||||
self.r,
|
||||
self.s,
|
||||
]
|
||||
|
||||
return s
|
||||
|
||||
def bytes_serialize(self):
|
||||
s = self.__canonical_order()
|
||||
b = b''
|
||||
for e in s:
|
||||
b += e
|
||||
return b
|
||||
|
||||
|
||||
def rlp_serialize(self):
|
||||
s = self.__canonical_order()
|
||||
return rlp_encode(s)
|
||||
|
||||
|
||||
def serialize(self):
|
||||
tx = {
|
||||
'nonce': add_hex_prefix(self.nonce.hex()),
|
||||
|
Loading…
Reference in New Issue
Block a user