> For the complete documentation index, see [llms.txt](https://docs.0xpass.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.0xpass.io/wallet-operations/doa-signer/sign-message/sign-message-sdk.md).

# Sign Message SDK

To sign a message a user  / an account would need to have to have been registered through  [Register using SDK](/authentication/developer-owned-auth/registration/register-using-sdk.md) flow.&#x20;

## **Direct Authentication**

Since you will be directly authenticating with DOA here, you don't need to go through authentication step. Here is a code sample:

```javascript
import { Passport } from "@0xpass/passport";
import { stringToHex } from "viem";
import { Passport } from "@0xpass/passport";
import { KeySigner } from "@0xpass/key-signer";

const signer = new KeySigner(process.env.PRIVATE_KEY!, true);

const passport = new Passport({
    scopeId: "insert_your_scope_id",
    signer: signer,
    allowSessions: false
});

const userInput {
   username: "insert_registered_username_here"
   userDisplayName: "insert_registered_user_display_name_here"
}

await passport.setupEncryption();
//This step is different for direct authentication
passport.setUserData(userInput)

// Generate a signature
const signature = await passport.signMessage(stringToHex("hello world!"));
console.log(signature);
```

### signMessage Parameters

| Parameter | Description                    | Example Values                                                |
| --------- | ------------------------------ | ------------------------------------------------------------- |
| `message` | The message you'd like to sign | `68656c6c6f20776f726c64` (hex represenation of "hello world") |

#### signMessage Response

A successful response will return the following, a signature of the signed message by the authenticated account.

```json
{
    "jsonrpc": "2.0",
    "result": "signature_here",
    "id": 1
}
```
