From d1a0b619cf3692fa2f253adb5420ec9e3617e259 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 13 Jul 2024 11:27:26 +0800 Subject: [PATCH] add bcservice --- server/web3service/controllers/bcservice.js | 47 +++++++++++++++++++++ server/web3service/controllers/factory.js | 1 + 2 files changed, 48 insertions(+) create mode 100644 server/web3service/controllers/bcservice.js diff --git a/server/web3service/controllers/bcservice.js b/server/web3service/controllers/bcservice.js new file mode 100644 index 0000000..828e81e --- /dev/null +++ b/server/web3service/controllers/bcservice.js @@ -0,0 +1,47 @@ +const ethUtil = require('ethereumjs-util'); +const sigUtil = require('@metamask/eth-sig-util'); + +const app = require('j7/app'); + +async function authVerifySignature(session) { + try { + 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); + } +} + +function init() { + app.registerHandler('BcService', 'authVerifySignature', authVerifySignature); +} + +exports.init = init; diff --git a/server/web3service/controllers/factory.js b/server/web3service/controllers/factory.js index 8609786..2524a4a 100644 --- a/server/web3service/controllers/factory.js +++ b/server/web3service/controllers/factory.js @@ -8,6 +8,7 @@ function add(name) { async function init() { add('jwt'); add('metamask_jwt'); + add('bcservice'); } exports.init = init;