Skip to content

Commit b7f438c

Browse files
author
Alex Vlasov
committed
add test for personal signing and EC recover. Manually tested in JavaScript using ethereumjs-utils
1 parent 113f684 commit b7f438c

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

web3swiftTests/web3swiftTests.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,6 +1991,26 @@ class web3swiftTests: XCTestCase {
19911991
}
19921992
}
19931993

1994+
func testPersonalSignature() {
1995+
let web3 = Web3.InfuraRinkebyWeb3()
1996+
let tempKeystore = try! EthereumKeystoreV3(password: "")
1997+
let keystoreManager = KeystoreManager([tempKeystore!])
1998+
web3.addKeystoreManager(keystoreManager)
1999+
let message = "Hello World"
2000+
let expectedAddress = keystoreManager.addresses![0]
2001+
print(expectedAddress)
2002+
let signRes = web3.personal.signPersonalMessage(message: message.data(using: .utf8)!, from: expectedAddress, password: "")
2003+
guard case .success(let signature) = signRes else {return XCTFail()}
2004+
let unmarshalledSignature = SECP256K1.unmarshalSignature(signatureData: signature)!
2005+
print("V = " + String(unmarshalledSignature.v))
2006+
print("R = " + Data(unmarshalledSignature.r).toHexString())
2007+
print("S = " + Data(unmarshalledSignature.s).toHexString())
2008+
print("Personal hash = " + Web3.Utils.hashPersonalMessage(message.data(using: .utf8)!)!.toHexString())
2009+
let recoveredSigner = web3.personal.ecrecover(personalMessage: message.data(using: .utf8)!, signature: signature)
2010+
guard case .success(let signer) = recoveredSigner else {return XCTFail()}
2011+
XCTAssert(expectedAddress == signer, "Failed to sign personal message")
2012+
}
2013+
19942014
func testPerformanceExample() {
19952015
// This is an example of a performance test case.
19962016
self.measure {

0 commit comments

Comments
 (0)