# Request signature

> Web3Auth Android SDK - request Function | Embedded Wallets

The `request` method facilitates the use of templated transaction screens for signing transactions. The method will return [SignResponse](#signresponse). It can be used to sign transactions for any EVM chain and screens can be whitelabeled to your branding.

Please check the list of [JSON RPC methods](https://docs.metamask.io/wallet/reference/json-rpc-api/), noting that the request method currently supports only the signing methods.

## Parameters

| Parameter       | Description                                                                                                                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chainConifg`   | Defines the chain to be used for signature request.                                                                                                                                                     |
| `method`        | JSON RPC method name in `String`. Currently, the request method only supports the singing methods.                                                                                                      |
| `requestParams` | Parameters for the corresponding method. The parameters should be in the list and correct sequence. Take a look at [RPC methods](https://docs.metamask.io/wallet/reference/json-rpc-api/) to know more. |

## Usage

```kotlin
val params = JsonArray().apply {
    // Message to be signed
    add("Hello, World!")
    // User's EOA address
    add(address)
}

val chainConfig = ChainConfig(
    chainId = "0x1",
    rpcTarget = "https://rpc.ethereum.org",
    ticker = "ETH",
    chainNamespace = ChainNamespace.EIP155
)

// focus-start
val signMsgCompletableFuture = web3Auth.request(
    chainConfig = chainConfig,
    "personal_sign",
    requestParams = params
)
// focus-end

signMsgCompletableFuture.whenComplete { signResult, error ->
    if (error == null) {
        // focus-next-line
        Log.d("Sign Result", signResult.toString())

    } else {
        Log.d("Sign Error", error.message ?: "Something went wrong")
    }
}
```

## SignResponse

| Name      | Description                                                   |
| --------- | ------------------------------------------------------------- |
| `success` | Determines whether the request was successful or not.         |
| `result?` | Holds the signature for the request when `success` is `true`. |
| `error?`  | Holds the error for the request when `success` is `false`.    |
