99 lines
2.5 KiB
JavaScript
99 lines
2.5 KiB
JavaScript
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;
|