2021-08-12 05:26:06 +00:00
# Ethereum Private Message Using Wallet Encryption Web App
**Demonstrates**:
- Private Messaging
- React/TypeScript
- Waku Light Push
2021-08-13 05:08:12 +00:00
- Signature with Web3 using [EIP-712: `eth_signTypedData_v4` ](https://eips.ethereum.org/EIPS/eip-712 )
2021-08-12 05:26:06 +00:00
- Asymmetric Encryption
- Usage of [`eth_decrypt` ](https://docs.metamask.io/guide/rpc-api.html#eth-decrypt ) Wallet API
This dApp demonstrates how to send and received end-to-end encrypted messages
using the encryption API provided by some Web3 Wallet provider such as [Metamask ](https://metamask.io/ ).
The sender only needs to know the Ethereum address of the recipient.
2021-08-13 05:08:12 +00:00
The recipient must broadcast his encryption public key as a first step.
2021-08-12 05:26:06 +00:00
To run a development version locally, do:
```shell
git clone https://github.com/status-im/js-waku/ ; cd js-waku
npm install # Install dependencies for js-waku
npm run build # Build js-waku
cd examples/eth-pm-wallet-encryption
npm install # Install dependencies for the web app
npm run start # Start development server to serve the web app on http://localhost:3000/js-waku/eth-pm-wallet
```
2021-08-13 06:48:32 +00:00
## Caveats
This is a PoC with some obvious UX caveats:
- As the message payload is fully encrypted, the dApp asks MetaMask who in turns ask the user to decrypt every received message (even if we are the sender).
- This only uses Relay protocol to receive messages, meaning that participants must have the dApp open at the same time to receive private messages or public keys from each other.