Skip to content

Commit 8a019c7

Browse files
authored
Remove legacy sign method (#171)
* remove legacy sign method * bump to the latest xmtp * fix the 23 * fix the signing logic * fix linter * fix tests
1 parent 5aab3d4 commit 8a019c7

File tree

12 files changed

+21
-62
lines changed

12 files changed

+21
-62
lines changed

example/src/main/java/org/xmtp/android/example/account/WalletConnectV2Account.kt

+2-26
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,10 @@ data class WalletConnectV2Account(
2626
)
2727

2828
override suspend fun sign(data: ByteArray): SignatureOuterClass.Signature? {
29-
return signLegacy(String(data))
29+
return sign(String(data))
3030
}
3131

32-
override fun sign(text: String): ByteArray {
33-
val (parentChain, chainId, account) = session.namespaces.getValue(chain).accounts[0].split(":")
34-
val requestParams = session.namespaces.getValue(chain).methods.find { method ->
35-
method == "personal_sign"
36-
}?.let { method ->
37-
Modal.Params.Request(
38-
sessionTopic = session.topic,
39-
method = method,
40-
params = getPersonalSignBody(text, account),
41-
chainId = "$parentChain:$chainId"
42-
)
43-
}
44-
45-
runCatching {
46-
runBlocking {
47-
requestMethod(requestParams!!, sendSessionRequestDeepLink).first().getOrThrow()
48-
}
49-
}.onSuccess {
50-
return it
51-
}.onFailure {}
52-
53-
return byteArrayOf()
54-
}
55-
56-
override suspend fun signLegacy(message: String): SignatureOuterClass.Signature? {
32+
override suspend fun sign(message: String): SignatureOuterClass.Signature? {
5733
val (parentChain, chainId, account) = session.namespaces.getValue(chain).accounts[0].split(":")
5834
val requestParams = session.namespaces.getValue(chain).methods.find { method ->
5935
method == "personal_sign"

library/src/androidTest/java/org/xmtp/android/library/TestHelpers.kt

+2-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,8 @@ class FakeWallet : SigningKey {
4747
return signature
4848
}
4949

50-
override fun sign(text: String): ByteArray {
51-
return privateKeyBuilder.sign(text)
52-
}
53-
54-
override suspend fun signLegacy(message: String): Signature {
55-
val signature = privateKeyBuilder.signLegacy(message)
50+
override suspend fun sign(message: String): Signature {
51+
val signature = privateKeyBuilder.sign(message)
5652
return signature
5753
}
5854

library/src/main/java/org/xmtp/android/library/Client.kt

+10-7
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import org.xmtp.android.library.messages.encrypted
3333
import org.xmtp.android.library.messages.ensureWalletSignature
3434
import org.xmtp.android.library.messages.generate
3535
import org.xmtp.android.library.messages.getPublicKeyBundle
36+
import org.xmtp.android.library.messages.rawData
3637
import org.xmtp.android.library.messages.recoverWalletSignerPublicKey
3738
import org.xmtp.android.library.messages.toPublicKeyBundle
3839
import org.xmtp.android.library.messages.toV2
@@ -335,14 +336,16 @@ class Client() {
335336
null
336337
}
337338

338-
if (v3Client?.textToSign() == null) {
339-
v3Client?.registerIdentity(null)
340-
} else if (account != null) {
341-
v3Client.textToSign()?.let {
342-
v3Client.registerIdentity(account.sign(it))
339+
if (v3Client != null) {
340+
if (v3Client.textToSign() == null) {
341+
v3Client.registerIdentity(null)
342+
} else if (account != null) {
343+
v3Client.textToSign()?.let {
344+
v3Client.registerIdentity(account.sign(it)?.rawData)
345+
}
346+
} else {
347+
throw XMTPException("No signer passed but signer was required.")
343348
}
344-
} else {
345-
Log.i(TAG, "No signer passed but signer was required.")
346349
}
347350

348351
return v3Client

library/src/main/java/org/xmtp/android/library/SigningKey.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ interface SigningKey {
2121

2222
suspend fun sign(data: ByteArray): SignatureOuterClass.Signature?
2323

24-
suspend fun signLegacy(message: String): SignatureOuterClass.Signature?
25-
26-
fun sign(text: String): ByteArray
24+
suspend fun sign(message: String): SignatureOuterClass.Signature?
2725
}
2826

2927
/**
@@ -52,7 +50,7 @@ fun SigningKey.createIdentity(
5250
val signatureClass = Signature.newBuilder().build()
5351
val signatureText = signatureClass.createIdentityText(key = slimKey.toByteArray())
5452
val digest = signatureClass.ethHash(message = signatureText)
55-
val signature = runBlocking { signLegacy(signatureText) } ?: throw XMTPException("Illegal signature")
53+
val signature = runBlocking { sign(signatureText) } ?: throw XMTPException("Illegal signature")
5654

5755
val signatureData = KeyUtil.getSignatureData(signature.rawData.toByteString().toByteArray())
5856
val publicKey = Sign.recoverFromSignature(

library/src/main/java/org/xmtp/android/library/messages/EncryptedPrivateKeyBundle.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fun EncryptedPrivateKeyBundle.decrypted(
1919
}
2020

2121
val signature = runBlocking {
22-
key.signLegacy(
22+
key.sign(
2323
message = Signature.newBuilder().build()
2424
.enableIdentityText(key = v1.walletPreKey.toByteArray()),
2525
)

library/src/main/java/org/xmtp/android/library/messages/PrivateKey.kt

+1-11
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import org.xmtp.android.library.KeyUtil
99
import org.xmtp.android.library.SigningKey
1010
import org.xmtp.proto.message.contents.PublicKeyOuterClass
1111
import org.xmtp.proto.message.contents.SignatureOuterClass
12-
import java.nio.charset.StandardCharsets
1312
import java.security.SecureRandom
1413
import java.util.Date
1514

@@ -93,16 +92,7 @@ class PrivateKeyBuilder : SigningKey {
9392
}.build()
9493
}
9594

96-
override fun sign(text: String): ByteArray {
97-
val messageBytes: ByteArray = text.toByteArray(StandardCharsets.UTF_8)
98-
val signature = Sign.signPrefixedMessage(
99-
messageBytes,
100-
ECKeyPair.create(privateKey.secp256K1.bytes.toByteArray())
101-
)
102-
return signature.r + signature.s + signature.v
103-
}
104-
105-
override suspend fun signLegacy(message: String): SignatureOuterClass.Signature {
95+
override suspend fun sign(message: String): SignatureOuterClass.Signature {
10696
val digest = Signature.newBuilder().build().ethHash(message)
10797
return sign(digest)
10898
}

library/src/main/java/org/xmtp/android/library/messages/PrivateKeyBundle.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fun PrivateKeyBundle.encrypted(
3636

3737
val signature =
3838
runBlocking {
39-
key.signLegacy(
39+
key.sign(
4040
message = Signature.newBuilder().build().enableIdentityText(key = walletPreKey)
4141
)
4242
} ?: throw XMTPException("Illegal signature")
Binary file not shown.
Binary file not shown.
17.9 KB
Binary file not shown.
Binary file not shown.

library/src/test/java/org/xmtp/android/library/TestHelpers.kt

+2-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,8 @@ class FakeWallet : SigningKey {
4747
return signature
4848
}
4949

50-
override fun sign(text: String): ByteArray {
51-
return privateKeyBuilder.sign(text)
52-
}
53-
54-
override suspend fun signLegacy(message: String): Signature {
55-
val signature = privateKeyBuilder.signLegacy(message)
50+
override suspend fun sign(message: String): Signature {
51+
val signature = privateKeyBuilder.sign(message)
5652
return signature
5753
}
5854

0 commit comments

Comments
 (0)