@ivujs/i-utils 1.1.16 → 1.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +21 -19
  2. package/dist/cjs/index.cjs +5 -400
  3. package/dist/es/index.d.ts +1 -26
  4. package/dist/es/index.mjs +2 -55
  5. package/dist/index.d.ts +11 -2851
  6. package/dist/lib/index.full.umd.js +33 -14240
  7. package/dist/lib/index.full.umd.min.js +2 -64
  8. package/dist/lib/index.full.umd.min.js.map +1 -1
  9. package/dist/resolver/auto-imports.cjs +1 -337
  10. package/dist/resolver/auto-imports.mjs +1 -337
  11. package/dist/resolver/index.cjs +1 -1
  12. package/dist/resolver/index.d.ts +1 -1
  13. package/dist/resolver/index.mjs +1 -1
  14. package/package.json +5 -13
  15. package/dist/cjs/ID-card/index.cjs +0 -87
  16. package/dist/cjs/array/index.cjs +0 -470
  17. package/dist/cjs/clipboard/index.cjs +0 -128
  18. package/dist/cjs/color/index.cjs +0 -193
  19. package/dist/cjs/constants/date.cjs +0 -178
  20. package/dist/cjs/constants/id-card.cjs +0 -52
  21. package/dist/cjs/constants/keycode.cjs +0 -117
  22. package/dist/cjs/constants/lang.cjs +0 -13
  23. package/dist/cjs/constants/math.cjs +0 -13
  24. package/dist/cjs/constants/regexp.cjs +0 -53
  25. package/dist/cjs/constants/sort.cjs +0 -15
  26. package/dist/cjs/cookie/index.cjs +0 -70
  27. package/dist/cjs/crypto/aes/aes.cjs +0 -480
  28. package/dist/cjs/crypto/aes/index.cjs +0 -27
  29. package/dist/cjs/crypto/base32/base32.cjs +0 -357
  30. package/dist/cjs/crypto/base32/index.cjs +0 -41
  31. package/dist/cjs/crypto/base64/base64.cjs +0 -348
  32. package/dist/cjs/crypto/base64/index.cjs +0 -59
  33. package/dist/cjs/crypto/des/des.cjs +0 -257
  34. package/dist/cjs/crypto/des/index.cjs +0 -28
  35. package/dist/cjs/crypto/md5/index.cjs +0 -24
  36. package/dist/cjs/crypto/md5/md5.cjs +0 -897
  37. package/dist/cjs/crypto/sha/sha1/index.cjs +0 -24
  38. package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -529
  39. package/dist/cjs/crypto/sha/sha256/index.cjs +0 -43
  40. package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -595
  41. package/dist/cjs/crypto/sha/sha3/index.cjs +0 -41
  42. package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -624
  43. package/dist/cjs/crypto/sha/sha512/index.cjs +0 -81
  44. package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -950
  45. package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -149
  46. package/dist/cjs/crypto/sm/lib/ec.cjs +0 -315
  47. package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1608
  48. package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -158
  49. package/dist/cjs/crypto/sm/lib/utils.cjs +0 -170
  50. package/dist/cjs/crypto/sm/sm2/index.cjs +0 -112
  51. package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -231
  52. package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
  53. package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -93
  54. package/dist/cjs/crypto/sm/sm4/index.cjs +0 -27
  55. package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -327
  56. package/dist/cjs/crypto/tea/index.cjs +0 -25
  57. package/dist/cjs/crypto/tea/tea.cjs +0 -187
  58. package/dist/cjs/date/index.cjs +0 -1266
  59. package/dist/cjs/desensitized/index.cjs +0 -75
  60. package/dist/cjs/device/index.cjs +0 -151
  61. package/dist/cjs/dom/index.cjs +0 -129
  62. package/dist/cjs/file/index.cjs +0 -333
  63. package/dist/cjs/function/index.cjs +0 -69
  64. package/dist/cjs/keycode/index.cjs +0 -33
  65. package/dist/cjs/math/index.cjs +0 -278
  66. package/dist/cjs/number/index.cjs +0 -31
  67. package/dist/cjs/object/index.cjs +0 -272
  68. package/dist/cjs/pagination/index.cjs +0 -131
  69. package/dist/cjs/random/index.cjs +0 -24
  70. package/dist/cjs/regexp/index.cjs +0 -100
  71. package/dist/cjs/storage/index.cjs +0 -11
  72. package/dist/cjs/storage/localStorage.cjs +0 -37
  73. package/dist/cjs/storage/sessionStorage.cjs +0 -37
  74. package/dist/cjs/string/index.cjs +0 -358
  75. package/dist/cjs/url/index.cjs +0 -258
  76. package/dist/cjs/validate/index.cjs +0 -468
  77. package/dist/cjs/weapp/index.cjs +0 -142
  78. package/dist/es/ID-card/index.d.ts +0 -31
  79. package/dist/es/ID-card/index.mjs +0 -81
  80. package/dist/es/array/index.d.ts +0 -203
  81. package/dist/es/array/index.mjs +0 -441
  82. package/dist/es/clipboard/index.d.ts +0 -29
  83. package/dist/es/clipboard/index.mjs +0 -122
  84. package/dist/es/color/index.d.ts +0 -52
  85. package/dist/es/color/index.mjs +0 -183
  86. package/dist/es/constants/date.d.ts +0 -174
  87. package/dist/es/constants/date.mjs +0 -176
  88. package/dist/es/constants/id-card.d.ts +0 -43
  89. package/dist/es/constants/id-card.mjs +0 -50
  90. package/dist/es/constants/index.d.ts +0 -7
  91. package/dist/es/constants/keycode.d.ts +0 -103
  92. package/dist/es/constants/keycode.mjs +0 -115
  93. package/dist/es/constants/lang.d.ts +0 -4
  94. package/dist/es/constants/lang.mjs +0 -11
  95. package/dist/es/constants/math.d.ts +0 -4
  96. package/dist/es/constants/math.mjs +0 -11
  97. package/dist/es/constants/regexp.d.ts +0 -24
  98. package/dist/es/constants/regexp.mjs +0 -51
  99. package/dist/es/constants/sort.d.ts +0 -5
  100. package/dist/es/constants/sort.mjs +0 -13
  101. package/dist/es/cookie/index.d.ts +0 -29
  102. package/dist/es/cookie/index.mjs +0 -64
  103. package/dist/es/crypto/aes/aes.d.ts +0 -156
  104. package/dist/es/crypto/aes/aes.mjs +0 -478
  105. package/dist/es/crypto/aes/index.d.ts +0 -16
  106. package/dist/es/crypto/aes/index.mjs +0 -24
  107. package/dist/es/crypto/base32/base32.d.ts +0 -3
  108. package/dist/es/crypto/base32/base32.mjs +0 -353
  109. package/dist/es/crypto/base32/index.d.ts +0 -24
  110. package/dist/es/crypto/base32/index.mjs +0 -36
  111. package/dist/es/crypto/base64/base64.d.ts +0 -5
  112. package/dist/es/crypto/base64/base64.mjs +0 -342
  113. package/dist/es/crypto/base64/index.d.ts +0 -36
  114. package/dist/es/crypto/base64/index.mjs +0 -52
  115. package/dist/es/crypto/des/des.d.ts +0 -52
  116. package/dist/es/crypto/des/des.mjs +0 -255
  117. package/dist/es/crypto/des/index.d.ts +0 -14
  118. package/dist/es/crypto/des/index.mjs +0 -25
  119. package/dist/es/crypto/index.d.ts +0 -8
  120. package/dist/es/crypto/md5/index.d.ts +0 -13
  121. package/dist/es/crypto/md5/index.mjs +0 -21
  122. package/dist/es/crypto/md5/md5.d.ts +0 -144
  123. package/dist/es/crypto/md5/md5.mjs +0 -894
  124. package/dist/es/crypto/sha/index.d.ts +0 -4
  125. package/dist/es/crypto/sha/sha1/index.d.ts +0 -13
  126. package/dist/es/crypto/sha/sha1/index.mjs +0 -21
  127. package/dist/es/crypto/sha/sha1/sha1.d.ts +0 -2
  128. package/dist/es/crypto/sha/sha1/sha1.mjs +0 -526
  129. package/dist/es/crypto/sha/sha256/index.d.ts +0 -26
  130. package/dist/es/crypto/sha/sha256/index.mjs +0 -38
  131. package/dist/es/crypto/sha/sha256/sha256.d.ts +0 -4
  132. package/dist/es/crypto/sha/sha256/sha256.mjs +0 -590
  133. package/dist/es/crypto/sha/sha3/index.d.ts +0 -24
  134. package/dist/es/crypto/sha/sha3/index.mjs +0 -36
  135. package/dist/es/crypto/sha/sha3/sha3.d.ts +0 -4
  136. package/dist/es/crypto/sha/sha3/sha3.mjs +0 -619
  137. package/dist/es/crypto/sha/sha512/index.d.ts +0 -52
  138. package/dist/es/crypto/sha/sha512/index.mjs +0 -72
  139. package/dist/es/crypto/sha/sha512/sha512.d.ts +0 -8
  140. package/dist/es/crypto/sha/sha512/sha512.mjs +0 -941
  141. package/dist/es/crypto/sm/index.d.ts +0 -3
  142. package/dist/es/crypto/sm/lib/asn1.d.ts +0 -12
  143. package/dist/es/crypto/sm/lib/asn1.mjs +0 -146
  144. package/dist/es/crypto/sm/lib/ec.d.ts +0 -126
  145. package/dist/es/crypto/sm/lib/ec.mjs +0 -312
  146. package/dist/es/crypto/sm/lib/jsbn.d.ts +0 -198
  147. package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1605
  148. package/dist/es/crypto/sm/lib/sm3.d.ts +0 -5
  149. package/dist/es/crypto/sm/lib/sm3.mjs +0 -155
  150. package/dist/es/crypto/sm/lib/utils.d.ts +0 -53
  151. package/dist/es/crypto/sm/lib/utils.mjs +0 -158
  152. package/dist/es/crypto/sm/sm2/index.d.ts +0 -71
  153. package/dist/es/crypto/sm/sm2/index.mjs +0 -101
  154. package/dist/es/crypto/sm/sm2/sm2.d.ts +0 -34
  155. package/dist/es/crypto/sm/sm2/sm2.mjs +0 -220
  156. package/dist/es/crypto/sm/sm3/index.d.ts +0 -7
  157. package/dist/es/crypto/sm/sm3/index.mjs +0 -13
  158. package/dist/es/crypto/sm/sm3/sm3.d.ts +0 -1
  159. package/dist/es/crypto/sm/sm3/sm3.mjs +0 -91
  160. package/dist/es/crypto/sm/sm4/index.d.ts +0 -16
  161. package/dist/es/crypto/sm/sm4/index.mjs +0 -24
  162. package/dist/es/crypto/sm/sm4/sm4.d.ts +0 -2
  163. package/dist/es/crypto/sm/sm4/sm4.mjs +0 -324
  164. package/dist/es/crypto/tea/index.d.ts +0 -14
  165. package/dist/es/crypto/tea/index.mjs +0 -22
  166. package/dist/es/crypto/tea/tea.d.ts +0 -69
  167. package/dist/es/crypto/tea/tea.mjs +0 -185
  168. package/dist/es/date/index.d.ts +0 -547
  169. package/dist/es/date/index.mjs +0 -1179
  170. package/dist/es/desensitized/index.d.ts +0 -38
  171. package/dist/es/desensitized/index.mjs +0 -69
  172. package/dist/es/device/index.d.ts +0 -67
  173. package/dist/es/device/index.mjs +0 -137
  174. package/dist/es/dom/index.d.ts +0 -57
  175. package/dist/es/dom/index.mjs +0 -119
  176. package/dist/es/file/index.d.ts +0 -93
  177. package/dist/es/file/index.mjs +0 -317
  178. package/dist/es/function/index.d.ts +0 -23
  179. package/dist/es/function/index.mjs +0 -65
  180. package/dist/es/keycode/index.d.ts +0 -12
  181. package/dist/es/keycode/index.mjs +0 -30
  182. package/dist/es/math/index.d.ts +0 -66
  183. package/dist/es/math/index.mjs +0 -268
  184. package/dist/es/number/index.d.ts +0 -14
  185. package/dist/es/number/index.mjs +0 -28
  186. package/dist/es/object/index.d.ts +0 -83
  187. package/dist/es/object/index.mjs +0 -259
  188. package/dist/es/pagination/index.d.ts +0 -34
  189. package/dist/es/pagination/index.mjs +0 -125
  190. package/dist/es/random/index.d.ts +0 -15
  191. package/dist/es/random/index.mjs +0 -21
  192. package/dist/es/regexp/index.d.ts +0 -63
  193. package/dist/es/regexp/index.mjs +0 -89
  194. package/dist/es/storage/index.d.ts +0 -7
  195. package/dist/es/storage/index.mjs +0 -9
  196. package/dist/es/storage/localStorage.d.ts +0 -21
  197. package/dist/es/storage/localStorage.mjs +0 -32
  198. package/dist/es/storage/sessionStorage.d.ts +0 -21
  199. package/dist/es/storage/sessionStorage.mjs +0 -32
  200. package/dist/es/string/index.d.ts +0 -121
  201. package/dist/es/string/index.mjs +0 -339
  202. package/dist/es/url/index.d.ts +0 -118
  203. package/dist/es/url/index.mjs +0 -240
  204. package/dist/es/validate/index.d.ts +0 -228
  205. package/dist/es/validate/index.mjs +0 -431
  206. package/dist/es/weapp/index.d.ts +0 -57
  207. package/dist/es/weapp/index.mjs +0 -131
  208. package/dist/lib/index.full.cjs.js +0 -14264
  209. package/dist/lib/index.full.cjs.min.js +0 -69
  210. package/dist/lib/index.full.cjs.min.js.map +0 -1
  211. package/dist/lib/index.full.esm.js +0 -13910
  212. package/dist/lib/index.full.esm.min.js +0 -64
  213. package/dist/lib/index.full.esm.min.js.map +0 -1
@@ -1,5 +0,0 @@
1
- /**
2
- * sm3 本体
3
- */
4
- export function sm3(array: any): number[];
5
- export function hmac(input: any, key: any): number[];
@@ -1,155 +0,0 @@
1
- // 消息扩展
2
- const W = new Uint32Array(68);
3
- const M = new Uint32Array(64); // W'
4
- /**
5
- * 循环左移
6
- */
7
- function rotl(x, n) {
8
- const s = n & 31;
9
- return (x << s) | (x >>> (32 - s));
10
- }
11
- /**
12
- * 二进制异或运算
13
- */
14
- function xor(x, y) {
15
- const result = [];
16
- for (let i = x.length - 1; i >= 0; i--)
17
- result[i] = (x[i] ^ y[i]) & 0xff;
18
- return result;
19
- }
20
- /**
21
- * 压缩函数中的置换函数 P0(X) = X xor (X <<< 9) xor (X <<< 17)
22
- */
23
- function P0(X) {
24
- return X ^ rotl(X, 9) ^ rotl(X, 17);
25
- }
26
- /**
27
- * 消息扩展中的置换函数 P1(X) = X xor (X <<< 15) xor (X <<< 23)
28
- */
29
- function P1(X) {
30
- return X ^ rotl(X, 15) ^ rotl(X, 23);
31
- }
32
- /**
33
- * sm3 本体
34
- */
35
- function sm3(array) {
36
- let len = array.length * 8;
37
- // k 是满足 len + 1 + k = 448mod512 的最小的非负整数
38
- let k = len % 512;
39
- // 如果 448 <= (512 % len) < 512,需要多补充 (len % 448) 比特'0'以满足总比特长度为512的倍数
40
- k = k >= 448 ? 512 - (k % 448) - 1 : 448 - k - 1;
41
- // 填充
42
- const kArr = new Array((k - 7) / 8);
43
- const lenArr = new Array(8);
44
- for (let i = 0, len = kArr.length; i < len; i++)
45
- kArr[i] = 0;
46
- for (let i = 0, len = lenArr.length; i < len; i++)
47
- lenArr[i] = 0;
48
- len = len.toString(2);
49
- for (let i = 7; i >= 0; i--) {
50
- if (len.length > 8) {
51
- const start = len.length - 8;
52
- lenArr[i] = parseInt(len.substr(start), 2);
53
- len = len.substr(0, start);
54
- }
55
- else if (len.length > 0) {
56
- lenArr[i] = parseInt(len, 2);
57
- len = "";
58
- }
59
- }
60
- const m = new Uint8Array([...array, 0x80, ...kArr, ...lenArr]);
61
- const dataView = new DataView(m.buffer, 0);
62
- // 迭代压缩
63
- const n = m.length / 64;
64
- const V = new Uint32Array([
65
- 0x7380166f, 0x4914b2b9, 0x172442d7, 0xda8a0600, 0xa96f30bc, 0x163138aa, 0xe38dee4d, 0xb0fb0e4e,
66
- ]);
67
- for (let i = 0; i < n; i++) {
68
- W.fill(0);
69
- M.fill(0);
70
- // 将消息分组B划分为 16 个字 W0, W1,……,W15
71
- const start = 16 * i;
72
- for (let j = 0; j < 16; j++) {
73
- W[j] = dataView.getUint32((start + j) * 4, false);
74
- }
75
- // W16 ~ W67:W[j] <- P1(W[j−16] xor W[j−9] xor (W[j−3] <<< 15)) xor (W[j−13] <<< 7) xor W[j−6]
76
- for (let j = 16; j < 68; j++) {
77
- W[j] = P1(W[j - 16] ^ W[j - 9] ^ rotl(W[j - 3], 15)) ^ rotl(W[j - 13], 7) ^ W[j - 6];
78
- }
79
- // W′0 ~ W′63:W′[j] = W[j] xor W[j+4]
80
- for (let j = 0; j < 64; j++) {
81
- M[j] = W[j] ^ W[j + 4];
82
- }
83
- // 压缩
84
- const T1 = 0x79cc4519;
85
- const T2 = 0x7a879d8a;
86
- // 字寄存器
87
- let A = V[0];
88
- let B = V[1];
89
- let C = V[2];
90
- let D = V[3];
91
- let E = V[4];
92
- let F = V[5];
93
- let G = V[6];
94
- let H = V[7];
95
- // 中间变量
96
- let SS1;
97
- let SS2;
98
- let TT1;
99
- let TT2;
100
- let T;
101
- for (let j = 0; j < 64; j++) {
102
- T = j >= 0 && j <= 15 ? T1 : T2;
103
- SS1 = rotl(rotl(A, 12) + E + rotl(T, j), 7);
104
- SS2 = SS1 ^ rotl(A, 12);
105
- TT1 = (j >= 0 && j <= 15 ? A ^ B ^ C : (A & B) | (A & C) | (B & C)) + D + SS2 + M[j];
106
- TT2 = (j >= 0 && j <= 15 ? E ^ F ^ G : (E & F) | (~E & G)) + H + SS1 + W[j];
107
- D = C;
108
- C = rotl(B, 9);
109
- B = A;
110
- A = TT1;
111
- H = G;
112
- G = rotl(F, 19);
113
- F = E;
114
- E = P0(TT2);
115
- }
116
- V[0] ^= A;
117
- V[1] ^= B;
118
- V[2] ^= C;
119
- V[3] ^= D;
120
- V[4] ^= E;
121
- V[5] ^= F;
122
- V[6] ^= G;
123
- V[7] ^= H;
124
- }
125
- // 转回 uint8
126
- const result = [];
127
- for (let i = 0, len = V.length; i < len; i++) {
128
- const word = V[i];
129
- result.push((word & 0xff000000) >>> 24, (word & 0xff0000) >>> 16, (word & 0xff00) >>> 8, word & 0xff);
130
- }
131
- return result;
132
- }
133
- /**
134
- * hmac 实现
135
- */
136
- const blockLen = 64;
137
- const iPad = new Uint8Array(blockLen);
138
- const oPad = new Uint8Array(blockLen);
139
- for (let i = 0; i < blockLen; i++) {
140
- iPad[i] = 0x36;
141
- oPad[i] = 0x5c;
142
- }
143
- function hmac(input, key) {
144
- // 密钥填充
145
- if (key.length > blockLen)
146
- key = sm3(key);
147
- while (key.length < blockLen)
148
- key.push(0);
149
- const iPadKey = xor(key, iPad);
150
- const oPadKey = xor(key, oPad);
151
- const hash = sm3([...iPadKey, ...input]);
152
- return sm3([...oPadKey, ...hash]);
153
- }
154
-
155
- export { hmac, sm3 };
@@ -1,53 +0,0 @@
1
- /**
2
- * 获取公共椭圆曲线
3
- */
4
- export function getGlobalCurve(): ec.ECCurveFp;
5
- /**
6
- * 生成ecparam
7
- */
8
- export function generateEcparam(): {
9
- curve: ec.ECCurveFp;
10
- G: ec.ECPointFp | null;
11
- n: jsbn.BigInteger;
12
- };
13
- /**
14
- * 生成密钥对:publicKey = privateKey * G
15
- */
16
- export function generateKeyPairHex(a: any, b: any, c: any): {
17
- privateKey: any;
18
- publicKey: string;
19
- };
20
- /**
21
- * 生成压缩公钥
22
- */
23
- export function compressPublicKeyHex(s: any): string;
24
- /**
25
- * utf8串转16进制串
26
- */
27
- export function utf8ToHex(input: any): string;
28
- /**
29
- * 补全16进制字符串
30
- */
31
- export function leftPad(input: any, num: any): any;
32
- /**
33
- * 转成16进制串
34
- */
35
- export function arrayToHex(arr: any): any;
36
- /**
37
- * 转成utf8串
38
- */
39
- export function arrayToUtf8(arr: any): string;
40
- /**
41
- * 转成字节数组
42
- */
43
- export function hexToArray(hexStr: any): number[];
44
- /**
45
- * 验证公钥是否为椭圆曲线上的点
46
- */
47
- export function verifyPublicKey(publicKey: any): any;
48
- /**
49
- * 验证公钥是否等价,等价返回true
50
- */
51
- export function comparePublicKeyHex(publicKey1: any, publicKey2: any): any;
52
- import * as ec from "./ec.js";
53
- import * as jsbn from "./jsbn.js";
@@ -1,158 +0,0 @@
1
- import * as jsbn from './jsbn.mjs';
2
- import * as ec from './ec.mjs';
3
-
4
- const { BigInteger, SecureRandom } = jsbn;
5
- const { ECCurveFp } = ec;
6
- const rng = new SecureRandom();
7
- const { curve, G, n } = generateEcparam();
8
- /**
9
- * 获取公共椭圆曲线
10
- */
11
- function getGlobalCurve() {
12
- return curve;
13
- }
14
- /**
15
- * 生成ecparam
16
- */
17
- function generateEcparam() {
18
- // 椭圆曲线
19
- const p = new BigInteger("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF", 16);
20
- const a = new BigInteger("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC", 16);
21
- const b = new BigInteger("28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93", 16);
22
- const curve = new ECCurveFp(p, a, b);
23
- // 基点
24
- const gxHex = "32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7";
25
- const gyHex = "BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0";
26
- const G = curve.decodePointHex("04" + gxHex + gyHex);
27
- const n = new BigInteger("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123", 16);
28
- return { curve, G, n };
29
- }
30
- /**
31
- * 生成密钥对:publicKey = privateKey * G
32
- */
33
- function generateKeyPairHex(a, b, c) {
34
- const random = a ? new BigInteger(a, b, c) : new BigInteger(n.bitLength(), rng);
35
- const d = random.mod(n.subtract(BigInteger.ONE)).add(BigInteger.ONE); // 随机数
36
- const privateKey = leftPad(d.toString(16), 64);
37
- const P = G.multiply(d); // P = dG,p 为公钥,d 为私钥
38
- const Px = leftPad(P.getX().toBigInteger().toString(16), 64);
39
- const Py = leftPad(P.getY().toBigInteger().toString(16), 64);
40
- const publicKey = "04" + Px + Py;
41
- return { privateKey, publicKey };
42
- }
43
- /**
44
- * 生成压缩公钥
45
- */
46
- function compressPublicKeyHex(s) {
47
- if (s.length !== 130)
48
- throw new Error("Invalid public key to compress");
49
- const len = (s.length - 2) / 2;
50
- const xHex = s.substr(2, len);
51
- const y = new BigInteger(s.substr(len + 2, len), 16);
52
- let prefix = "03";
53
- if (y.mod(new BigInteger("2")).equals(BigInteger.ZERO))
54
- prefix = "02";
55
- return prefix + xHex;
56
- }
57
- /**
58
- * utf8串转16进制串
59
- */
60
- function utf8ToHex(input) {
61
- input = unescape(encodeURIComponent(input));
62
- const length = input.length;
63
- // 转换到字数组
64
- const words = [];
65
- for (let i = 0; i < length; i++) {
66
- words[i >>> 2] |= (input.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
67
- }
68
- // 转换到16进制
69
- const hexChars = [];
70
- for (let i = 0; i < length; i++) {
71
- const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
72
- hexChars.push((bite >>> 4).toString(16));
73
- hexChars.push((bite & 0x0f).toString(16));
74
- }
75
- return hexChars.join("");
76
- }
77
- /**
78
- * 补全16进制字符串
79
- */
80
- function leftPad(input, num) {
81
- if (input.length >= num)
82
- return input;
83
- return new Array(num - input.length + 1).join("0") + input;
84
- }
85
- /**
86
- * 转成16进制串
87
- */
88
- function arrayToHex(arr) {
89
- return arr
90
- .map((item) => {
91
- item = item.toString(16);
92
- return item.length === 1 ? "0" + item : item;
93
- })
94
- .join("");
95
- }
96
- /**
97
- * 转成utf8串
98
- */
99
- function arrayToUtf8(arr) {
100
- const words = [];
101
- let j = 0;
102
- for (let i = 0; i < arr.length * 2; i += 2) {
103
- words[i >>> 3] |= parseInt(arr[j], 10) << (24 - (i % 8) * 4);
104
- j++;
105
- }
106
- try {
107
- const latin1Chars = [];
108
- for (let i = 0; i < arr.length; i++) {
109
- const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
110
- latin1Chars.push(String.fromCharCode(bite));
111
- }
112
- return decodeURIComponent(escape(latin1Chars.join("")));
113
- }
114
- catch (e) {
115
- throw new Error("Malformed UTF-8 data");
116
- }
117
- }
118
- /**
119
- * 转成字节数组
120
- */
121
- function hexToArray(hexStr) {
122
- const words = [];
123
- let hexStrLength = hexStr.length;
124
- if (hexStrLength % 2 !== 0) {
125
- hexStr = leftPad(hexStr, hexStrLength + 1);
126
- }
127
- hexStrLength = hexStr.length;
128
- for (let i = 0; i < hexStrLength; i += 2) {
129
- words.push(parseInt(hexStr.substr(i, 2), 16));
130
- }
131
- return words;
132
- }
133
- /**
134
- * 验证公钥是否为椭圆曲线上的点
135
- */
136
- function verifyPublicKey(publicKey) {
137
- const point = curve.decodePointHex(publicKey);
138
- if (!point)
139
- return false;
140
- const x = point.getX();
141
- const y = point.getY();
142
- // 验证 y^2 是否等于 x^3 + ax + b
143
- return y.square().equals(x.multiply(x.square()).add(x.multiply(curve.a)).add(curve.b));
144
- }
145
- /**
146
- * 验证公钥是否等价,等价返回true
147
- */
148
- function comparePublicKeyHex(publicKey1, publicKey2) {
149
- const point1 = curve.decodePointHex(publicKey1);
150
- if (!point1)
151
- return false;
152
- const point2 = curve.decodePointHex(publicKey2);
153
- if (!point2)
154
- return false;
155
- return point1.equals(point2);
156
- }
157
-
158
- export { arrayToHex, arrayToUtf8, comparePublicKeyHex, compressPublicKeyHex, generateEcparam, generateKeyPairHex, getGlobalCurve, hexToArray, leftPad, utf8ToHex, verifyPublicKey };
@@ -1,71 +0,0 @@
1
- /**
2
- * sm2 生成公钥和私钥
3
- * @param {String} str 字符串
4
- * @param {Number} rnd 随机数
5
- * @returns {Object} 返回公钥和私钥
6
- */
7
- export function generateKeyPairHex(str: string, rnd: number): Object;
8
- /**
9
- * sm2 压缩公钥
10
- * @param {String} publicKey 公钥
11
- * @returns {String} 返回公钥字符串
12
- */
13
- export function compressPublicKeyHex(publicKey: string): string;
14
- /**
15
- * sm2 对比公钥是否等价
16
- * @param {String} publicKey 公钥
17
- * @param {String} compressedPublicKey 压缩后的公钥
18
- * @returns {Boolean} 返回结果
19
- */
20
- export function comparePublicKeyHex(publicKey: string, compressedPublicKey: string): boolean;
21
- /**
22
- * sm2 验证公钥
23
- * @param {String} publicKey 公钥,也可以传压缩后的公钥
24
- * @returns {Boolean} 返回结果
25
- */
26
- export function verifyPublicKey(publicKey: string): boolean;
27
- /**
28
- * sm2 加密
29
- * @param {String} str 字符串
30
- * @param {String} publicKey 公钥
31
- * @param {Number} cipherMode 加密模式,1(C1C3C2)和0(C1C2C3),默认1
32
- * @returns {String} 返回加密后的字符串
33
- */
34
- export function encrypt(str: string, publicKey: string, cipherMode?: number): string;
35
- /**
36
- * sm2 解密
37
- * @param {String} str 字符串
38
- * @param {String} privateKey 私钥
39
- * @param {Number} cipherMode 解密模式,1(C1C3C2)和0(C1C2C3),默认1
40
- * @param {Object} outputConfig 输出结果配置,{output:'string/array'}
41
- * @returns {String,Array} 返回解密后的数据
42
- */
43
- export function decrypt(str: string, privateKey: string, cipherMode?: number, outputConfig?: Object): string;
44
- /**
45
- * sm2 生成签名
46
- * @param {String} str 字符串
47
- * @param {String} privateKey 私钥
48
- * @param {Object} signatureConfig 签名配置
49
- * @returns {String} 返回签名信息
50
- */
51
- export function doSignature(str: string, privateKey: string, signatureConfig: Object): string;
52
- /**
53
- * sm2 验证签名
54
- * @param {String} str 字符串
55
- * @param {String} signHex 生成签名的信息
56
- * @param {String} publicKey 公钥
57
- * @param {Object} verifyConfig 验证配置
58
- * @returns {String} 返回结果
59
- */
60
- export function doVerifySignature(str: string, signHex: string, publicKey: string, verifyConfig: Object): string;
61
- /**
62
- * sm2 获取椭圆曲线点
63
- * @returns {Object} 返回椭圆曲线点,可在sm2签名时传入
64
- */
65
- export function getPoint(): Object;
66
- /**
67
- * sm2 根据私钥获取公钥
68
- * @param {String} privateKey 私钥
69
- * @returns {String} 返回公钥
70
- */
71
- export function getPublicKeyFromPrivateKey(privateKey: string): string;
@@ -1,101 +0,0 @@
1
- import { generateKeyPairHex as generateKeyPairHex$1, compressPublicKeyHex as compressPublicKeyHex$1, comparePublicKeyHex as comparePublicKeyHex$1, verifyPublicKey as verifyPublicKey$1, doEncrypt, doDecrypt, doSignature as doSignature$1, doVerifySignature as doVerifySignature$1, getPoint as getPoint$1, getPublicKeyFromPrivateKey as getPublicKeyFromPrivateKey$1 } from './sm2.mjs';
2
-
3
- // 获取密钥对
4
- /**
5
- * sm2 生成公钥和私钥
6
- * @param {String} str 字符串
7
- * @param {Number} rnd 随机数
8
- * @returns {Object} 返回公钥和私钥
9
- */
10
- function generateKeyPairHex(str, rnd) {
11
- return generateKeyPairHex$1(str, rnd);
12
- }
13
- /**
14
- * sm2 压缩公钥
15
- * @param {String} publicKey 公钥
16
- * @returns {String} 返回公钥字符串
17
- */
18
- function compressPublicKeyHex(publicKey) {
19
- return compressPublicKeyHex$1(publicKey);
20
- }
21
- /**
22
- * sm2 对比公钥是否等价
23
- * @param {String} publicKey 公钥
24
- * @param {String} compressedPublicKey 压缩后的公钥
25
- * @returns {Boolean} 返回结果
26
- */
27
- function comparePublicKeyHex(publicKey, compressedPublicKey) {
28
- return comparePublicKeyHex$1(publicKey, compressedPublicKey);
29
- }
30
- // 验证密钥对
31
- /**
32
- * sm2 验证公钥
33
- * @param {String} publicKey 公钥,也可以传压缩后的公钥
34
- * @returns {Boolean} 返回结果
35
- */
36
- function verifyPublicKey(publicKey) {
37
- return verifyPublicKey$1(publicKey);
38
- }
39
- // 加密解密
40
- /**
41
- * sm2 加密
42
- * @param {String} str 字符串
43
- * @param {String} publicKey 公钥
44
- * @param {Number} cipherMode 加密模式,1(C1C3C2)和0(C1C2C3),默认1
45
- * @returns {String} 返回加密后的字符串
46
- */
47
- function encrypt(str, publicKey, cipherMode = 1) {
48
- return doEncrypt(str, publicKey, cipherMode);
49
- }
50
- /**
51
- * sm2 解密
52
- * @param {String} str 字符串
53
- * @param {String} privateKey 私钥
54
- * @param {Number} cipherMode 解密模式,1(C1C3C2)和0(C1C2C3),默认1
55
- * @param {Object} outputConfig 输出结果配置,{output:'string/array'}
56
- * @returns {String,Array} 返回解密后的数据
57
- */
58
- function decrypt(str, privateKey, cipherMode = 1, outputConfig = { output: "string" }) {
59
- return doDecrypt(str, privateKey, cipherMode, outputConfig);
60
- }
61
- // 签名验签
62
- /**
63
- * sm2 生成签名
64
- * @param {String} str 字符串
65
- * @param {String} privateKey 私钥
66
- * @param {Object} signatureConfig 签名配置
67
- * @returns {String} 返回签名信息
68
- */
69
- function doSignature(str, privateKey, signatureConfig) {
70
- return doSignature$1(str, privateKey, signatureConfig);
71
- }
72
- /**
73
- * sm2 验证签名
74
- * @param {String} str 字符串
75
- * @param {String} signHex 生成签名的信息
76
- * @param {String} publicKey 公钥
77
- * @param {Object} verifyConfig 验证配置
78
- * @returns {String} 返回结果
79
- */
80
- function doVerifySignature(str, signHex, publicKey, verifyConfig) {
81
- return doVerifySignature$1(str, signHex, publicKey, verifyConfig);
82
- }
83
- // 获取椭圆曲线点
84
- /**
85
- * sm2 获取椭圆曲线点
86
- * @returns {Object} 返回椭圆曲线点,可在sm2签名时传入
87
- */
88
- function getPoint() {
89
- return getPoint$1();
90
- }
91
- // 根据私钥获取公钥
92
- /**
93
- * sm2 根据私钥获取公钥
94
- * @param {String} privateKey 私钥
95
- * @returns {String} 返回公钥
96
- */
97
- function getPublicKeyFromPrivateKey(privateKey) {
98
- return getPublicKeyFromPrivateKey$1(privateKey);
99
- }
100
-
101
- export { comparePublicKeyHex, compressPublicKeyHex, decrypt, doSignature, doVerifySignature, encrypt, generateKeyPairHex, getPoint, getPublicKeyFromPrivateKey, verifyPublicKey };
@@ -1,34 +0,0 @@
1
- export const generateKeyPairHex: typeof _.generateKeyPairHex;
2
- export const compressPublicKeyHex: typeof _.compressPublicKeyHex;
3
- export const comparePublicKeyHex: typeof _.comparePublicKeyHex;
4
- export const verifyPublicKey: typeof _.verifyPublicKey;
5
- import * as _ from "../lib/utils.js";
6
- /**
7
- * 加密
8
- */
9
- export function doEncrypt(msg: any, publicKey: any, cipherMode?: number): string;
10
- /**
11
- * 解密
12
- */
13
- export function doDecrypt(encryptData: any, privateKey: any, cipherMode?: number, { output }?: {
14
- output?: string | undefined;
15
- }): string | number[];
16
- /**
17
- * 签名
18
- */
19
- export function doSignature(msg: any, privateKey: any, { pointPool, der, hash, publicKey, userId }?: {}): any;
20
- /**
21
- * 验签
22
- */
23
- export function doVerifySignature(msg: any, signHex: any, publicKey: any, { der, hash, userId }?: {}): boolean;
24
- /**
25
- * 计算公钥
26
- */
27
- export function getPublicKeyFromPrivateKey(privateKey: any): string;
28
- /**
29
- * 获取椭圆曲线点
30
- */
31
- export function getPoint(): {
32
- privateKey: any;
33
- publicKey: string;
34
- };