@reown/appkit-siwx
Version:
The chain agnostic tool to enable authentication for AppKit applications.
36 lines • 1.26 kB
JavaScript
import { createPublicClient, http } from 'viem';
import { ConstantsUtil } from '@reown/appkit-common';
import { ChainController } from '@reown/appkit-controllers';
import { SIWXVerifier } from '../core/SIWXVerifier.js';
/**
* Default verifier for EIP155 sessions.
*/
export class EIP155Verifier extends SIWXVerifier {
constructor() {
super(...arguments);
this.chainNamespace = ConstantsUtil.CHAIN.EVM;
}
async verify(session) {
const caipNetwork = ChainController.state.chains
.get('eip155')
?.caipNetworks?.find(cn => cn.caipNetworkId === session.data.chainId);
if (!caipNetwork) {
throw new Error('EIP155.verify: CaipNetwork not found');
}
try {
const client = createPublicClient({
chain: caipNetwork,
transport: http(caipNetwork?.['rpcUrls'].default.http[0])
});
return await client.verifyMessage({
message: session.message.toString(),
signature: session.signature,
address: session.data.accountAddress
});
}
catch (error) {
return false;
}
}
}
//# sourceMappingURL=EIP155Verifier.js.map