From 8780cd1c40f14dd0da4620a4c6c8f9614607ac1f Mon Sep 17 00:00:00 2001 From: Luk Lu Date: Sat, 8 May 2021 17:23:59 +0800 Subject: [PATCH] =?UTF-8?q?crypto.createVerify(=E5=BF=85=E9=A1=BB=E8=A6=81?= =?UTF-8?q?=E6=9C=89algorithm=E5=8F=82=E6=95=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 219ab63..cabaaae 100644 --- a/index.js +++ b/index.js @@ -321,7 +321,7 @@ class TICrypto { } else if (signature.length >= 140) { // 纯 crypto let pubkeyPEM = await new keyman.Key('oct', this.hex2buf(pubkey), { namedCurve: 'P-256K' }).export('pem') // 公钥导出的der格式为88字节。经测试,同一对压缩和非压缩公钥得出的结果一模一样。 - let verifier = crypto.createVerify() // 不像 createSign(hasher),createVerify()不需要参数 + let verifier = crypto.createVerify(['sha1', 'sha256', 'sha512'].indexOf(hasher) >= 0 ? hasher : my.HASHER) verifier.update(this.hash(data)).end() // end() 在 nodejs 12 里返回verifier自身,但在浏览器里返回 undefined,因此不能串联运行。 let verified = verifier.verify(pubkeyPEM, signature, 'hex') // 如果给signature添加1位hex,crypto 的 verify结果也是true! 估计因为一位hex不被转成字节。但减少1位会导致false return verified