# Solana

* We are using `tweetnacl` and `bs58` for this particular example

```tsx
import nacl from "tweetnacl"

const message = await generateMessage()

const keypair = Keypair.generate() // use user's wallet

const signature = nacl.sign.detached(Buffer.from(message), keypair.secretKey)
```

{% hint style="info" %}
Wallets have exposed functions for [signing message](https://github.com/solana-labs/wallet-adapter/blob/master/FAQ.md#how-can-i-sign-and-verify-messages)
{% endhint %}
