pdf-codec 1.4.2 → 1.6.0

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 (170) hide show
  1. package/README.md +56 -15
  2. package/dist/assets/caladea-bold.cjs +5 -0
  3. package/dist/assets/caladea-bold.d.cts +4 -0
  4. package/dist/assets/caladea-bold.d.ts +4 -0
  5. package/dist/assets/caladea-bold.js +4 -0
  6. package/dist/assets/caladea-bolditalic.cjs +5 -0
  7. package/dist/assets/caladea-bolditalic.d.cts +4 -0
  8. package/dist/assets/caladea-bolditalic.d.ts +4 -0
  9. package/dist/assets/caladea-bolditalic.js +4 -0
  10. package/dist/assets/caladea-italic.cjs +5 -0
  11. package/dist/assets/caladea-italic.d.cts +4 -0
  12. package/dist/assets/caladea-italic.d.ts +4 -0
  13. package/dist/assets/caladea-italic.js +4 -0
  14. package/dist/assets/caladea-regular.cjs +5 -0
  15. package/dist/assets/caladea-regular.d.cts +4 -0
  16. package/dist/assets/caladea-regular.d.ts +4 -0
  17. package/dist/assets/caladea-regular.js +4 -0
  18. package/dist/assets/carlito-bold.cjs +5 -0
  19. package/dist/assets/carlito-bold.d.cts +4 -0
  20. package/dist/assets/carlito-bold.d.ts +4 -0
  21. package/dist/assets/carlito-bold.js +4 -0
  22. package/dist/assets/carlito-bolditalic.cjs +5 -0
  23. package/dist/assets/carlito-bolditalic.d.cts +4 -0
  24. package/dist/assets/carlito-bolditalic.d.ts +4 -0
  25. package/dist/assets/carlito-bolditalic.js +4 -0
  26. package/dist/assets/carlito-italic.cjs +5 -0
  27. package/dist/assets/carlito-italic.d.cts +4 -0
  28. package/dist/assets/carlito-italic.d.ts +4 -0
  29. package/dist/assets/carlito-italic.js +4 -0
  30. package/dist/assets/carlito-regular.cjs +5 -0
  31. package/dist/assets/carlito-regular.d.cts +4 -0
  32. package/dist/assets/carlito-regular.d.ts +4 -0
  33. package/dist/assets/carlito-regular.js +4 -0
  34. package/dist/cff-probe.cjs +133 -0
  35. package/dist/cff-probe.d.cts +10 -0
  36. package/dist/cff-probe.d.ts +10 -0
  37. package/dist/cff-probe.js +132 -0
  38. package/dist/cmap-table.cjs +108 -0
  39. package/dist/cmap-table.d.cts +6 -0
  40. package/dist/cmap-table.d.ts +6 -0
  41. package/dist/cmap-table.js +107 -0
  42. package/dist/content-write.cjs +36 -17
  43. package/dist/content-write.d.cts +9 -2
  44. package/dist/content-write.d.ts +9 -2
  45. package/dist/content-write.js +35 -16
  46. package/dist/crypto/aes.cjs +166 -0
  47. package/dist/crypto/aes.d.cts +6 -0
  48. package/dist/crypto/aes.d.ts +6 -0
  49. package/dist/crypto/aes.js +163 -0
  50. package/dist/crypto/md5.cjs +215 -0
  51. package/dist/crypto/md5.d.cts +4 -0
  52. package/dist/crypto/md5.d.ts +4 -0
  53. package/dist/crypto/md5.js +214 -0
  54. package/dist/crypto/rc4.cjs +29 -0
  55. package/dist/crypto/rc4.d.cts +4 -0
  56. package/dist/crypto/rc4.d.ts +4 -0
  57. package/dist/crypto/rc4.js +28 -0
  58. package/dist/crypto/sha2.cjs +261 -0
  59. package/dist/crypto/sha2.d.cts +6 -0
  60. package/dist/crypto/sha2.d.ts +6 -0
  61. package/dist/crypto/sha2.js +258 -0
  62. package/dist/diagnostics.cjs +7 -0
  63. package/dist/diagnostics.d.cts +4 -1
  64. package/dist/diagnostics.d.ts +4 -1
  65. package/dist/diagnostics.js +7 -1
  66. package/dist/document.cjs +38 -2
  67. package/dist/document.js +38 -2
  68. package/dist/embedded-font-CLedn-mT.d.cts +42 -0
  69. package/dist/embedded-font-CbqkKgBl.d.ts +42 -0
  70. package/dist/embedded-font-write.cjs +92 -0
  71. package/dist/embedded-font-write.d.cts +22 -0
  72. package/dist/embedded-font-write.d.ts +22 -0
  73. package/dist/embedded-font-write.js +90 -0
  74. package/dist/embedded-font.cjs +142 -0
  75. package/dist/embedded-font.d.cts +2 -0
  76. package/dist/embedded-font.d.ts +2 -0
  77. package/dist/embedded-font.js +138 -0
  78. package/dist/encrypt.cjs +264 -0
  79. package/dist/encrypt.d.cts +11 -0
  80. package/dist/encrypt.d.ts +11 -0
  81. package/dist/encrypt.js +263 -0
  82. package/dist/filters.cjs +19 -1
  83. package/dist/filters.js +19 -1
  84. package/dist/font-registry-Cn7P9lAh.d.ts +38 -0
  85. package/dist/font-registry-yby02snZ.d.cts +38 -0
  86. package/dist/font-registry.cjs +152 -0
  87. package/dist/font-registry.d.cts +2 -0
  88. package/dist/font-registry.d.ts +2 -0
  89. package/dist/font-registry.js +150 -0
  90. package/dist/font-substitutes.cjs +13 -0
  91. package/dist/font-substitutes.d.cts +5 -0
  92. package/dist/font-substitutes.d.ts +5 -0
  93. package/dist/font-substitutes.js +12 -0
  94. package/dist/font-tables.cjs +127 -0
  95. package/dist/font-tables.d.cts +43 -0
  96. package/dist/font-tables.d.ts +43 -0
  97. package/dist/font-tables.js +122 -0
  98. package/dist/fonts.cjs +1 -0
  99. package/dist/fonts.d.cts +2 -1
  100. package/dist/fonts.d.ts +2 -1
  101. package/dist/fonts.js +1 -1
  102. package/dist/glyf.cjs +127 -0
  103. package/dist/glyf.d.cts +31 -0
  104. package/dist/glyf.d.ts +31 -0
  105. package/dist/glyf.js +125 -0
  106. package/dist/{math-hmtx.cjs → hmtx-table.cjs} +3 -3
  107. package/dist/{math-hmtx.d.ts → hmtx-table.d.cts} +2 -2
  108. package/dist/{math-hmtx.d.cts → hmtx-table.d.ts} +2 -2
  109. package/dist/{math-hmtx.js → hmtx-table.js} +3 -3
  110. package/dist/image/ccitt.cjs +488 -0
  111. package/dist/image/ccitt.d.cts +17 -0
  112. package/dist/image/ccitt.d.ts +17 -0
  113. package/dist/image/ccitt.js +487 -0
  114. package/dist/images-read.cjs +1 -4
  115. package/dist/images-read.js +2 -5
  116. package/dist/index.cjs +8 -0
  117. package/dist/index.d.cts +7 -4
  118. package/dist/index.d.ts +7 -4
  119. package/dist/index.js +5 -3
  120. package/dist/interpret.cjs +173 -38
  121. package/dist/interpret.d.cts +27 -10
  122. package/dist/interpret.d.ts +27 -10
  123. package/dist/interpret.js +174 -39
  124. package/dist/math-font-write.cjs +3 -32
  125. package/dist/math-font-write.js +2 -31
  126. package/dist/math-font.cjs +7 -5
  127. package/dist/math-font.js +5 -3
  128. package/dist/math-table.d.cts +1 -1
  129. package/dist/math-table.d.ts +1 -1
  130. package/dist/{matrix-B3c2_a2f.d.cts → matrix-BHzJESll.d.cts} +2 -1
  131. package/dist/{matrix-B3c2_a2f.d.ts → matrix-BHzJESll.d.ts} +2 -1
  132. package/dist/matrix.cjs +2 -0
  133. package/dist/matrix.d.cts +2 -2
  134. package/dist/matrix.d.ts +2 -2
  135. package/dist/matrix.js +2 -1
  136. package/dist/measure.cjs +65 -14
  137. package/dist/measure.d.cts +8 -1
  138. package/dist/measure.d.ts +8 -1
  139. package/dist/measure.js +64 -15
  140. package/dist/objects.cjs +4 -0
  141. package/dist/objects.d.cts +2 -1
  142. package/dist/objects.d.ts +2 -1
  143. package/dist/objects.js +4 -1
  144. package/dist/read.cjs +43 -4
  145. package/dist/read.d.cts +1 -1
  146. package/dist/read.d.ts +1 -1
  147. package/dist/read.js +43 -4
  148. package/dist/sfnt-V08bb5ut.d.cts +21 -0
  149. package/dist/sfnt-V08bb5ut.d.ts +21 -0
  150. package/dist/sfnt-subset.cjs +250 -0
  151. package/dist/sfnt-subset.d.cts +11 -0
  152. package/dist/sfnt-subset.d.ts +11 -0
  153. package/dist/sfnt-subset.js +249 -0
  154. package/dist/sfnt.cjs +50 -4
  155. package/dist/sfnt.d.cts +2 -17
  156. package/dist/sfnt.d.ts +2 -17
  157. package/dist/sfnt.js +47 -5
  158. package/dist/tounicode.cjs +34 -0
  159. package/dist/tounicode.d.cts +5 -0
  160. package/dist/tounicode.d.ts +5 -0
  161. package/dist/tounicode.js +33 -0
  162. package/dist/write.cjs +81 -11
  163. package/dist/write.d.cts +6 -0
  164. package/dist/write.d.ts +6 -0
  165. package/dist/write.js +82 -12
  166. package/package.json +1 -1
  167. package/dist/math-cmap.cjs +0 -81
  168. package/dist/math-cmap.d.cts +0 -6
  169. package/dist/math-cmap.d.ts +0 -6
  170. package/dist/math-cmap.js +0 -80
@@ -0,0 +1,214 @@
1
+ //#region src/crypto/md5.ts
2
+ const BLOCK_BYTES = 64;
3
+ const DIGEST_BYTES = 16;
4
+ const ROUNDS = 64;
5
+ const WORDS_PER_BLOCK = 16;
6
+ const T = new Uint32Array([
7
+ 3614090360,
8
+ 3905402710,
9
+ 606105819,
10
+ 3250441966,
11
+ 4118548399,
12
+ 1200080426,
13
+ 2821735955,
14
+ 4249261313,
15
+ 1770035416,
16
+ 2336552879,
17
+ 4294925233,
18
+ 2304563134,
19
+ 1804603682,
20
+ 4254626195,
21
+ 2792965006,
22
+ 1236535329,
23
+ 4129170786,
24
+ 3225465664,
25
+ 643717713,
26
+ 3921069994,
27
+ 3593408605,
28
+ 38016083,
29
+ 3634488961,
30
+ 3889429448,
31
+ 568446438,
32
+ 3275163606,
33
+ 4107603335,
34
+ 1163531501,
35
+ 2850285829,
36
+ 4243563512,
37
+ 1735328473,
38
+ 2368359562,
39
+ 4294588738,
40
+ 2272392833,
41
+ 1839030562,
42
+ 4259657740,
43
+ 2763975236,
44
+ 1272893353,
45
+ 4139469664,
46
+ 3200236656,
47
+ 681279174,
48
+ 3936430074,
49
+ 3572445317,
50
+ 76029189,
51
+ 3654602809,
52
+ 3873151461,
53
+ 530742520,
54
+ 3299628645,
55
+ 4096336452,
56
+ 1126891415,
57
+ 2878612391,
58
+ 4237533241,
59
+ 1700485571,
60
+ 2399980690,
61
+ 4293915773,
62
+ 2240044497,
63
+ 1873313359,
64
+ 4264355552,
65
+ 2734768916,
66
+ 1309151649,
67
+ 4149444226,
68
+ 3174756917,
69
+ 718787259,
70
+ 3951481745
71
+ ]);
72
+ const SHIFT = [
73
+ 7,
74
+ 12,
75
+ 17,
76
+ 22,
77
+ 7,
78
+ 12,
79
+ 17,
80
+ 22,
81
+ 7,
82
+ 12,
83
+ 17,
84
+ 22,
85
+ 7,
86
+ 12,
87
+ 17,
88
+ 22,
89
+ 5,
90
+ 9,
91
+ 14,
92
+ 20,
93
+ 5,
94
+ 9,
95
+ 14,
96
+ 20,
97
+ 5,
98
+ 9,
99
+ 14,
100
+ 20,
101
+ 5,
102
+ 9,
103
+ 14,
104
+ 20,
105
+ 4,
106
+ 11,
107
+ 16,
108
+ 23,
109
+ 4,
110
+ 11,
111
+ 16,
112
+ 23,
113
+ 4,
114
+ 11,
115
+ 16,
116
+ 23,
117
+ 4,
118
+ 11,
119
+ 16,
120
+ 23,
121
+ 6,
122
+ 10,
123
+ 15,
124
+ 21,
125
+ 6,
126
+ 10,
127
+ 15,
128
+ 21,
129
+ 6,
130
+ 10,
131
+ 15,
132
+ 21,
133
+ 6,
134
+ 10,
135
+ 15,
136
+ 21
137
+ ];
138
+ const INITIAL_STATE = [
139
+ 1732584193,
140
+ 4023233417,
141
+ 2562383102,
142
+ 271733878
143
+ ];
144
+ function rotl32(value, bits) {
145
+ return (value << bits | value >>> 32 - bits) >>> 0;
146
+ }
147
+ function padMessage(bytes) {
148
+ const paddedLength = (Math.floor((bytes.length + 8) / BLOCK_BYTES) + 1) * BLOCK_BYTES;
149
+ const padded = new Uint8Array(paddedLength);
150
+ padded.set(bytes);
151
+ padded[bytes.length] = 128;
152
+ const bitLength = bytes.length * 8;
153
+ let low = bitLength % 4294967296;
154
+ let high = Math.floor(bitLength / 4294967296);
155
+ for (let i = 0; i < 4; i++) {
156
+ padded[paddedLength - 8 + i] = low & 255;
157
+ low = Math.floor(low / 256);
158
+ padded[paddedLength - 4 + i] = high & 255;
159
+ high = Math.floor(high / 256);
160
+ }
161
+ return padded;
162
+ }
163
+ function md5(bytes) {
164
+ const padded = padMessage(bytes);
165
+ const state = Int32Array.from(INITIAL_STATE);
166
+ const block = new Uint32Array(WORDS_PER_BLOCK);
167
+ for (let offset = 0; offset < padded.length; offset += BLOCK_BYTES) {
168
+ for (let i = 0; i < WORDS_PER_BLOCK; i++) {
169
+ const at = offset + i * 4;
170
+ block[i] = (padded[at] | padded[at + 1] << 8 | padded[at + 2] << 16 | padded[at + 3] << 24) >>> 0;
171
+ }
172
+ let a = state[0];
173
+ let b = state[1];
174
+ let c = state[2];
175
+ let d = state[3];
176
+ for (let i = 0; i < ROUNDS; i++) {
177
+ let f;
178
+ let g;
179
+ if (i < 16) {
180
+ f = b & c | ~b & d;
181
+ g = i;
182
+ } else if (i < 32) {
183
+ f = d & b | ~d & c;
184
+ g = (5 * i + 1) % WORDS_PER_BLOCK;
185
+ } else if (i < 48) {
186
+ f = b ^ c ^ d;
187
+ g = (3 * i + 5) % WORDS_PER_BLOCK;
188
+ } else {
189
+ f = c ^ (b | ~d);
190
+ g = 7 * i % WORDS_PER_BLOCK;
191
+ }
192
+ const rotated = rotl32(a + (f >>> 0) + T[i] + block[g] >>> 0, SHIFT[i]);
193
+ a = d;
194
+ d = c;
195
+ c = b;
196
+ b = b + rotated >>> 0;
197
+ }
198
+ state[0] = state[0] + a | 0;
199
+ state[1] = state[1] + b | 0;
200
+ state[2] = state[2] + c | 0;
201
+ state[3] = state[3] + d | 0;
202
+ }
203
+ const digest = new Uint8Array(DIGEST_BYTES);
204
+ for (let i = 0; i < state.length; i++) {
205
+ const word = state[i];
206
+ digest[i * 4] = word & 255;
207
+ digest[i * 4 + 1] = word >>> 8 & 255;
208
+ digest[i * 4 + 2] = word >>> 16 & 255;
209
+ digest[i * 4 + 3] = word >>> 24 & 255;
210
+ }
211
+ return digest;
212
+ }
213
+ //#endregion
214
+ export { md5 };
@@ -0,0 +1,29 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/crypto/rc4.ts
3
+ const STATE_SIZE = 256;
4
+ function rc4(key, data) {
5
+ const state = new Uint8Array(STATE_SIZE);
6
+ for (let i = 0; i < STATE_SIZE; i++) state[i] = i;
7
+ if (key.length === 0) return Uint8Array.from(data);
8
+ let j = 0;
9
+ for (let i = 0; i < STATE_SIZE; i++) {
10
+ j = j + state[i] + key[i % key.length] & 255;
11
+ const swap = state[i];
12
+ state[i] = state[j];
13
+ state[j] = swap;
14
+ }
15
+ const out = new Uint8Array(data.length);
16
+ let x = 0;
17
+ let y = 0;
18
+ for (let n = 0; n < data.length; n++) {
19
+ x = x + 1 & 255;
20
+ y = y + state[x] & 255;
21
+ const swap = state[x];
22
+ state[x] = state[y];
23
+ state[y] = swap;
24
+ out[n] = data[n] ^ state[state[x] + state[y] & 255];
25
+ }
26
+ return out;
27
+ }
28
+ //#endregion
29
+ exports.rc4 = rc4;
@@ -0,0 +1,4 @@
1
+ //#region src/crypto/rc4.d.ts
2
+ declare function rc4(key: Uint8Array<ArrayBuffer>, data: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
3
+ //#endregion
4
+ export { rc4 };
@@ -0,0 +1,4 @@
1
+ //#region src/crypto/rc4.d.ts
2
+ declare function rc4(key: Uint8Array<ArrayBuffer>, data: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
3
+ //#endregion
4
+ export { rc4 };
@@ -0,0 +1,28 @@
1
+ //#region src/crypto/rc4.ts
2
+ const STATE_SIZE = 256;
3
+ function rc4(key, data) {
4
+ const state = new Uint8Array(STATE_SIZE);
5
+ for (let i = 0; i < STATE_SIZE; i++) state[i] = i;
6
+ if (key.length === 0) return Uint8Array.from(data);
7
+ let j = 0;
8
+ for (let i = 0; i < STATE_SIZE; i++) {
9
+ j = j + state[i] + key[i % key.length] & 255;
10
+ const swap = state[i];
11
+ state[i] = state[j];
12
+ state[j] = swap;
13
+ }
14
+ const out = new Uint8Array(data.length);
15
+ let x = 0;
16
+ let y = 0;
17
+ for (let n = 0; n < data.length; n++) {
18
+ x = x + 1 & 255;
19
+ y = y + state[x] & 255;
20
+ const swap = state[x];
21
+ state[x] = state[y];
22
+ state[y] = swap;
23
+ out[n] = data[n] ^ state[state[x] + state[y] & 255];
24
+ }
25
+ return out;
26
+ }
27
+ //#endregion
28
+ export { rc4 };
@@ -0,0 +1,261 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/crypto/sha2.ts
3
+ const SHA256_BLOCK_BYTES = 64;
4
+ const SHA256_ROUNDS = 64;
5
+ const SHA512_BLOCK_BYTES = 128;
6
+ const SHA512_ROUNDS = 80;
7
+ const WORDS_PER_BLOCK = 16;
8
+ const MASK64 = 18446744073709551615n;
9
+ const K512 = [
10
+ 4794697086780616226n,
11
+ 8158064640168781261n,
12
+ 13096744586834688815n,
13
+ 16840607885511220156n,
14
+ 4131703408338449720n,
15
+ 6480981068601479193n,
16
+ 10538285296894168987n,
17
+ 12329834152419229976n,
18
+ 15566598209576043074n,
19
+ 1334009975649890238n,
20
+ 2608012711638119052n,
21
+ 6128411473006802146n,
22
+ 8268148722764581231n,
23
+ 9286055187155687089n,
24
+ 11230858885718282805n,
25
+ 13951009754708518548n,
26
+ 16472876342353939154n,
27
+ 17275323862435702243n,
28
+ 1135362057144423861n,
29
+ 2597628984639134821n,
30
+ 3308224258029322869n,
31
+ 5365058923640841347n,
32
+ 6679025012923562964n,
33
+ 8573033837759648693n,
34
+ 10970295158949994411n,
35
+ 12119686244451234320n,
36
+ 12683024718118986047n,
37
+ 13788192230050041572n,
38
+ 14330467153632333762n,
39
+ 15395433587784984357n,
40
+ 489312712824947311n,
41
+ 1452737877330783856n,
42
+ 2861767655752347644n,
43
+ 3322285676063803686n,
44
+ 5560940570517711597n,
45
+ 5996557281743188959n,
46
+ 7280758554555802590n,
47
+ 8532644243296465576n,
48
+ 9350256976987008742n,
49
+ 10552545826968843579n,
50
+ 11727347734174303076n,
51
+ 12113106623233404929n,
52
+ 14000437183269869457n,
53
+ 14369950271660146224n,
54
+ 15101387698204529176n,
55
+ 15463397548674623760n,
56
+ 17586052441742319658n,
57
+ 1182934255886127544n,
58
+ 1847814050463011016n,
59
+ 2177327727835720531n,
60
+ 2830643537854262169n,
61
+ 3796741975233480872n,
62
+ 4115178125766777443n,
63
+ 5681478168544905931n,
64
+ 6601373596472566643n,
65
+ 7507060721942968483n,
66
+ 8399075790359081724n,
67
+ 8693463985226723168n,
68
+ 9568029438360202098n,
69
+ 10144078919501101548n,
70
+ 10430055236837252648n,
71
+ 11840083180663258601n,
72
+ 13761210420658862357n,
73
+ 14299343276471374635n,
74
+ 14566680578165727644n,
75
+ 15097957966210449927n,
76
+ 16922976911328602910n,
77
+ 17689382322260857208n,
78
+ 500013540394364858n,
79
+ 748580250866718886n,
80
+ 1242879168328830382n,
81
+ 1977374033974150939n,
82
+ 2944078676154940804n,
83
+ 3659926193048069267n,
84
+ 4368137639120453308n,
85
+ 4836135668995329356n,
86
+ 5532061633213252278n,
87
+ 6448918945643986474n,
88
+ 6902733635092675308n,
89
+ 7801388544844847127n
90
+ ];
91
+ const H512 = [
92
+ 7640891576956012808n,
93
+ 13503953896175478587n,
94
+ 4354685564936845355n,
95
+ 11912009170470909681n,
96
+ 5840696475078001361n,
97
+ 11170449401992604703n,
98
+ 2270897969802886507n,
99
+ 6620516959819538809n
100
+ ];
101
+ const H384 = [
102
+ 14680500436340154072n,
103
+ 7105036623409894663n,
104
+ 10473403895298186519n,
105
+ 1526699215303891257n,
106
+ 7436329637833083697n,
107
+ 10282925794625328401n,
108
+ 15784041429090275239n,
109
+ 5167115440072839076n
110
+ ];
111
+ const K256 = Uint32Array.from(K512.slice(0, SHA256_ROUNDS), (k) => Number(k >> 32n));
112
+ const H256 = Uint32Array.from(H512, (h) => Number(h >> 32n));
113
+ function padBigEndian(bytes, blockBytes, lengthBytes) {
114
+ const paddedLength = (Math.floor((bytes.length + lengthBytes) / blockBytes) + 1) * blockBytes;
115
+ const padded = new Uint8Array(paddedLength);
116
+ padded.set(bytes);
117
+ padded[bytes.length] = 128;
118
+ let bitLength = bytes.length * 8;
119
+ for (let i = 0; i < lengthBytes && bitLength > 0; i++) {
120
+ padded[paddedLength - 1 - i] = bitLength % 256;
121
+ bitLength = Math.floor(bitLength / 256);
122
+ }
123
+ return padded;
124
+ }
125
+ function rotr32(value, bits) {
126
+ return (value >>> bits | value << 32 - bits) >>> 0;
127
+ }
128
+ function sha256(bytes) {
129
+ const padded = padBigEndian(bytes, SHA256_BLOCK_BYTES, 8);
130
+ const state = Uint32Array.from(H256);
131
+ const w = new Uint32Array(SHA256_ROUNDS);
132
+ for (let offset = 0; offset < padded.length; offset += SHA256_BLOCK_BYTES) {
133
+ for (let t = 0; t < WORDS_PER_BLOCK; t++) {
134
+ const at = offset + t * 4;
135
+ w[t] = (padded[at] << 24 | padded[at + 1] << 16 | padded[at + 2] << 8 | padded[at + 3]) >>> 0;
136
+ }
137
+ for (let t = WORDS_PER_BLOCK; t < SHA256_ROUNDS; t++) {
138
+ const x = w[t - 15];
139
+ const y = w[t - 2];
140
+ const s0 = rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;
141
+ const s1 = rotr32(y, 17) ^ rotr32(y, 19) ^ y >>> 10;
142
+ w[t] = w[t - 16] + s0 + w[t - 7] + s1 >>> 0;
143
+ }
144
+ let a = state[0];
145
+ let b = state[1];
146
+ let c = state[2];
147
+ let d = state[3];
148
+ let e = state[4];
149
+ let f = state[5];
150
+ let g = state[6];
151
+ let h = state[7];
152
+ for (let t = 0; t < SHA256_ROUNDS; t++) {
153
+ const bigS1 = rotr32(e, 6) ^ rotr32(e, 11) ^ rotr32(e, 25);
154
+ const ch = e & f ^ ~e & g;
155
+ const t1 = h + bigS1 + (ch >>> 0) + K256[t] + w[t] >>> 0;
156
+ const t2 = (rotr32(a, 2) ^ rotr32(a, 13) ^ rotr32(a, 22)) + ((a & b ^ a & c ^ b & c) >>> 0) >>> 0;
157
+ h = g;
158
+ g = f;
159
+ f = e;
160
+ e = d + t1 >>> 0;
161
+ d = c;
162
+ c = b;
163
+ b = a;
164
+ a = t1 + t2 >>> 0;
165
+ }
166
+ const next = [
167
+ a,
168
+ b,
169
+ c,
170
+ d,
171
+ e,
172
+ f,
173
+ g,
174
+ h
175
+ ];
176
+ for (let i = 0; i < state.length; i++) state[i] = state[i] + next[i] >>> 0;
177
+ }
178
+ const digest = new Uint8Array(state.length * 4);
179
+ for (let i = 0; i < state.length; i++) {
180
+ const word = state[i];
181
+ digest[i * 4] = word >>> 24 & 255;
182
+ digest[i * 4 + 1] = word >>> 16 & 255;
183
+ digest[i * 4 + 2] = word >>> 8 & 255;
184
+ digest[i * 4 + 3] = word & 255;
185
+ }
186
+ return digest;
187
+ }
188
+ function rotr64(value, bits) {
189
+ return (value >> bits | value << 64n - bits) & MASK64;
190
+ }
191
+ function sha512Core(bytes, initialState, outputWords) {
192
+ const padded = padBigEndian(bytes, SHA512_BLOCK_BYTES, 16);
193
+ const state = Array.from(initialState);
194
+ const w = new Array(SHA512_ROUNDS).fill(0n);
195
+ for (let offset = 0; offset < padded.length; offset += SHA512_BLOCK_BYTES) {
196
+ for (let t = 0; t < WORDS_PER_BLOCK; t++) {
197
+ let word = 0n;
198
+ for (let i = 0; i < 8; i++) word = word << 8n | BigInt(padded[offset + t * 8 + i]);
199
+ w[t] = word;
200
+ }
201
+ for (let t = WORDS_PER_BLOCK; t < SHA512_ROUNDS; t++) {
202
+ const x = w[t - 15];
203
+ const y = w[t - 2];
204
+ const s0 = rotr64(x, 1n) ^ rotr64(x, 8n) ^ x >> 7n;
205
+ const s1 = rotr64(y, 19n) ^ rotr64(y, 61n) ^ y >> 6n;
206
+ w[t] = w[t - 16] + s0 + w[t - 7] + s1 & MASK64;
207
+ }
208
+ let a = state[0];
209
+ let b = state[1];
210
+ let c = state[2];
211
+ let d = state[3];
212
+ let e = state[4];
213
+ let f = state[5];
214
+ let g = state[6];
215
+ let h = state[7];
216
+ for (let t = 0; t < SHA512_ROUNDS; t++) {
217
+ const bigS1 = rotr64(e, 14n) ^ rotr64(e, 18n) ^ rotr64(e, 41n);
218
+ const ch = e & f ^ ~e & MASK64 & g;
219
+ const t1 = h + bigS1 + ch + K512[t] + w[t] & MASK64;
220
+ const t2 = (rotr64(a, 28n) ^ rotr64(a, 34n) ^ rotr64(a, 39n)) + (a & b ^ a & c ^ b & c) & MASK64;
221
+ h = g;
222
+ g = f;
223
+ f = e;
224
+ e = d + t1 & MASK64;
225
+ d = c;
226
+ c = b;
227
+ b = a;
228
+ a = t1 + t2 & MASK64;
229
+ }
230
+ const next = [
231
+ a,
232
+ b,
233
+ c,
234
+ d,
235
+ e,
236
+ f,
237
+ g,
238
+ h
239
+ ];
240
+ for (let i = 0; i < state.length; i++) state[i] = state[i] + next[i] & MASK64;
241
+ }
242
+ const digest = new Uint8Array(outputWords * 8);
243
+ for (let i = 0; i < outputWords; i++) {
244
+ let word = state[i];
245
+ for (let j = 7; j >= 0; j--) {
246
+ digest[i * 8 + j] = Number(word & 255n);
247
+ word >>= 8n;
248
+ }
249
+ }
250
+ return digest;
251
+ }
252
+ function sha512(bytes) {
253
+ return sha512Core(bytes, H512, 8);
254
+ }
255
+ function sha384(bytes) {
256
+ return sha512Core(bytes, H384, 6);
257
+ }
258
+ //#endregion
259
+ exports.sha256 = sha256;
260
+ exports.sha384 = sha384;
261
+ exports.sha512 = sha512;
@@ -0,0 +1,6 @@
1
+ //#region src/crypto/sha2.d.ts
2
+ declare function sha256(bytes: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
3
+ declare function sha512(bytes: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
4
+ declare function sha384(bytes: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
5
+ //#endregion
6
+ export { sha256, sha384, sha512 };
@@ -0,0 +1,6 @@
1
+ //#region src/crypto/sha2.d.ts
2
+ declare function sha256(bytes: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
3
+ declare function sha512(bytes: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
4
+ declare function sha384(bytes: Uint8Array<ArrayBuffer>): Uint8Array<ArrayBuffer>;
5
+ //#endregion
6
+ export { sha256, sha384, sha512 };