diff --git a/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/ClientMapper.kt b/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/ClientMapper.kt index 10243b51a..847effe5f 100644 --- a/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/ClientMapper.kt +++ b/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/ClientMapper.kt @@ -107,9 +107,8 @@ internal fun Modal.Params.Authenticate.toSign(): Sign.Params.Authenticate = with Sign.Params.Authenticate( pairingTopic, chains = chains, - type = type ?: CacaoType.CAIP222.header, domain = domain, - uri = aud, + uri = uri, nonce = nonce, nbf = nbf, exp = exp, diff --git a/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/Modal.kt b/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/Modal.kt index a155608cc..0ddb80932 100644 --- a/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/Modal.kt +++ b/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/Modal.kt @@ -36,15 +36,14 @@ object Modal { val chains: List, val domain: String, val nonce: String, - val aud: String, - val type: String?, - val nbf: String?, - val exp: String?, - val statement: String?, - val requestId: String?, - val resources: List?, - val methods: List?, - val expiry: Long? + val uri: String, + val nbf: String? = null, + val exp: String? = null, + val statement: String? = null, + val requestId: String? = null, + val resources: List? = null, + val methods: List? = null, + val expiry: Long? = null ) : Params() data class Disconnect(val sessionTopic: String) : Params() diff --git a/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/WalletConnectModal.kt b/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/WalletConnectModal.kt index 4ed869567..a0d59413f 100644 --- a/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/WalletConnectModal.kt +++ b/product/walletconnectmodal/src/main/kotlin/com/walletconnect/wcmodal/client/WalletConnectModal.kt @@ -29,7 +29,7 @@ object WalletConnectModal { //Responses fun onSessionRequestResponse(response: Modal.Model.SessionRequestResponse) - fun onSessionAuthenticateResponse(sessionUpdateResponse: Modal.Model.SessionAuthenticateResponse) + fun onSessionAuthenticateResponse(sessionUpdateResponse: Modal.Model.SessionAuthenticateResponse) {} // Utils fun onProposalExpired(proposal: Modal.Model.ExpiredProposal) diff --git a/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/ClientMapper.kt b/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/ClientMapper.kt index 268ff5663..261a31206 100644 --- a/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/ClientMapper.kt +++ b/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/ClientMapper.kt @@ -88,7 +88,7 @@ internal fun Modal.Params.Authenticate.toSign(): Sign.Params.Authenticate = with pairingTopic, chains = chains, domain = domain, - uri = aud, + uri = uri, nonce = nonce, nbf = nbf, exp = exp, @@ -96,7 +96,6 @@ internal fun Modal.Params.Authenticate.toSign(): Sign.Params.Authenticate = with requestId = requestId, resources = resources, methods = methods, - type = type ?: CacaoType.CAIP222.header, expiry = expiry ) } diff --git a/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Modal.kt b/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Modal.kt index 4f017b0a7..b26988f02 100644 --- a/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Modal.kt +++ b/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Modal.kt @@ -37,15 +37,14 @@ object Modal { val chains: List, val domain: String, val nonce: String, - val aud: String, - val type: String?, - val nbf: String?, - val exp: String?, - val statement: String?, - val requestId: String?, - val resources: List?, - val methods: List?, - val expiry: Long + val uri: String, + val nbf: String? = null, + val exp: String? = null, + val statement: String? = null, + val requestId: String? = null, + val resources: List? = null, + val methods: List? = null, + val expiry: Long? = null ) : Params() @Deprecated( diff --git a/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Web3Modal.kt b/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Web3Modal.kt index bff381b0c..d4d5ea3e8 100644 --- a/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Web3Modal.kt +++ b/product/web3modal/src/main/kotlin/com/walletconnect/web3/modal/client/Web3Modal.kt @@ -44,7 +44,7 @@ object Web3Modal { //Responses fun onSessionRequestResponse(response: Modal.Model.SessionRequestResponse) - fun onSessionAuthenticateResponse(sessionUpdateResponse: Modal.Model.SessionAuthenticateResponse) + fun onSessionAuthenticateResponse(sessionUpdateResponse: Modal.Model.SessionAuthenticateResponse) {} // Utils fun onProposalExpired(proposal: Modal.Model.ExpiredProposal) diff --git a/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/client/SessionAuthenticateInstrumentedAndroidTest.kt b/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/client/SessionAuthenticateInstrumentedAndroidTest.kt index 2c0b17c50..46c219b0d 100644 --- a/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/client/SessionAuthenticateInstrumentedAndroidTest.kt +++ b/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/client/SessionAuthenticateInstrumentedAndroidTest.kt @@ -8,6 +8,7 @@ import com.walletconnect.sign.client.Sign import com.walletconnect.sign.client.SignClient import com.walletconnect.sign.client.utils.CacaoSigner import com.walletconnect.sign.client.utils.generateAuthObject +import com.walletconnect.sign.client.utils.generateAuthPayloadParams import com.walletconnect.sign.test.scenario.SignClientInstrumentedActivityScenario import com.walletconnect.sign.test.utils.TestClient import com.walletconnect.sign.test.utils.dapp.DappDelegate @@ -49,16 +50,23 @@ class SessionAuthenticateInstrumentedAndroidTest { val issuerToMessages = mutableListOf>() val cacaos = mutableListOf() - sessionAuthenticate.payloadParams.chains.forEach { chain -> + val authPayloadParams = + generateAuthPayloadParams( + sessionAuthenticate.payloadParams, + supportedChains = listOf("eip155:1", "eip155:137", "eip155:56"), + supportedMethods = listOf("personal_sign", "eth_signTypedData", "eth_sign") + ) + + authPayloadParams.chains.forEach { chain -> val issuer = "did:pkh:$chain:$address" - val message = WalletSignClient.formatAuthMessage(Sign.Params.FormatMessage(sessionAuthenticate.payloadParams, issuer)) ?: throw Exception("Invalid message") + val message = WalletSignClient.formatAuthMessage(Sign.Params.FormatMessage(authPayloadParams, issuer)) ?: throw Exception("Invalid message") issuerToMessages.add(issuer to message) } issuerToMessages.forEach { issuerToMessage -> val messageToSign = Numeric.toHexString(issuerToMessage.second.toByteArray()) val signature = CacaoSigner.signHex(messageToSign, privateKey.hexToBytes(), SignatureType.EIP191) - val cacao = generateAuthObject(sessionAuthenticate.payloadParams, issuerToMessage.first, signature) + val cacao = generateAuthObject(authPayloadParams, issuerToMessage.first, signature) cacaos.add(cacao) } @@ -90,16 +98,23 @@ class SessionAuthenticateInstrumentedAndroidTest { val issuerToMessages = mutableListOf>() val cacaos = mutableListOf() - sessionAuthenticate.payloadParams.chains.forEach { chain -> + val authPayloadParams = + generateAuthPayloadParams( + sessionAuthenticate.payloadParams, + supportedChains = listOf("eip155:1", "eip155:137", "eip155:56"), + supportedMethods = listOf("personal_sign", "eth_signTypedData", "eth_sign") + ) + + authPayloadParams.chains.forEach { chain -> val issuer = "did:pkh:$chain:$address" - val message = WalletSignClient.formatAuthMessage(Sign.Params.FormatMessage(sessionAuthenticate.payloadParams, issuer)) ?: throw Exception("Invalid message") + val message = WalletSignClient.formatAuthMessage(Sign.Params.FormatMessage(authPayloadParams, issuer)) ?: throw Exception("Invalid message") issuerToMessages.add(issuer to message) } issuerToMessages.forEach { issuerToMessage -> val messageToSign = Numeric.toHexString(issuerToMessage.second.toByteArray()) val signature = CacaoSigner.signHex(messageToSign, privateKey.hexToBytes(), SignatureType.EIP191) - val cacao = generateAuthObject(sessionAuthenticate.payloadParams, issuerToMessage.first, signature) + val cacao = generateAuthObject(authPayloadParams, issuerToMessage.first, signature) cacaos.add(cacao) } @@ -143,15 +158,22 @@ class SessionAuthenticateInstrumentedAndroidTest { val messages = mutableListOf>() val cacaos = mutableListOf() - sessionAuthenticate.payloadParams.chains.forEach { chain -> + val authPayloadParams = + generateAuthPayloadParams( + sessionAuthenticate.payloadParams, + supportedChains = listOf("eip155:1", "eip155:137", "eip155:56"), + supportedMethods = listOf("personal_sign", "eth_signTypedData", "eth_sign") + ) + + authPayloadParams.chains.forEach { chain -> val issuer = "did:pkh:$chain:$address" - val message = WalletSignClient.formatAuthMessage(Sign.Params.FormatMessage(sessionAuthenticate.payloadParams, issuer)) ?: throw Exception("Invalid message") + val message = WalletSignClient.formatAuthMessage(Sign.Params.FormatMessage(authPayloadParams, issuer)) ?: throw Exception("Invalid message") messages.add(issuer to message) } messages.forEach { message -> val signature = CacaoSigner.signHex("messageToSign", privateKey.hexToBytes(), SignatureType.EIP191) - val cacao = generateAuthObject(sessionAuthenticate.payloadParams, message.first, signature) + val cacao = generateAuthObject(authPayloadParams, message.first, signature) cacaos.add(cacao) } diff --git a/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/utils/dapp/DappSignClient.kt b/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/utils/dapp/DappSignClient.kt index 396fb1ce3..6ebf6d6e0 100644 --- a/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/utils/dapp/DappSignClient.kt +++ b/protocol/sign/src/androidTest/kotlin/com/walletconnect/sign/test/utils/dapp/DappSignClient.kt @@ -24,7 +24,6 @@ val dappClientConnect = { pairing: Core.Model.Pairing -> fun dappClientAuthenticate(onPairing: (String) -> Unit) { val authenticateParams = Sign.Params.Authenticate( - type = "caip222", chains = listOf("eip155:1", "eip155:137"), domain = "sample.dapp", uri = "https://react-auth-dapp.vercel.app/", diff --git a/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/Sign.kt b/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/Sign.kt index fe276883b..89a209ee7 100644 --- a/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/Sign.kt +++ b/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/Sign.kt @@ -312,14 +312,13 @@ object Sign { val domain: String, val nonce: String, val uri: String, - val type: String?, - val nbf: String?, - val exp: String?, - val statement: String?, - val requestId: String?, - val resources: List?, - val methods: List?, - val expiry: Long? + val nbf: String? = null, + val exp: String? = null, + val statement: String? = null, + val requestId: String? = null, + val resources: List? = null, + val methods: List? = null, + val expiry: Long? = null ) : Params() data class FormatMessage(val payloadParams: Model.PayloadParams, val iss: String) : Params() diff --git a/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/mapper/ClientMapper.kt b/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/mapper/ClientMapper.kt index f1ff22ed2..079e1c77e 100644 --- a/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/mapper/ClientMapper.kt +++ b/protocol/sign/src/main/kotlin/com/walletconnect/sign/client/mapper/ClientMapper.kt @@ -114,7 +114,7 @@ internal fun Sign.Model.PayloadParams.toEngine(): EngineDO.PayloadParams = with( @JvmSynthetic internal fun Sign.Params.Authenticate.toAuthenticate(): EngineDO.Authenticate = with(this) { EngineDO.Authenticate( - type = CacaoType.CAIP222.header, + type = CacaoType.EIP4361.header, chains = chains, domain = domain, aud = uri, diff --git a/sample/dapp/src/main/kotlin/com/walletconnect/sample/dapp/ui/routes/composable_routes/chain_selection/ChainSelectionViewModel.kt b/sample/dapp/src/main/kotlin/com/walletconnect/sample/dapp/ui/routes/composable_routes/chain_selection/ChainSelectionViewModel.kt index 8af42b43c..2aae55819 100644 --- a/sample/dapp/src/main/kotlin/com/walletconnect/sample/dapp/ui/routes/composable_routes/chain_selection/ChainSelectionViewModel.kt +++ b/sample/dapp/src/main/kotlin/com/walletconnect/sample/dapp/ui/routes/composable_routes/chain_selection/ChainSelectionViewModel.kt @@ -205,10 +205,9 @@ class ChainSelectionViewModel : ViewModel() { val authenticateParams get() = Modal.Params.Authenticate( - type = "eip4361", chains = uiState.value.filter { it.isSelected }.map { it.chainId }, domain = "sample.kotlin.dapp", - aud = "https://web3inbox.com/all-apps", + uri = "https://web3inbox.com/all-apps", nonce = randomBytes(12).bytesToHex(), exp = null, nbf = null, @@ -224,10 +223,9 @@ class ChainSelectionViewModel : ViewModel() { val siweParams get() = Modal.Params.Authenticate( - type = "eip4361", chains = uiState.value.filter { it.isSelected }.map { it.chainId }, domain = "sample.kotlin.dapp", - aud = "https://web3inbox.com/all-apps", + uri = "https://web3inbox.com/all-apps", nonce = randomBytes(12).bytesToHex(), exp = null, nbf = null, diff --git a/sample/wallet/src/main/kotlin/com/walletconnect/sample/wallet/ui/routes/dialog_routes/session_authenticate/SessionAuthenticateViewModel.kt b/sample/wallet/src/main/kotlin/com/walletconnect/sample/wallet/ui/routes/dialog_routes/session_authenticate/SessionAuthenticateViewModel.kt index c5dc246a1..066022b87 100644 --- a/sample/wallet/src/main/kotlin/com/walletconnect/sample/wallet/ui/routes/dialog_routes/session_authenticate/SessionAuthenticateViewModel.kt +++ b/sample/wallet/src/main/kotlin/com/walletconnect/sample/wallet/ui/routes/dialog_routes/session_authenticate/SessionAuthenticateViewModel.kt @@ -23,6 +23,7 @@ class SessionAuthenticateViewModel : ViewModel() { try { val sessionAuthenticate = WCDelegate.sessionAuthenticateEvent!!.first val auths = mutableListOf() + val authPayloadParams = Web3Wallet.generateAuthPayloadParams( sessionAuthenticate.payloadParams,