From c9f04b24eb5846a6f6875d2b451df5a027330d03 Mon Sep 17 00:00:00 2001 From: Luk Lu Date: Thu, 20 Feb 2020 18:53:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=8F=E7=9D=80=20tic.crypto=20=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E5=88=B0=20secp256k1=20=E7=9A=84=E5=85=AC=E7=A7=81?= =?UTF-8?q?=E9=92=A5=E5=92=8C=E7=AD=BE=E5=90=8D=EF=BC=8C=E6=8A=8A=20signMe?= =?UTF-8?q?,=20packMe,=20verifySig=20=E6=94=B9=E6=88=90=20async=20?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Action.js | 22 +++++++++++----------- ActionMultisig.js | 14 +++++++------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Action.js b/Action.js index d4fdc60..82b53d8 100644 --- a/Action.js +++ b/Action.js @@ -34,19 +34,19 @@ MOM._model = { json: { default: undefined, sqlite: 'TEXT' } // 给不同类型的 ActionXxx 子类来自定义其所需的数据结构 } -MOM.packMe = function (keypair) { // 由前端调用,后台不创建 +MOM.packMe = async function (keypair) { // 由前端调用,后台不创建 this.actorPubkey = keypair.pubkey this.actorAddress = ticCrypto.pubkey2address(keypair.pubkey) this.timestamp = new Date() - this.signMe(keypair.seckey) + await this.signMe(keypair.seckey) this.hashMe() return this } -MOM.signMe = function (seckey) { // 由前端调用,后台不该进行签名 +MOM.signMe = async function (seckey) { // 由前端调用,后台不该进行签名 let json = this.getJson({ exclude: ['hash', 'blockHash', 'actorSignature'] }) // 是前端用户发起事务时签字,这时候还不知道进入哪个区块,所以不能计入blockHash - this.actorSignature = ticCrypto.sign(json, seckey) + this.actorSignature = await ticCrypto.sign(json, seckey) return this } @@ -55,14 +55,14 @@ MOM.hashMe = function () { return this } -MOM.verifySig = function() { +MOM.verifySig = async function() { let json = this.getJson({ exclude: ['hash', 'blockHash', 'actorSignature'] }) - let result = ticCrypto.verify(json, this.actorSignature, this.actorPubkey) + let result = await ticCrypto.verify(json, this.actorSignature, this.actorPubkey) return result } -DAD.verifySig = function (actionData) { +DAD.verifySig = async function (actionData) { let typedAction = new wo[actionData.type](actionData) - return typedAction.verifySig() + return await typedAction.verifySig() } MOM.verifyAddress = function () { @@ -81,11 +81,11 @@ DAD.verifyHash = function (actionData) { return typedAction.verifyHash() } -DAD.build = function (action, keypair) { // Applicable on client. 客户端调用 Action.build,即可新建、并打包成一个完整的子事务,不需要亲自调用 constructor, packMe 等方法。 +DAD.build = async function (action, keypair) { // Applicable on client. 客户端调用 Action.build,即可新建、并打包成一个完整的子事务,不需要亲自调用 constructor, packMe 等方法。 if (action && action.type && keypair && keypair.seckey && keypair.pubkey) { let typedAction = new wo[action.type](action) if (typedAction.validateMe()) { - typedAction.packMe(keypair) + await typedAction.packMe(keypair) return typedAction } } @@ -168,7 +168,7 @@ DAD.api.prepare = async function (option) { if (option && option.Action && option.Action.type && wo[option.Action.type] && option.Action.hash && !DAD.actionPool[option.Action.hash]) { let typedAction = new wo[option.Action.type](option.Action) if (typedAction.verifyAddress() && // 只检查所有事务通用的格式 - typedAction.verifySig() && + await typedAction.verifySig() && typedAction.verifyHash() && typedAction.validateMe() && // 检查事务的内容是否符合该子类事务的格式 (await typedAction.executableMe()) // 检查事务是否可执行,在当前链的状态下。 diff --git a/ActionMultisig.js b/ActionMultisig.js index 82c2f5f..b151752 100644 --- a/ActionMultisig.js +++ b/ActionMultisig.js @@ -13,15 +13,15 @@ const MOM = DAD.prototype MOM.__proto__ = Action.prototype // MOM._table=DAD.name // 注释掉,从而继承父类Action的数据库表格名 -MOM.signMe = function (seckey) { // 由前端调用,后台不该进行签名 +MOM.signMe = async function (seckey) { // 由前端调用,后台不该进行签名 let json = this.getJson({ exclude: ['hash', 'blockHash', 'actorSignature', 'json'] }) // 是前端用户发起事务时签字,这时候还不知道进入哪个区块,所以不能计入blockHash - this.actorSignature = wo.Crypto.sign(json, seckey) + this.actorSignature = await wo.Crypto.sign(json, seckey) return this } -MOM.verifySig = function () { +MOM.verifySig = async function () { let json = this.getJson(({ exclude: ['hash', 'blockHash', 'actorSignature', 'json'] })) - let res = wo.Crypto.verify(json, this.actorSignature, this.actorPubkey) + let res = await wo.Crypto.verify(json, this.actorSignature, this.actorPubkey) return res } @@ -38,12 +38,12 @@ MOM.verifyHash = function () { return this.hash === wo.Crypto.hash(this.getJson({ exclude: ['hash', 'blockHash', 'json'] })) } -MOM.packMe = function (keypair) { // 由前端调用,后台不创建 +MOM.packMe = async function (keypair) { // 由前端调用,后台不创建 this.actorPubkey = keypair.pubkey this.actorAddress = wo.Crypto.pubkey2address(keypair.pubkey) this.timestamp = new Date() - this.signMe(keypair.seckey) + await this.signMe(keypair.seckey) this.hashMe() return this } @@ -59,7 +59,7 @@ MOM.checkMultiSig = function (account) { } for (let i of sigers) // 该交易内已签名的每一个公钥 { - if (account.multiSignatures.keysgroup.indexOf(i) !== -1 && wo.Crypto.verify(json, this.json[i], i)) { + if (account.multiSignatures.keysgroup.indexOf(i) !== -1 && await wo.Crypto.verify(json, this.json[i], i)) { M++ } }