const ethUtil = require('ethereumjs-util'); const sigUtil = require('@metamask/eth-sig-util'); const utils = require('../utils'); const bc = require('../blockchain'); const metamgr = require('../metamgr'); async function authVerifySignature(req, rsp) { try { const netId = await bc.getNetId(); const msgParams = { types: { EIP712Domain: [ { name: 'name', type: 'string' }, { name: 'version', type: 'string' }, ], set: [ ] }, primaryType: 'set', domain: { name: req.query.name, version: req.query.version, }, message: {} }; const recovered = sigUtil.recoverTypedSignature( {data: msgParams, signature: req.query.signature, version: 'V4'}); utils.rspData( rsp, { 'recovered': recovered }); } catch (err) { utils.rspErr(rsp, 1, err); } } async function buyBoxVerifySignature(req, rsp) { 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: req.query.type, token: req.query.paymentTokenAddress, price: req.query.price, salt: req.query.nonce } }; const recovered = sigUtil.recoverTypedSignature( {data: msgParams, signature: req.query.signature, version: 'V4'}); console.log(recovered); utils.rspData( rsp, { 'recovered': recovered }); } catch (err) { console.log(err); utils.rspErr(rsp, 1, err); } } function init() { utils.registerHandler('BcService', 'authVerifySignature', authVerifySignature); utils.registerHandler('BcService', 'buyBoxVerifySignature', buyBoxVerifySignature); } exports.init = init;