aegis-aead 0.1.1 → 0.2.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 (48) hide show
  1. package/README.md +241 -60
  2. package/dist/aegis128l-bs.d.ts +162 -0
  3. package/dist/aegis128l-bs.d.ts.map +1 -0
  4. package/dist/aegis128l-bs.js +470 -0
  5. package/dist/aegis128l-bs.js.map +1 -0
  6. package/dist/aegis128l.d.ts +42 -5
  7. package/dist/aegis128l.d.ts.map +1 -1
  8. package/dist/aegis128l.js +79 -5
  9. package/dist/aegis128l.js.map +1 -1
  10. package/dist/aegis128x.d.ts +67 -12
  11. package/dist/aegis128x.d.ts.map +1 -1
  12. package/dist/aegis128x.js +102 -9
  13. package/dist/aegis128x.js.map +1 -1
  14. package/dist/aegis256-bs.d.ts +151 -0
  15. package/dist/aegis256-bs.d.ts.map +1 -0
  16. package/dist/aegis256-bs.js +398 -0
  17. package/dist/aegis256-bs.js.map +1 -0
  18. package/dist/aegis256.d.ts +42 -5
  19. package/dist/aegis256.d.ts.map +1 -1
  20. package/dist/aegis256.js +79 -5
  21. package/dist/aegis256.js.map +1 -1
  22. package/dist/aegis256x.d.ts +67 -12
  23. package/dist/aegis256x.d.ts.map +1 -1
  24. package/dist/aegis256x.js +102 -9
  25. package/dist/aegis256x.js.map +1 -1
  26. package/dist/aes-bs.d.ts +71 -0
  27. package/dist/aes-bs.d.ts.map +1 -0
  28. package/dist/aes-bs.js +399 -0
  29. package/dist/aes-bs.js.map +1 -0
  30. package/dist/index.d.ts +6 -4
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +6 -4
  33. package/dist/index.js.map +1 -1
  34. package/dist/random.d.ts +22 -0
  35. package/dist/random.d.ts.map +1 -0
  36. package/dist/random.js +36 -0
  37. package/dist/random.js.map +1 -0
  38. package/package.json +1 -1
  39. package/src/aegis128l-bs.ts +602 -0
  40. package/src/aegis128l.ts +112 -5
  41. package/src/aegis128x.ts +174 -15
  42. package/src/aegis256-bs.ts +518 -0
  43. package/src/aegis256.ts +112 -5
  44. package/src/aegis256x.ts +174 -15
  45. package/src/aes-bs.ts +459 -0
  46. package/src/index.ts +66 -0
  47. package/src/random.ts +41 -0
  48. package/README.md~ +0 -154
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Bitsliced AES implementation using 32-bit integers.
3
+ * Processes 8 AES blocks simultaneously for constant-time operation.
4
+ * Based on the barrel-shiftrows representation by Adomnicai and Peyrin.
5
+ */
6
+ /**
7
+ * Bitsliced representation of 8 AES blocks.
8
+ * 32 uint32 words where each bit position corresponds to one of 8 blocks.
9
+ */
10
+ export type AesBlocks = Uint32Array;
11
+ /**
12
+ * A single AES block as 4 uint32 words (little-endian).
13
+ */
14
+ export type AesBlock = Uint32Array;
15
+ /**
16
+ * Creates a new bitsliced state for 8 AES blocks.
17
+ */
18
+ export declare function createAesBlocks(): AesBlocks;
19
+ /**
20
+ * Creates a new AES block (4 uint32 words).
21
+ */
22
+ export declare function createAesBlock(): AesBlock;
23
+ /**
24
+ * Complete AES round (SubBytes + ShiftRows + MixColumns).
25
+ * Note: AddRoundKey is handled separately in AEGIS.
26
+ */
27
+ export declare function aesRound(st: AesBlocks): void;
28
+ /**
29
+ * Pack 8 AES blocks into bitsliced representation.
30
+ */
31
+ export declare function pack(st: AesBlocks): void;
32
+ /**
33
+ * Unpack bitsliced representation to 8 AES blocks.
34
+ */
35
+ export declare function unpack(st: AesBlocks): void;
36
+ /**
37
+ * Pack only blocks 0 and 4 (used for constant inputs in AEGIS-128L).
38
+ */
39
+ export declare function pack04(st: AesBlocks): void;
40
+ /**
41
+ * Computes the index into the bitsliced state array.
42
+ * @param block - Block index (0-7)
43
+ * @param word - Word index (0-3)
44
+ */
45
+ export declare function wordIdx(block: number, word: number): number;
46
+ /**
47
+ * Rotate all blocks right by 1 position (for AEGIS state rotation).
48
+ * Performs (st[i] & 0xfefefefe) >> 1 | (st[i] & 0x01010101) << 7
49
+ */
50
+ export declare function blocksRotr(st: AesBlocks): void;
51
+ /**
52
+ * Put a single AES block into the bitsliced state at the given block position.
53
+ */
54
+ export declare function blocksPut(st: AesBlocks, s: AesBlock, block: number): void;
55
+ /**
56
+ * Load a 16-byte buffer into an AES block (4 uint32 little-endian).
57
+ */
58
+ export declare function blockFromBytes(out: AesBlock, src: Uint8Array): void;
59
+ /**
60
+ * Store an AES block to a 16-byte buffer (little-endian).
61
+ */
62
+ export declare function blockToBytes(out: Uint8Array, src: AesBlock): void;
63
+ /**
64
+ * XOR two AES blocks: out = a ^ b
65
+ */
66
+ export declare function blockXor(out: AesBlock, a: AesBlock, b: AesBlock): void;
67
+ /**
68
+ * XOR two bitsliced states: a ^= b
69
+ */
70
+ export declare function blocksXor(a: AesBlocks, b: AesBlocks): void;
71
+ //# sourceMappingURL=aes-bs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-bs.d.ts","sourceRoot":"","sources":["../src/aes-bs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEnC;;GAEG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAEzC;AA4QD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAI5C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAsBxC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAsB1C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAuB1C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAK9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAKzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAMjE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,CAKtE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,IAAI,CAI1D"}
package/dist/aes-bs.js ADDED
@@ -0,0 +1,399 @@
1
+ /**
2
+ * Bitsliced AES implementation using 32-bit integers.
3
+ * Processes 8 AES blocks simultaneously for constant-time operation.
4
+ * Based on the barrel-shiftrows representation by Adomnicai and Peyrin.
5
+ */
6
+ /**
7
+ * Creates a new bitsliced state for 8 AES blocks.
8
+ */
9
+ export function createAesBlocks() {
10
+ return new Uint32Array(32);
11
+ }
12
+ /**
13
+ * Creates a new AES block (4 uint32 words).
14
+ */
15
+ export function createAesBlock() {
16
+ return new Uint32Array(4);
17
+ }
18
+ /**
19
+ * Swap-move operation used in pack/unpack transformations.
20
+ * Swaps bits at positions n between a and b using a mask.
21
+ */
22
+ function swapmove(st, aIdx, bIdx, mask, n) {
23
+ const tmp = ((st[bIdx] ^ (st[aIdx] >>> n)) & mask) >>> 0;
24
+ st[bIdx] = (st[bIdx] ^ tmp) >>> 0;
25
+ st[aIdx] = (st[aIdx] ^ ((tmp << n) >>> 0)) >>> 0;
26
+ }
27
+ /**
28
+ * 32-bit left rotation.
29
+ */
30
+ function rotl32(x, b) {
31
+ return ((x << b) | (x >>> (32 - b))) >>> 0;
32
+ }
33
+ /**
34
+ * S-box implementation using bitsliced logic gates.
35
+ * Maximov & Ekdahl circuit.
36
+ */
37
+ function sbox(st, offset) {
38
+ let u0 = st[offset];
39
+ let u1 = st[offset + 1];
40
+ let u2 = st[offset + 2];
41
+ let u3 = st[offset + 3];
42
+ let u4 = st[offset + 4];
43
+ let u5 = st[offset + 5];
44
+ let u6 = st[offset + 6];
45
+ let u7 = st[offset + 7];
46
+ const z24 = (u3 ^ u4) >>> 0;
47
+ const q17 = (u1 ^ u7) >>> 0;
48
+ const q16 = (u5 ^ q17) >>> 0;
49
+ const q0 = (z24 ^ q16) >>> 0;
50
+ const q7 = (z24 ^ u1 ^ u6) >>> 0;
51
+ const q2 = (u2 ^ q0) >>> 0;
52
+ const q1 = (q7 ^ q2) >>> 0;
53
+ const q3 = (u0 ^ q7) >>> 0;
54
+ const q4 = (u0 ^ q2) >>> 0;
55
+ const q5 = (u1 ^ q4) >>> 0;
56
+ const q6 = (u2 ^ u3) >>> 0;
57
+ const q10 = (q6 ^ q7) >>> 0;
58
+ const q8 = (u0 ^ q10) >>> 0;
59
+ const q9 = (q8 ^ q2) >>> 0;
60
+ const q12 = (z24 ^ q17) >>> 0;
61
+ const q15 = (u7 ^ q4) >>> 0;
62
+ const q13 = (z24 ^ q15) >>> 0;
63
+ const q14 = (q15 ^ q0) >>> 0;
64
+ const q11 = u5;
65
+ // NAND(x, y) = ~(x & y)
66
+ // NOR(x, y) = ~(x | y)
67
+ // XNOR(x, y) = ~(x ^ y)
68
+ // MUX(s, x, y) = (x & s) | (y & ~s)
69
+ const nand = (x, y) => ~(x & y) >>> 0;
70
+ const nor = (x, y) => ~(x | y) >>> 0;
71
+ const xnor = (x, y) => ~(x ^ y) >>> 0;
72
+ const mux = (s, x, y) => (((x & s) >>> 0) | ((y & ~s) >>> 0)) >>> 0;
73
+ const t20 = nand(q6, q12);
74
+ const t21 = nand(q3, q14);
75
+ const t22 = nand(q1, q16);
76
+ const x0 = (nor(q3, q14) ^ nand(q0, q7) ^ (t20 ^ t22)) >>> 0;
77
+ const x1 = (nor(q4, q13) ^ nand(q10, q11) ^ (t21 ^ t20)) >>> 0;
78
+ const x2 = (nor(q2, q17) ^ nand(q5, q9) ^ (t21 ^ t22)) >>> 0;
79
+ const x3 = (nor(q8, q15) ^ nand(q2, q17) ^ (t21 ^ nand(q4, q13))) >>> 0;
80
+ const t2 = xnor(nand(x0, x2), nor(x1, x3));
81
+ const y0 = mux(x2, t2, x3);
82
+ const y2 = mux(x0, t2, x1);
83
+ const y1 = mux(t2, x3, mux(x1, x2, 0xffffffff));
84
+ const y3 = mux(t2, x1, mux(x3, x0, 0xffffffff));
85
+ const y02 = (y2 ^ y0) >>> 0;
86
+ const y13 = (y3 ^ y1) >>> 0;
87
+ const y23 = (y3 ^ y2) >>> 0;
88
+ const y01 = (y1 ^ y0) >>> 0;
89
+ const y00 = (y02 ^ y13) >>> 0;
90
+ const n0 = nand(y01, q11);
91
+ const n1 = nand(y0, q12);
92
+ const n2 = nand(y1, q0);
93
+ const n3 = nand(y23, q17);
94
+ const n4 = nand(y2, q5);
95
+ const n5 = nand(y3, q15);
96
+ const n6 = nand(y13, q14);
97
+ const n7 = nand(y00, q16);
98
+ const n8 = nand(y02, q13);
99
+ const n9 = nand(y01, q7);
100
+ const n10 = nand(y0, q10);
101
+ const n11 = nand(y1, q6);
102
+ const n12 = nand(y23, q2);
103
+ const n13 = nand(y2, q9);
104
+ const n14 = nand(y3, q8);
105
+ const n15 = nand(y13, q3);
106
+ const n16 = nand(y00, q1);
107
+ const n17 = nand(y02, q4);
108
+ const h1 = (n4 ^ n1 ^ n5) >>> 0;
109
+ u2 = xnor(n2, h1);
110
+ const h2 = (n9 ^ n15) >>> 0;
111
+ u6 = xnor(h2, (n11 ^ n17) >>> 0);
112
+ const h4 = (n11 ^ n14) >>> 0;
113
+ const h5 = (n9 ^ n12) >>> 0;
114
+ u5 = (h4 ^ h5) >>> 0;
115
+ const h7 = (u2 ^ u6) >>> 0;
116
+ const h8 = (n10 ^ h7) >>> 0;
117
+ u7 = xnor((n16 ^ h2) >>> 0, h8);
118
+ const h9 = (n8 ^ h1) >>> 0;
119
+ const h10 = (n13 ^ h8) >>> 0;
120
+ u3 = (h5 ^ h10) >>> 0;
121
+ const h13 = (h4 ^ n7 ^ h9 ^ h10) >>> 0;
122
+ u4 = (n1 ^ h13) >>> 0;
123
+ const h14 = xnor(n0, u7);
124
+ u1 = xnor(n6, (h7 ^ h9 ^ h14) >>> 0);
125
+ u0 = (h13 ^ n3 ^ n4 ^ h14) >>> 0;
126
+ st[offset] = u0;
127
+ st[offset + 1] = u1;
128
+ st[offset + 2] = u2;
129
+ st[offset + 3] = u3;
130
+ st[offset + 4] = u4;
131
+ st[offset + 5] = u5;
132
+ st[offset + 6] = u6;
133
+ st[offset + 7] = u7;
134
+ }
135
+ /**
136
+ * Apply S-box to all 4 byte positions.
137
+ */
138
+ function sboxes(st) {
139
+ for (let i = 0; i < 4; i++) {
140
+ sbox(st, 8 * i);
141
+ }
142
+ }
143
+ /**
144
+ * ShiftRows operation in bitsliced form.
145
+ */
146
+ function shiftrows(st) {
147
+ for (let i = 8; i < 16; i++) {
148
+ st[i] = rotl32(st[i], 24);
149
+ }
150
+ for (let i = 16; i < 24; i++) {
151
+ st[i] = rotl32(st[i], 16);
152
+ }
153
+ for (let i = 24; i < 32; i++) {
154
+ st[i] = rotl32(st[i], 8);
155
+ }
156
+ }
157
+ /**
158
+ * MixColumns operation in bitsliced form.
159
+ */
160
+ function mixcolumns(st) {
161
+ const t2_0 = (st[0] ^ st[8]) >>> 0;
162
+ const t2_1 = (st[8] ^ st[16]) >>> 0;
163
+ const t2_2 = (st[16] ^ st[24]) >>> 0;
164
+ const t2_3 = (st[24] ^ st[0]) >>> 0;
165
+ let t0_0 = (st[7] ^ st[15]) >>> 0;
166
+ let t0_1 = (st[15] ^ st[23]) >>> 0;
167
+ let t0_2 = (st[23] ^ st[31]) >>> 0;
168
+ let t0_3 = (st[31] ^ st[7]) >>> 0;
169
+ let t = st[7];
170
+ st[7] = (t2_0 ^ t0_2 ^ st[15]) >>> 0;
171
+ st[15] = (t2_1 ^ t0_2 ^ t) >>> 0;
172
+ t = st[23];
173
+ st[23] = (t2_2 ^ t0_0 ^ st[31]) >>> 0;
174
+ st[31] = (t2_3 ^ t0_0 ^ t) >>> 0;
175
+ let t1_0 = (st[6] ^ st[14]) >>> 0;
176
+ let t1_1 = (st[14] ^ st[22]) >>> 0;
177
+ let t1_2 = (st[22] ^ st[30]) >>> 0;
178
+ let t1_3 = (st[30] ^ st[6]) >>> 0;
179
+ t = st[6];
180
+ let t_bis = st[14];
181
+ st[6] = (t0_0 ^ t2_0 ^ st[14] ^ t1_2) >>> 0;
182
+ st[14] = (t0_1 ^ t2_1 ^ t1_2 ^ t) >>> 0;
183
+ t = st[22];
184
+ st[22] = (t0_2 ^ t2_2 ^ t1_3 ^ t_bis) >>> 0;
185
+ st[30] = (t0_3 ^ t2_3 ^ t1_0 ^ t) >>> 0;
186
+ t0_0 = (st[5] ^ st[13]) >>> 0;
187
+ t0_1 = (st[13] ^ st[21]) >>> 0;
188
+ t0_2 = (st[21] ^ st[29]) >>> 0;
189
+ t0_3 = (st[29] ^ st[5]) >>> 0;
190
+ t = st[5];
191
+ t_bis = st[13];
192
+ st[5] = (t1_0 ^ t0_1 ^ st[29]) >>> 0;
193
+ st[13] = (t1_1 ^ t0_2 ^ t) >>> 0;
194
+ t = st[21];
195
+ st[21] = (t1_2 ^ t0_3 ^ t_bis) >>> 0;
196
+ st[29] = (t1_3 ^ t0_0 ^ t) >>> 0;
197
+ t1_0 = (st[4] ^ st[12]) >>> 0;
198
+ t1_1 = (st[12] ^ st[20]) >>> 0;
199
+ t1_2 = (st[20] ^ st[28]) >>> 0;
200
+ t1_3 = (st[28] ^ st[4]) >>> 0;
201
+ t = st[4];
202
+ t_bis = st[12];
203
+ st[4] = (t0_0 ^ t2_0 ^ t1_1 ^ st[28]) >>> 0;
204
+ st[12] = (t0_1 ^ t2_1 ^ t1_2 ^ t) >>> 0;
205
+ t = st[20];
206
+ st[20] = (t0_2 ^ t2_2 ^ t1_3 ^ t_bis) >>> 0;
207
+ st[28] = (t0_3 ^ t2_3 ^ t1_0 ^ t) >>> 0;
208
+ t0_0 = (st[3] ^ st[11]) >>> 0;
209
+ t0_1 = (st[11] ^ st[19]) >>> 0;
210
+ t0_2 = (st[19] ^ st[27]) >>> 0;
211
+ t0_3 = (st[27] ^ st[3]) >>> 0;
212
+ t = st[3];
213
+ t_bis = st[11];
214
+ st[3] = (t1_0 ^ t2_0 ^ t0_1 ^ st[27]) >>> 0;
215
+ st[11] = (t1_1 ^ t2_1 ^ t0_2 ^ t) >>> 0;
216
+ t = st[19];
217
+ st[19] = (t1_2 ^ t2_2 ^ t0_3 ^ t_bis) >>> 0;
218
+ st[27] = (t1_3 ^ t2_3 ^ t0_0 ^ t) >>> 0;
219
+ t1_0 = (st[2] ^ st[10]) >>> 0;
220
+ t1_1 = (st[10] ^ st[18]) >>> 0;
221
+ t1_2 = (st[18] ^ st[26]) >>> 0;
222
+ t1_3 = (st[26] ^ st[2]) >>> 0;
223
+ t = st[2];
224
+ t_bis = st[10];
225
+ st[2] = (t0_0 ^ t1_1 ^ st[26]) >>> 0;
226
+ st[10] = (t0_1 ^ t1_2 ^ t) >>> 0;
227
+ t = st[18];
228
+ st[18] = (t0_2 ^ t1_3 ^ t_bis) >>> 0;
229
+ st[26] = (t0_3 ^ t1_0 ^ t) >>> 0;
230
+ t0_0 = (st[1] ^ st[9]) >>> 0;
231
+ t0_1 = (st[9] ^ st[17]) >>> 0;
232
+ t0_2 = (st[17] ^ st[25]) >>> 0;
233
+ t0_3 = (st[25] ^ st[1]) >>> 0;
234
+ t = st[1];
235
+ t_bis = st[9];
236
+ st[1] = (t1_0 ^ t0_1 ^ st[25]) >>> 0;
237
+ st[9] = (t1_1 ^ t0_2 ^ t) >>> 0;
238
+ t = st[17];
239
+ st[17] = (t1_2 ^ t0_3 ^ t_bis) >>> 0;
240
+ st[25] = (t1_3 ^ t0_0 ^ t) >>> 0;
241
+ t = st[0];
242
+ t_bis = st[8];
243
+ st[0] = (t0_0 ^ t2_1 ^ st[24]) >>> 0;
244
+ st[8] = (t0_1 ^ t2_2 ^ t) >>> 0;
245
+ t = st[16];
246
+ st[16] = (t0_2 ^ t2_3 ^ t_bis) >>> 0;
247
+ st[24] = (t0_3 ^ t2_0 ^ t) >>> 0;
248
+ }
249
+ /**
250
+ * Complete AES round (SubBytes + ShiftRows + MixColumns).
251
+ * Note: AddRoundKey is handled separately in AEGIS.
252
+ */
253
+ export function aesRound(st) {
254
+ sboxes(st);
255
+ shiftrows(st);
256
+ mixcolumns(st);
257
+ }
258
+ /**
259
+ * Pack 8 AES blocks into bitsliced representation.
260
+ */
261
+ export function pack(st) {
262
+ for (let i = 0; i < 8; i++) {
263
+ swapmove(st, i, i + 8, 0x00ff00ff, 8);
264
+ swapmove(st, i + 16, i + 24, 0x00ff00ff, 8);
265
+ }
266
+ for (let i = 0; i < 16; i++) {
267
+ swapmove(st, i, i + 16, 0x0000ffff, 16);
268
+ }
269
+ for (let i = 0; i < 32; i += 8) {
270
+ swapmove(st, i + 1, i, 0x55555555, 1);
271
+ swapmove(st, i + 3, i + 2, 0x55555555, 1);
272
+ swapmove(st, i + 5, i + 4, 0x55555555, 1);
273
+ swapmove(st, i + 7, i + 6, 0x55555555, 1);
274
+ swapmove(st, i + 2, i, 0x33333333, 2);
275
+ swapmove(st, i + 3, i + 1, 0x33333333, 2);
276
+ swapmove(st, i + 6, i + 4, 0x33333333, 2);
277
+ swapmove(st, i + 7, i + 5, 0x33333333, 2);
278
+ swapmove(st, i + 4, i, 0x0f0f0f0f, 4);
279
+ swapmove(st, i + 5, i + 1, 0x0f0f0f0f, 4);
280
+ swapmove(st, i + 6, i + 2, 0x0f0f0f0f, 4);
281
+ swapmove(st, i + 7, i + 3, 0x0f0f0f0f, 4);
282
+ }
283
+ }
284
+ /**
285
+ * Unpack bitsliced representation to 8 AES blocks.
286
+ */
287
+ export function unpack(st) {
288
+ for (let i = 0; i < 32; i += 8) {
289
+ swapmove(st, i + 1, i, 0x55555555, 1);
290
+ swapmove(st, i + 3, i + 2, 0x55555555, 1);
291
+ swapmove(st, i + 5, i + 4, 0x55555555, 1);
292
+ swapmove(st, i + 7, i + 6, 0x55555555, 1);
293
+ swapmove(st, i + 2, i, 0x33333333, 2);
294
+ swapmove(st, i + 3, i + 1, 0x33333333, 2);
295
+ swapmove(st, i + 6, i + 4, 0x33333333, 2);
296
+ swapmove(st, i + 7, i + 5, 0x33333333, 2);
297
+ swapmove(st, i + 4, i, 0x0f0f0f0f, 4);
298
+ swapmove(st, i + 5, i + 1, 0x0f0f0f0f, 4);
299
+ swapmove(st, i + 6, i + 2, 0x0f0f0f0f, 4);
300
+ swapmove(st, i + 7, i + 3, 0x0f0f0f0f, 4);
301
+ }
302
+ for (let i = 0; i < 16; i++) {
303
+ swapmove(st, i, i + 16, 0x0000ffff, 16);
304
+ }
305
+ for (let i = 0; i < 8; i++) {
306
+ swapmove(st, i, i + 8, 0x00ff00ff, 8);
307
+ swapmove(st, i + 16, i + 24, 0x00ff00ff, 8);
308
+ }
309
+ }
310
+ /**
311
+ * Pack only blocks 0 and 4 (used for constant inputs in AEGIS-128L).
312
+ */
313
+ export function pack04(st) {
314
+ swapmove(st, 0, 0 + 8, 0x00ff00ff, 8);
315
+ swapmove(st, 0 + 16, 0 + 24, 0x00ff00ff, 8);
316
+ swapmove(st, 4, 4 + 8, 0x00ff00ff, 8);
317
+ swapmove(st, 4 + 16, 4 + 24, 0x00ff00ff, 8);
318
+ swapmove(st, 0, 0 + 16, 0x0000ffff, 16);
319
+ swapmove(st, 4, 4 + 16, 0x0000ffff, 16);
320
+ swapmove(st, 8, 8 + 16, 0x0000ffff, 16);
321
+ swapmove(st, 12, 12 + 16, 0x0000ffff, 16);
322
+ for (let i = 0; i < 32; i += 8) {
323
+ swapmove(st, i + 1, i, 0x55555555, 1);
324
+ swapmove(st, i + 5, i + 4, 0x55555555, 1);
325
+ swapmove(st, i + 2, i, 0x33333333, 2);
326
+ swapmove(st, i + 3, i + 1, 0x33333333, 2);
327
+ swapmove(st, i + 6, i + 4, 0x33333333, 2);
328
+ swapmove(st, i + 7, i + 5, 0x33333333, 2);
329
+ swapmove(st, i + 4, i, 0x0f0f0f0f, 4);
330
+ swapmove(st, i + 5, i + 1, 0x0f0f0f0f, 4);
331
+ swapmove(st, i + 6, i + 2, 0x0f0f0f0f, 4);
332
+ swapmove(st, i + 7, i + 3, 0x0f0f0f0f, 4);
333
+ }
334
+ }
335
+ /**
336
+ * Computes the index into the bitsliced state array.
337
+ * @param block - Block index (0-7)
338
+ * @param word - Word index (0-3)
339
+ */
340
+ export function wordIdx(block, word) {
341
+ return block + word * 8;
342
+ }
343
+ /**
344
+ * Rotate all blocks right by 1 position (for AEGIS state rotation).
345
+ * Performs (st[i] & 0xfefefefe) >> 1 | (st[i] & 0x01010101) << 7
346
+ */
347
+ export function blocksRotr(st) {
348
+ for (let i = 0; i < 32; i++) {
349
+ st[i] =
350
+ (((st[i] & 0xfefefefe) >>> 1) | ((st[i] & 0x01010101) << 7)) >>> 0;
351
+ }
352
+ }
353
+ /**
354
+ * Put a single AES block into the bitsliced state at the given block position.
355
+ */
356
+ export function blocksPut(st, s, block) {
357
+ st[wordIdx(block, 0)] = s[0];
358
+ st[wordIdx(block, 1)] = s[1];
359
+ st[wordIdx(block, 2)] = s[2];
360
+ st[wordIdx(block, 3)] = s[3];
361
+ }
362
+ /**
363
+ * Load a 16-byte buffer into an AES block (4 uint32 little-endian).
364
+ */
365
+ export function blockFromBytes(out, src) {
366
+ const view = new DataView(src.buffer, src.byteOffset, src.byteLength);
367
+ out[0] = view.getUint32(0, true);
368
+ out[1] = view.getUint32(4, true);
369
+ out[2] = view.getUint32(8, true);
370
+ out[3] = view.getUint32(12, true);
371
+ }
372
+ /**
373
+ * Store an AES block to a 16-byte buffer (little-endian).
374
+ */
375
+ export function blockToBytes(out, src) {
376
+ const view = new DataView(out.buffer, out.byteOffset, out.byteLength);
377
+ view.setUint32(0, src[0], true);
378
+ view.setUint32(4, src[1], true);
379
+ view.setUint32(8, src[2], true);
380
+ view.setUint32(12, src[3], true);
381
+ }
382
+ /**
383
+ * XOR two AES blocks: out = a ^ b
384
+ */
385
+ export function blockXor(out, a, b) {
386
+ out[0] = (a[0] ^ b[0]) >>> 0;
387
+ out[1] = (a[1] ^ b[1]) >>> 0;
388
+ out[2] = (a[2] ^ b[2]) >>> 0;
389
+ out[3] = (a[3] ^ b[3]) >>> 0;
390
+ }
391
+ /**
392
+ * XOR two bitsliced states: a ^= b
393
+ */
394
+ export function blocksXor(a, b) {
395
+ for (let i = 0; i < 32; i++) {
396
+ a[i] = (a[i] ^ b[i]) >>> 0;
397
+ }
398
+ }
399
+ //# sourceMappingURL=aes-bs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-bs.js","sourceRoot":"","sources":["../src/aes-bs.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- export { aegis128LDecrypt, aegis128LEncrypt, aegis128LMac, aegis128LMacVerify, } from "./aegis128l.js";
2
- export { aegis128X2Decrypt, aegis128X2Encrypt, aegis128X2Mac, aegis128X2MacVerify, aegis128X4Decrypt, aegis128X4Encrypt, aegis128X4Mac, aegis128X4MacVerify, aegis128XDecrypt, aegis128XEncrypt, aegis128XMac, aegis128XMacVerify, } from "./aegis128x.js";
3
- export { aegis256Decrypt, aegis256Encrypt, aegis256Mac, aegis256MacVerify, } from "./aegis256.js";
4
- export { aegis256X2Decrypt, aegis256X2Encrypt, aegis256X2Mac, aegis256X2MacVerify, aegis256X4Decrypt, aegis256X4Encrypt, aegis256X4Mac, aegis256X4MacVerify, aegis256XDecrypt, aegis256XEncrypt, aegis256XMac, aegis256XMacVerify, } from "./aegis256x.js";
1
+ export { AEGIS_128L_KEY_SIZE, AEGIS_128L_NONCE_SIZE, aegis128LCreateKey, aegis128LCreateNonce, aegis128LDecrypt, aegis128LDecryptDetached, aegis128LEncrypt, aegis128LEncryptDetached, aegis128LMac, aegis128LMacVerify, } from "./aegis128l.js";
2
+ export { AEGIS_128L_BS_KEY_SIZE, AEGIS_128L_BS_NONCE_SIZE, Aegis128LBsState, aegis128LBsCreateKey, aegis128LBsCreateNonce, aegis128LBsDecrypt, aegis128LBsDecryptDetached, aegis128LBsEncrypt, aegis128LBsEncryptDetached, aegis128LBsMac, aegis128LBsMacVerify, } from "./aegis128l-bs.js";
3
+ export { AEGIS_128X_KEY_SIZE, AEGIS_128X_NONCE_SIZE, aegis128X2CreateKey, aegis128X2CreateNonce, aegis128X2Decrypt, aegis128X2DecryptDetached, aegis128X2Encrypt, aegis128X2EncryptDetached, aegis128X2Mac, aegis128X2MacVerify, aegis128X4CreateKey, aegis128X4CreateNonce, aegis128X4Decrypt, aegis128X4DecryptDetached, aegis128X4Encrypt, aegis128X4EncryptDetached, aegis128X4Mac, aegis128X4MacVerify, aegis128XCreateKey, aegis128XCreateNonce, aegis128XDecrypt, aegis128XDecryptDetached, aegis128XEncrypt, aegis128XEncryptDetached, aegis128XMac, aegis128XMacVerify, } from "./aegis128x.js";
4
+ export { AEGIS_256_KEY_SIZE, AEGIS_256_NONCE_SIZE, aegis256CreateKey, aegis256CreateNonce, aegis256Decrypt, aegis256DecryptDetached, aegis256Encrypt, aegis256EncryptDetached, aegis256Mac, aegis256MacVerify, } from "./aegis256.js";
5
+ export { AEGIS_256_BS_KEY_SIZE, AEGIS_256_BS_NONCE_SIZE, Aegis256BsState, aegis256BsCreateKey, aegis256BsCreateNonce, aegis256BsDecrypt, aegis256BsDecryptDetached, aegis256BsEncrypt, aegis256BsEncryptDetached, aegis256BsMac, aegis256BsMacVerify, } from "./aegis256-bs.js";
6
+ export { AEGIS_256X_KEY_SIZE, AEGIS_256X_NONCE_SIZE, aegis256X2CreateKey, aegis256X2CreateNonce, aegis256X2Decrypt, aegis256X2DecryptDetached, aegis256X2Encrypt, aegis256X2EncryptDetached, aegis256X2Mac, aegis256X2MacVerify, aegis256X4CreateKey, aegis256X4CreateNonce, aegis256X4Decrypt, aegis256X4DecryptDetached, aegis256X4Encrypt, aegis256X4EncryptDetached, aegis256X4Mac, aegis256X4MacVerify, aegis256XCreateKey, aegis256XCreateNonce, aegis256XDecrypt, aegis256XDecryptDetached, aegis256XEncrypt, aegis256XEncryptDetached, aegis256XMac, aegis256XMacVerify, } from "./aegis256x.js";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,eAAe,EACf,eAAe,EACf,WAAW,EACX,iBAAiB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,iBAAiB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
- export { aegis128LDecrypt, aegis128LEncrypt, aegis128LMac, aegis128LMacVerify, } from "./aegis128l.js";
2
- export { aegis128X2Decrypt, aegis128X2Encrypt, aegis128X2Mac, aegis128X2MacVerify, aegis128X4Decrypt, aegis128X4Encrypt, aegis128X4Mac, aegis128X4MacVerify, aegis128XDecrypt, aegis128XEncrypt, aegis128XMac, aegis128XMacVerify, } from "./aegis128x.js";
3
- export { aegis256Decrypt, aegis256Encrypt, aegis256Mac, aegis256MacVerify, } from "./aegis256.js";
4
- export { aegis256X2Decrypt, aegis256X2Encrypt, aegis256X2Mac, aegis256X2MacVerify, aegis256X4Decrypt, aegis256X4Encrypt, aegis256X4Mac, aegis256X4MacVerify, aegis256XDecrypt, aegis256XEncrypt, aegis256XMac, aegis256XMacVerify, } from "./aegis256x.js";
1
+ export { AEGIS_128L_KEY_SIZE, AEGIS_128L_NONCE_SIZE, aegis128LCreateKey, aegis128LCreateNonce, aegis128LDecrypt, aegis128LDecryptDetached, aegis128LEncrypt, aegis128LEncryptDetached, aegis128LMac, aegis128LMacVerify, } from "./aegis128l.js";
2
+ export { AEGIS_128L_BS_KEY_SIZE, AEGIS_128L_BS_NONCE_SIZE, Aegis128LBsState, aegis128LBsCreateKey, aegis128LBsCreateNonce, aegis128LBsDecrypt, aegis128LBsDecryptDetached, aegis128LBsEncrypt, aegis128LBsEncryptDetached, aegis128LBsMac, aegis128LBsMacVerify, } from "./aegis128l-bs.js";
3
+ export { AEGIS_128X_KEY_SIZE, AEGIS_128X_NONCE_SIZE, aegis128X2CreateKey, aegis128X2CreateNonce, aegis128X2Decrypt, aegis128X2DecryptDetached, aegis128X2Encrypt, aegis128X2EncryptDetached, aegis128X2Mac, aegis128X2MacVerify, aegis128X4CreateKey, aegis128X4CreateNonce, aegis128X4Decrypt, aegis128X4DecryptDetached, aegis128X4Encrypt, aegis128X4EncryptDetached, aegis128X4Mac, aegis128X4MacVerify, aegis128XCreateKey, aegis128XCreateNonce, aegis128XDecrypt, aegis128XDecryptDetached, aegis128XEncrypt, aegis128XEncryptDetached, aegis128XMac, aegis128XMacVerify, } from "./aegis128x.js";
4
+ export { AEGIS_256_KEY_SIZE, AEGIS_256_NONCE_SIZE, aegis256CreateKey, aegis256CreateNonce, aegis256Decrypt, aegis256DecryptDetached, aegis256Encrypt, aegis256EncryptDetached, aegis256Mac, aegis256MacVerify, } from "./aegis256.js";
5
+ export { AEGIS_256_BS_KEY_SIZE, AEGIS_256_BS_NONCE_SIZE, Aegis256BsState, aegis256BsCreateKey, aegis256BsCreateNonce, aegis256BsDecrypt, aegis256BsDecryptDetached, aegis256BsEncrypt, aegis256BsEncryptDetached, aegis256BsMac, aegis256BsMacVerify, } from "./aegis256-bs.js";
6
+ export { AEGIS_256X_KEY_SIZE, AEGIS_256X_NONCE_SIZE, aegis256X2CreateKey, aegis256X2CreateNonce, aegis256X2Decrypt, aegis256X2DecryptDetached, aegis256X2Encrypt, aegis256X2EncryptDetached, aegis256X2Mac, aegis256X2MacVerify, aegis256X4CreateKey, aegis256X4CreateNonce, aegis256X4Decrypt, aegis256X4DecryptDetached, aegis256X4Encrypt, aegis256X4EncryptDetached, aegis256X4Mac, aegis256X4MacVerify, aegis256XCreateKey, aegis256XCreateNonce, aegis256XDecrypt, aegis256XDecryptDetached, aegis256XEncrypt, aegis256XEncryptDetached, aegis256XMac, aegis256XMacVerify, } from "./aegis256x.js";
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,eAAe,EACf,eAAe,EACf,WAAW,EACX,iBAAiB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,iBAAiB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GAClB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Cross-platform cryptographically secure random byte generation.
3
+ *
4
+ * Uses the Web Crypto API (globalThis.crypto.getRandomValues) which is available in:
5
+ * - All modern browsers
6
+ * - Node.js 19+
7
+ * - Deno
8
+ * - Bun
9
+ *
10
+ * For older Node.js versions, you can polyfill:
11
+ * ```
12
+ * globalThis.crypto = require('crypto').webcrypto;
13
+ * ```
14
+ */
15
+ /**
16
+ * Generates cryptographically secure random bytes.
17
+ * @param length - Number of random bytes to generate
18
+ * @returns Uint8Array of random bytes
19
+ * @throws Error if no cryptographic random source is available
20
+ */
21
+ export declare function randomBytes(length: number): Uint8Array;
22
+ //# sourceMappingURL=random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgBH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAKtD"}
package/dist/random.js ADDED
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Cross-platform cryptographically secure random byte generation.
3
+ *
4
+ * Uses the Web Crypto API (globalThis.crypto.getRandomValues) which is available in:
5
+ * - All modern browsers
6
+ * - Node.js 19+
7
+ * - Deno
8
+ * - Bun
9
+ *
10
+ * For older Node.js versions, you can polyfill:
11
+ * ```
12
+ * globalThis.crypto = require('crypto').webcrypto;
13
+ * ```
14
+ */
15
+ function getCrypto() {
16
+ if (typeof globalThis !== "undefined" &&
17
+ globalThis.crypto &&
18
+ typeof globalThis.crypto.getRandomValues === "function") {
19
+ return globalThis.crypto;
20
+ }
21
+ throw new Error("No cryptographic random source available. " +
22
+ "In older Node.js versions, use: globalThis.crypto = require('crypto').webcrypto");
23
+ }
24
+ /**
25
+ * Generates cryptographically secure random bytes.
26
+ * @param length - Number of random bytes to generate
27
+ * @returns Uint8Array of random bytes
28
+ * @throws Error if no cryptographic random source is available
29
+ */
30
+ export function randomBytes(length) {
31
+ const crypto = getCrypto();
32
+ const bytes = new Uint8Array(length);
33
+ crypto.getRandomValues(bytes);
34
+ return bytes;
35
+ }
36
+ //# sourceMappingURL=random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,SAAS,SAAS;IACjB,IACC,OAAO,UAAU,KAAK,WAAW;QACjC,UAAU,CAAC,MAAM;QACjB,OAAO,UAAU,CAAC,MAAM,CAAC,eAAe,KAAK,UAAU,EACtD,CAAC;QACF,OAAO,UAAU,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,KAAK,CACd,4CAA4C;QAC3C,iFAAiF,CAClF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACzC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aegis-aead",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "AEGIS authenticated encryption algorithms",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",