Dead

Payout
0 DAI

$0.00

Remaining Balance
0 DAI

Implement missing exchangeKey cryptography for react-native

ECDSA

Secp256k1

NPM

Cryptography

JavaScript

TypeScript

circle

Pedro Gomes

Context

As part of the WCIP-2 (WalletConnect/WCIPs#2) the exchangeKey flow will be refactored to include a 2-stage procedure that includes a signing challenge and a key update to complete the exchangeKey successfully.

The proposal has been implemented on the exchange-key-refactor branch in this repo and it already includes the cryptography library interface required to perform this procedure.

From PR #118, you can see the file changes to the core, browser, react-native packages are completed but the react-native package is still missing the cryptographic methods.

The browser library was able to use an existing library called eth-crypto but this library is not supported in the react-native library.

Goal

Implement the missing cryptographic methods present in the nativeCrypto.ts file required for the new exchangeKey flow on the exchange-key-refactor branch.

The methods are generateKeyPair, encryptWithPublicKey, decryptWithPrivateKey, sign, and recoverPublicKey.

Refer to lines 157 to 196 here.

Potential Solution 1

Fork eth-crypto library and make it react-native compatible. Check the issue is described on their repo here.

Potential Solution 2

Use a different library (eg. crypto node module polyfill from tradle/react-native-crypto) that matches the same cryptographic methods as the ones used from eth-crypto. These methods involve key pair generation, encrypt, decrypt, sign and recover with Secp256k1. For more details, please consult the source code for eth-crypto library here

Notes

When forking this repository to submit a PR, please use exchange-key-refactor branch as base and submit a PR agaisnt it.

To test the react-native enviroment, you can use walletconnect-developer-app library found here. Run the app from debug branch and you will find a folder called walletconnect under src which is copy of the source code from walletconnect-monorepo on the exchange-key-refactor branch.

For any other questions, please reach out directly to me @pedrouid on Github / Telegram / Discord.