const ethUtil = require('ethereumjs-util'); const sigUtil = require('@metamask/eth-sig-util'); const app = require('j7/app'); const bc = require('../blockchain'); const metaFactory = require('../metadata/factory'); async function authVerifySignature(session) { try { const netId = await bc.getNetId(); const msgParams = { types: { EIP712Domain: [ { name: 'name', type: 'string' }, { name: 'version', type: 'string' }, ], set: [ { name: 'tips', type: 'string' }, { name: 'nonce', type: 'string' }, ] }, primaryType: 'set', domain: { name: 'Auth', version: '1', }, message: { tips: session.request('tips'), nonce: session.request('nonce') } }; const recovered = sigUtil.recoverTypedSignature( {data: msgParams, signature: session.request('signature'), version: 'V4'}); session.rspData( { 'recovered': recovered }); } catch (err) { session.rspErr(1, err); } } async function buyBoxVerifySignature(session) { try { const netId = await bc.getNetId(); const msgParams = { types: { EIP712Domain: [ { name: 'name', type: 'string' }, { name: 'version', type: 'string' }, { name: 'chainId', type: 'uint256' }, { name: 'verifyingContract', type: 'address' } ], set: [ { name: 'item', type: 'uint256' }, { name: 'token', type: 'address' }, { name: 'price', type: 'uint256' }, { name: 'salt', type: 'uint256' } ] }, primaryType: 'set', domain: { name: 'BEBoxMall', version: '1', chainId: netId, verifyingContract: '0xF278ff771F9E24968083B0bA54Cb42eb4B23C2d7', }, message: { item: session.request('type'), token: session.request('paymentTokenAddress'), price: session.request('price'), salt: session.request('nonce') } }; const recovered = sigUtil.recoverTypedSignature( {data: msgParams, signature: session.request('signature'), version: 'V4'}); console.log(recovered); session.rspData( { 'recovered': recovered }); } catch (err) { console.log(err); session.rspErr(1, err); } } function init() { app.registerHandler('BcService', 'authVerifySignature', authVerifySignature); app.registerHandler('BcService', 'buyBoxVerifySignature', buyBoxVerifySignature); } exports.init = init;