Skip to content

Commit

Permalink
GH-3406 another attempt to fix crash
Browse files Browse the repository at this point in the history
Potential reason: crash in arithmetic operations
  • Loading branch information
DmitryBespalov committed May 31, 2024
1 parent ced3b19 commit 4c70747
Showing 1 changed file with 6 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,19 +113,19 @@ extension SECP256K1.UnmarshaledSignature {
let vBytes = [UInt8](data.suffix(from: 64).prefix(8))
let vInt = UInt64(vBytes)
// recover V by deducting (chainId * 2 + 35) according to EIP-155
let vRecovered = vInt - (chainIdInt * 2 + 35)
v = try! UInt8(vRecovered % 256)
let vRecovered = vInt % 256 - (chainIdInt * 2 + 35) % 256
v = try! UInt8(vRecovered)
} else {
vBytes = [UInt8]([data[64]])
let vInt = UInt8(vBytes)
if isLegacyTx {
// Legacy ethereum (pre-eip-155) adds 27 to v
v = vInt - 27
} else {
// v still can be chainId * 2 + 35 for non-legacy transactions (chaiId >=0)
// v still can be `{0, 1} + chainId * 2 + 35` for non-legacy transactions (chainId >=0)
if vInt >= 35 {
let vRecovered = UInt64(vBytes) - (chainIdInt * 2 + 35)
v = try! UInt8(vRecovered % 256)
let vRecovered = UInt64(vBytes) - (chainIdInt * 2 + 35) % 256
v = try! UInt8(vRecovered)
} else {
v = vInt
}
Expand All @@ -138,3 +138,4 @@ extension SECP256K1.UnmarshaledSignature {
return (v, r, s)
}
}

0 comments on commit 4c70747

Please sign in to comment.