sm2.test.js
2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const sm2 = require('../src/index').sm2
const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3
// const msgString = 'abcdefghABCDEFGH12345678abcdefghABCDEFGH12345678abcdefghABCDabcdefghABCDEFGH12345678abcdefghABCDEFGH12345678abcdefghABCDabcdefghABCDEFGH12345678abcdefghABCDEFGH12345678abcdefghABCDabcdefghABCDEFGH12345678abcdefghABCDEFGH12345678abcdefghABCDabcdefghABCDEFGH';
const msgString = 'absasdagfadgadsfdfdsf'
let publicKey
let privateKey
beforeAll(() => {
// 生成密钥对
let keypair = sm2.generateKeyPairHex()
publicKey = keypair.publicKey
privateKey = keypair.privateKey
});
test('sm2: generate keypair', () => {
expect(publicKey.length).toBe(130)
expect(privateKey.length).toBe(64)
});
test('sm2: encrypt and decrypt data', () => {
let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode)
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode)
expect(decryptData).toBe(msgString)
for (let i = 0; i < 100; i++) {
let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode)
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode)
expect(decryptData).toBe(msgString)
}
})
test('sm2: sign data and verify sign', () => {
// 纯签名 + 生成椭圆曲线点
let sigValueHex = sm2.doSignature(msgString, privateKey)
let verifyResult = sm2.doVerifySignature(msgString, sigValueHex, publicKey)
expect(verifyResult).toBe(true)
// 纯签名
let sigValueHex2 = sm2.doSignature(msgString, privateKey, {
pointPool: [sm2.getPoint(), sm2.getPoint(), sm2.getPoint(), sm2.getPoint()],
})
let verifyResult2 = sm2.doVerifySignature(msgString, sigValueHex2, publicKey);
expect(verifyResult2).toBe(true)
// 纯签名 + 生成椭圆曲线点 + der编解码
let sigValueHex3 = sm2.doSignature(msgString, privateKey, {
der: true,
})
let verifyResult3 = sm2.doVerifySignature(msgString, sigValueHex3, publicKey, {
der: true,
})
expect(verifyResult3).toBe(true)
// 纯签名 + 生成椭圆曲线点 + sm3杂凑
let sigValueHex4 = sm2.doSignature(msgString, privateKey, {
hash: true,
})
let verifyResult4 = sm2.doVerifySignature(msgString, sigValueHex4, publicKey, {
hash: true,
})
expect(verifyResult4).toBe(true)
for (let i = 0; i < 100; i++) {
sigValueHex4 = sm2.doSignature(msgString, privateKey, {
hash: true,
})
verifyResult4 = sm2.doVerifySignature(msgString, sigValueHex4, publicKey, {
hash: true,
})
expect(verifyResult4).toBe(true)
}
// 纯签名 + 生成椭圆曲线点 + sm3杂凑(不做公钥推导)
let sigValueHex5 = sm2.doSignature(msgString, privateKey, {
hash: true,
publicKey,
})
let verifyResult5 = sm2.doVerifySignature(msgString, sigValueHex5, publicKey, {
hash: true,
publicKey,
})
expect(verifyResult5).toBe(true)
})