Skip to content

Commit 85295a8

Browse files
author
junrangao
committed
fix: sm2 sign/verify function hash=true by default
1 parent 53dfb60 commit 85295a8

File tree

5 files changed

+24
-24
lines changed

5 files changed

+24
-24
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.4.0
2+
3+
* sm2 签名/验签函数参数 `hash` 默认为 `true`
4+
15
## 0.3.14
26

37
* 完善 sm2 解密和验签时的逻辑

README.md

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,19 @@ decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, {output: 'array
5151
### 签名验签
5252

5353
> ps:理论上来说,只做纯签名是最快的。
54+
>
55+
> ps:`hash` 参数默认为 `true`,即默认会做 sm3 杂凑。如需纯签名(不做杂凑),请显式传入 `hash: false`
5456
5557
```js
5658
const sm2 = require('sm-crypto').sm2
5759

58-
// 纯签名 + 生成椭圆曲线点
59-
let sigValueHex = sm2.doSignature(msg, privateKey) // 签名
60-
let verifyResult = sm2.doVerifySignature(msg, sigValueHex, publicKey) // 验签结果
60+
// 纯签名 + 生成椭圆曲线点(不做sm3杂凑)
61+
let sigValueHex = sm2.doSignature(msg, privateKey, {
62+
hash: false,
63+
}) // 签名
64+
let verifyResult = sm2.doVerifySignature(msg, sigValueHex, publicKey, {
65+
hash: false,
66+
}) // 验签结果
6167

6268
// 纯签名
6369
let sigValueHex2 = sm2.doSignature(msg, privateKey, {
@@ -73,33 +79,23 @@ let verifyResult3 = sm2.doVerifySignature(msg, sigValueHex3, publicKey, {
7379
der: true,
7480
}) // 验签结果
7581

76-
// 纯签名 + 生成椭圆曲线点 + sm3杂凑
77-
let sigValueHex4 = sm2.doSignature(msg, privateKey, {
78-
hash: true,
79-
}) // 签名
80-
let verifyResult4 = sm2.doVerifySignature(msg, sigValueHex4, publicKey, {
81-
hash: true,
82-
}) // 验签结果
82+
// sm3杂凑(默认行为)
83+
let sigValueHex4 = sm2.doSignature(msg, privateKey)
84+
let verifyResult4 = sm2.doVerifySignature(msg, sigValueHex4, publicKey) // 验签结果
8385

84-
// 纯签名 + 生成椭圆曲线点 + sm3杂凑(不做公钥推导)
86+
// sm3杂凑(不做公钥推导)
8587
let sigValueHex5 = sm2.doSignature(msg, privateKey, {
86-
hash: true,
87-
publicKey, // 传入公钥的话,可以去掉sm3杂凑中推导公钥的过程,速度会比纯签名 + 生成椭圆曲线点 + sm3杂凑快
88-
})
89-
let verifyResult5 = sm2.doVerifySignature(msg, sigValueHex5, publicKey, {
90-
hash: true,
91-
publicKey,
88+
publicKey, // 传入公钥的话,可以去掉sm3杂凑中推导公钥的过程,速度更快
9289
})
90+
let verifyResult5 = sm2.doVerifySignature(msg, sigValueHex5, publicKey)
9391

94-
// 纯签名 + 生成椭圆曲线点 + sm3杂凑 + 不做公钥推 + 添加 userId(长度小于 8192)
92+
// sm3杂凑 + 不做公钥推导 + 添加 userId(长度小于 8192)
9593
// 默认 userId 值为 1234567812345678
9694
let sigValueHex6 = sm2.doSignature(msgString, privateKey, {
97-
hash: true,
9895
publicKey,
9996
userId: 'testUserId',
10097
})
10198
let verifyResult6 = sm2.doVerifySignature(msgString, sigValueHex6, publicKey, {
102-
hash: true,
10399
userId: 'testUserId',
104100
})
105101
```

dist/sm2.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sm-crypto",
3-
"version": "0.3.14",
3+
"version": "0.4.0",
44
"description": "sm-crypto",
55
"main": "src/index.js",
66
"scripts": {

src/sm2/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ function doDecrypt(encryptData, privateKey, cipherMode = 1, {
116116
* 签名
117117
*/
118118
function doSignature(msg, privateKey, {
119-
pointPool, der, hash, publicKey, userId
119+
pointPool, der, hash = true, publicKey, userId
120120
} = {}) {
121121
let hashHex = typeof msg === 'string' ? _.utf8ToHex(msg) : _.arrayToHex(msg)
122122

@@ -160,7 +160,7 @@ function doSignature(msg, privateKey, {
160160
/**
161161
* 验签
162162
*/
163-
function doVerifySignature(msg, signHex, publicKey, {der, hash, userId} = {}) {
163+
function doVerifySignature(msg, signHex, publicKey, {der, hash = true, userId} = {}) {
164164
let hashHex = typeof msg === 'string' ? _.utf8ToHex(msg) : _.arrayToHex(msg)
165165

166166
if (hash) {

0 commit comments

Comments
 (0)