Use appropriate cosmos address prefix while signing messages (#22)
Part of https://www.notion.so/Revive-attestation-react-app-19da6b22d472809595c2fb9d2970849f Co-authored-by: Shreerang Kale <shreerangkale@gmail.com> Reviewed-on: cerc-io/laconic-wallet-web#22
This commit is contained in:
parent
0b4ceae6b2
commit
59176ad7cb
1
.eslintignore
Normal file
1
.eslintignore
Normal file
@ -0,0 +1 @@
|
|||||||
|
build
|
@ -3,6 +3,7 @@ For more information, "visit https://docs.ethers.org/v5/cookbook/react-native/#c
|
|||||||
import 'react-native-get-random-values';
|
import 'react-native-get-random-values';
|
||||||
|
|
||||||
import '@ethersproject/shims';
|
import '@ethersproject/shims';
|
||||||
|
import { fromBech32 } from '@cosmjs/encoding';
|
||||||
|
|
||||||
import { Wallet } from 'ethers';
|
import { Wallet } from 'ethers';
|
||||||
import { SignDoc } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
|
import { SignDoc } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
|
||||||
@ -24,7 +25,7 @@ const signMessage = async ({
|
|||||||
case EIP155:
|
case EIP155:
|
||||||
return await signEthMessage(message, accountId, chainId);
|
return await signEthMessage(message, accountId, chainId);
|
||||||
case COSMOS:
|
case COSMOS:
|
||||||
return await signCosmosMessage(message, path.path);
|
return await signCosmosMessage(message, path.path, path.address);
|
||||||
default:
|
default:
|
||||||
throw new Error('Invalid wallet type');
|
throw new Error('Invalid wallet type');
|
||||||
}
|
}
|
||||||
@ -51,10 +52,13 @@ const signEthMessage = async (
|
|||||||
const signCosmosMessage = async (
|
const signCosmosMessage = async (
|
||||||
message: string,
|
message: string,
|
||||||
path: string,
|
path: string,
|
||||||
|
cosmosAddress: string,
|
||||||
): Promise<string | undefined> => {
|
): Promise<string | undefined> => {
|
||||||
try {
|
try {
|
||||||
const mnemonic = await getMnemonic();
|
const mnemonic = await getMnemonic();
|
||||||
const cosmosAccount = await getCosmosAccounts(mnemonic, path);
|
const addressPrefix = fromBech32(cosmosAddress).prefix
|
||||||
|
|
||||||
|
const cosmosAccount = await getCosmosAccounts(mnemonic, path, addressPrefix);
|
||||||
const address = cosmosAccount.data.address;
|
const address = cosmosAccount.data.address;
|
||||||
const cosmosSignature = await cosmosAccount.cosmosWallet.signAmino(
|
const cosmosSignature = await cosmosAccount.cosmosWallet.signAmino(
|
||||||
address,
|
address,
|
||||||
|
@ -9,6 +9,7 @@ import {
|
|||||||
StdFee,
|
StdFee,
|
||||||
MsgSendEncodeObject
|
MsgSendEncodeObject
|
||||||
} from '@cosmjs/stargate';
|
} from '@cosmjs/stargate';
|
||||||
|
import { fromBech32 } from '@cosmjs/encoding';
|
||||||
import { EncodeObject } from '@cosmjs/proto-signing';
|
import { EncodeObject } from '@cosmjs/proto-signing';
|
||||||
import { LaconicClient } from '@cerc-io/registry-sdk';
|
import { LaconicClient } from '@cerc-io/registry-sdk';
|
||||||
import { Buffer } from 'buffer';
|
import { Buffer } from 'buffer';
|
||||||
@ -19,6 +20,7 @@ import { Account } from '../../types';
|
|||||||
import { getMnemonic, getPathKey } from '../misc';
|
import { getMnemonic, getPathKey } from '../misc';
|
||||||
import { getCosmosAccounts } from '../accounts';
|
import { getCosmosAccounts } from '../accounts';
|
||||||
import { COSMOS_METHODS } from './COSMOSData';
|
import { COSMOS_METHODS } from './COSMOSData';
|
||||||
|
import { COSMOS } from '../constants';
|
||||||
|
|
||||||
interface EthSendTransaction {
|
interface EthSendTransaction {
|
||||||
type: 'eth_sendTransaction';
|
type: 'eth_sendTransaction';
|
||||||
@ -80,7 +82,13 @@ export async function approveWalletConnectRequest(
|
|||||||
const path = (await getPathKey(`${namespace}:${chainId}`, account.index))
|
const path = (await getPathKey(`${namespace}:${chainId}`, account.index))
|
||||||
.path;
|
.path;
|
||||||
const mnemonic = await getMnemonic();
|
const mnemonic = await getMnemonic();
|
||||||
const cosmosAccount = await getCosmosAccounts(mnemonic, path);
|
|
||||||
|
let addressPrefix: string | undefined
|
||||||
|
if (namespace === COSMOS) {
|
||||||
|
addressPrefix = fromBech32(account.address).prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
const cosmosAccount = await getCosmosAccounts(mnemonic, path, addressPrefix);
|
||||||
const address = account.address;
|
const address = account.address;
|
||||||
|
|
||||||
switch (request.method) {
|
switch (request.method) {
|
||||||
|
Loading…
Reference in New Issue
Block a user