aozhiwei 64282c84b4 1
2022-02-21 17:11:56 +08:00

97 lines
2.4 KiB
JavaScript

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 = JSON.stringify({
types: {
EIP712Domain: [
{ name: 'name', type: 'string' },
{ name: 'version', type: 'string' },
{ name: 'chainId', type: 'uint256' },
],
set: [
]
},
primaryType: 'set',
domain: {
name: req.name,
version: req.version,
chainId: netId,
},
message: {}
});
const recovered = sigUtil.recoverTypedSignature(
{data:
msgParams,
signature: req.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 = JSON.stringify({
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: req.name,
version: req.version,
chainId: netId,
verifyingContract: metamgr['mallInstance'].address
},
message: {
item: req.type,
token: req.paymentTokenAddress,
price: req.price,
salt: req.nonce
}
});
const recovered = sigUtil.recoverTypedSignature(
{data:
msgParams,
signature: req.signature,
version: 'V4'});
utils.rspData(
rsp,
{
'recovered': recovered
});
} catch (err) {
utils.rspErr(rsp, 1, err);
}
}
function init() {
utils.registerHandler('BcService', 'authVerifySignature', authVerifySignature);
utils.registerHandler('BcService', 'buyBoxVerifySignature', buyBoxVerifySignature);
}
exports.init = init;