@@ -6113,7 +6113,13 @@ extension Web3.Utils {
61136113 if signature. count != 65 { return nil }
61146114 let rData = signature [ 0 ..< 32 ] . bytes
61156115 let sData = signature [ 32 ..< 64 ] . bytes
6116- let vData = signature [ 64 ]
6116+ var vData = signature [ 64 ]
6117+ if vData >= 27 && vData <= 30 {
6118+ vData -= 27
6119+ } else if vData >= 31 && vData <= 34 {
6120+ vData -= 31
6121+ }
6122+
61176123 guard let signatureData = SECP256K1 . marshalSignature ( v: vData, r: rData, s: sData) else { return nil }
61186124 guard let hash = Web3 . Utils. hashPersonalMessage ( personalMessage) else { return nil }
61196125 guard let publicKey = SECP256K1 . recoverPublicKey ( hash: hash, signature: signatureData) else { return nil }
@@ -6129,7 +6135,12 @@ extension Web3.Utils {
61296135 if signature. count != 65 { return nil }
61306136 let rData = signature [ 0 ..< 32 ] . bytes
61316137 let sData = signature [ 32 ..< 64 ] . bytes
6132- let vData = signature [ 64 ]
6138+ var vData = signature [ 64 ]
6139+ if vData >= 27 && vData <= 30 {
6140+ vData -= 27
6141+ } else if vData >= 31 && vData <= 34 {
6142+ vData -= 31
6143+ }
61336144 guard let signatureData = SECP256K1 . marshalSignature ( v: vData, r: rData, s: sData) else { return nil }
61346145 guard let publicKey = SECP256K1 . recoverPublicKey ( hash: hash, signature: signatureData) else { return nil }
61356146 return Web3 . Utils. publicToAddress ( publicKey)
0 commit comments