aegis-aead 0.2.0 → 0.2.2
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.
- package/README.md +155 -228
- package/dist/aegis128l-bs.d.ts +23 -48
- package/dist/aegis128l-bs.d.ts.map +1 -1
- package/dist/aegis128l-bs.js +124 -152
- package/dist/aegis128l-bs.js.map +1 -1
- package/dist/aegis128l.d.ts +32 -0
- package/dist/aegis128l.d.ts.map +1 -1
- package/dist/aegis128l.js +94 -0
- package/dist/aegis128l.js.map +1 -1
- package/dist/aegis128x.d.ts +42 -0
- package/dist/aegis128x.d.ts.map +1 -1
- package/dist/aegis128x.js +100 -0
- package/dist/aegis128x.js.map +1 -1
- package/dist/aegis256-bs.d.ts +19 -91
- package/dist/aegis256-bs.d.ts.map +1 -1
- package/dist/aegis256-bs.js +124 -156
- package/dist/aegis256-bs.js.map +1 -1
- package/dist/aegis256.d.ts +32 -0
- package/dist/aegis256.d.ts.map +1 -1
- package/dist/aegis256.js +79 -0
- package/dist/aegis256.js.map +1 -1
- package/dist/aegis256x.d.ts +42 -0
- package/dist/aegis256x.d.ts.map +1 -1
- package/dist/aegis256x.js +91 -0
- package/dist/aegis256x.js.map +1 -1
- package/dist/aes-bs.d.ts +16 -0
- package/dist/aes-bs.d.ts.map +1 -1
- package/dist/aes-bs.js +173 -99
- package/dist/aes-bs.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/src/aegis128l-bs.ts +154 -156
- package/src/aegis128l.ts +126 -0
- package/src/aegis128x.ts +168 -0
- package/src/aegis256-bs.ts +158 -157
- package/src/aegis256.ts +111 -0
- package/src/aegis256x.ts +155 -0
- package/src/aes-bs.ts +187 -106
- package/src/index.ts +20 -0
package/dist/aegis256-bs.d.ts
CHANGED
|
@@ -4,26 +4,29 @@
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Bitsliced AEGIS-256 cipher state.
|
|
7
|
-
* Uses 6 AES blocks
|
|
7
|
+
* Uses 6 AES blocks stored in packed bitsliced form throughout the lifetime
|
|
8
|
+
* of the state.
|
|
8
9
|
*/
|
|
9
10
|
export declare class Aegis256BsState {
|
|
10
11
|
private st;
|
|
11
12
|
private st1;
|
|
13
|
+
private constantInput;
|
|
12
14
|
private tmp;
|
|
15
|
+
private z;
|
|
13
16
|
constructor();
|
|
17
|
+
private aegisRoundPacked;
|
|
18
|
+
private packConstantInput;
|
|
14
19
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
20
|
+
* Extract the keystream block z directly from the packed state.
|
|
21
|
+
*
|
|
22
|
+
* z = S1 ^ S4 ^ S5 ^ (S2 & S3)
|
|
23
|
+
*
|
|
24
|
+
* In the packed layout, logical block j lives at bit position (7 - j) of
|
|
25
|
+
* every byte, so S1 = bit 6, S4 = bit 3, S5 = bit 2, S2 = bit 5,
|
|
26
|
+
* S3 = bit 4. The combination is computed lane-wise into bit position 7
|
|
27
|
+
* and unpack04_6 then extracts the AES block at logical index 0.
|
|
17
28
|
*/
|
|
18
|
-
private
|
|
19
|
-
/**
|
|
20
|
-
* Absorb rate: XOR message block into state position 0.
|
|
21
|
-
*/
|
|
22
|
-
private absorbRate;
|
|
23
|
-
/**
|
|
24
|
-
* Update state with a message block.
|
|
25
|
-
*/
|
|
26
|
-
private update;
|
|
29
|
+
private keystreamPacked;
|
|
27
30
|
/**
|
|
28
31
|
* Initializes the state with a key and nonce.
|
|
29
32
|
* @param key - 32-byte encryption key
|
|
@@ -32,56 +35,28 @@ export declare class Aegis256BsState {
|
|
|
32
35
|
init(key: Uint8Array, nonce: Uint8Array): void;
|
|
33
36
|
/**
|
|
34
37
|
* Absorbs a 16-byte associated data block into the state.
|
|
35
|
-
* @param ai - 16-byte associated data block
|
|
36
38
|
*/
|
|
37
39
|
absorb(ai: Uint8Array): void;
|
|
38
40
|
/**
|
|
39
41
|
* Encrypts a 16-byte plaintext block and writes to output buffer.
|
|
40
|
-
* @param xi - 16-byte plaintext block
|
|
41
|
-
* @param out - 16-byte output buffer
|
|
42
42
|
*/
|
|
43
43
|
encTo(xi: Uint8Array, out: Uint8Array): void;
|
|
44
|
-
/**
|
|
45
|
-
* Encrypts a 16-byte plaintext block.
|
|
46
|
-
* @param xi - 16-byte plaintext block
|
|
47
|
-
* @returns 16-byte ciphertext block
|
|
48
|
-
*/
|
|
49
44
|
enc(xi: Uint8Array): Uint8Array;
|
|
50
45
|
/**
|
|
51
46
|
* Decrypts a 16-byte ciphertext block and writes to output buffer.
|
|
52
|
-
* @param ci - 16-byte ciphertext block
|
|
53
|
-
* @param out - 16-byte output buffer
|
|
54
47
|
*/
|
|
55
48
|
decTo(ci: Uint8Array, out: Uint8Array): void;
|
|
56
|
-
/**
|
|
57
|
-
* Decrypts a 16-byte ciphertext block.
|
|
58
|
-
* @param ci - 16-byte ciphertext block
|
|
59
|
-
* @returns 16-byte plaintext block
|
|
60
|
-
*/
|
|
61
49
|
dec(ci: Uint8Array): Uint8Array;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
* @param cn - Partial ciphertext block (1-15 bytes)
|
|
65
|
-
* @returns Decrypted plaintext of the same length
|
|
66
|
-
*/
|
|
50
|
+
encInPlace(block: Uint8Array): void;
|
|
51
|
+
decInPlace(block: Uint8Array): void;
|
|
67
52
|
decPartial(cn: Uint8Array): Uint8Array;
|
|
68
53
|
/**
|
|
69
54
|
* Finalizes encryption/decryption and produces an authentication tag.
|
|
70
|
-
* @param adLen - Associated data length in bytes
|
|
71
|
-
* @param msgLen - Message length in bytes
|
|
72
|
-
* @param tagLen - Tag length (16 or 32 bytes)
|
|
73
|
-
* @returns Authentication tag
|
|
74
55
|
*/
|
|
75
56
|
finalize(adLen: number, msgLen: number, tagLen?: 16 | 32): Uint8Array;
|
|
76
57
|
}
|
|
77
58
|
/**
|
|
78
59
|
* Encrypts a message using bitsliced AEGIS-256 (detached mode).
|
|
79
|
-
* @param msg - Plaintext message
|
|
80
|
-
* @param ad - Associated data (authenticated but not encrypted)
|
|
81
|
-
* @param key - 32-byte encryption key
|
|
82
|
-
* @param nonce - 32-byte nonce (must be unique per message with the same key)
|
|
83
|
-
* @param tagLen - Authentication tag length: 16 or 32 bytes (default: 16)
|
|
84
|
-
* @returns Object containing ciphertext and authentication tag separately
|
|
85
60
|
*/
|
|
86
61
|
export declare function aegis256BsEncryptDetached(msg: Uint8Array, ad: Uint8Array, key: Uint8Array, nonce: Uint8Array, tagLen?: 16 | 32): {
|
|
87
62
|
ciphertext: Uint8Array;
|
|
@@ -89,63 +64,16 @@ export declare function aegis256BsEncryptDetached(msg: Uint8Array, ad: Uint8Arra
|
|
|
89
64
|
};
|
|
90
65
|
/**
|
|
91
66
|
* Decrypts a message using bitsliced AEGIS-256 (detached mode).
|
|
92
|
-
* @param ct - Ciphertext
|
|
93
|
-
* @param tag - Authentication tag (16 or 32 bytes)
|
|
94
|
-
* @param ad - Associated data (must match what was used during encryption)
|
|
95
|
-
* @param key - 32-byte encryption key
|
|
96
|
-
* @param nonce - 32-byte nonce (must match what was used during encryption)
|
|
97
|
-
* @returns Decrypted plaintext, or null if authentication fails
|
|
98
67
|
*/
|
|
99
68
|
export declare function aegis256BsDecryptDetached(ct: Uint8Array, tag: Uint8Array, ad: Uint8Array, key: Uint8Array, nonce: Uint8Array): Uint8Array | null;
|
|
69
|
+
export declare function aegis256BsEncryptDetachedInPlace(data: Uint8Array, ad: Uint8Array, key: Uint8Array, nonce: Uint8Array, tagLen?: 16 | 32): Uint8Array;
|
|
70
|
+
export declare function aegis256BsDecryptDetachedInPlace(data: Uint8Array, tag: Uint8Array, ad: Uint8Array, key: Uint8Array, nonce: Uint8Array): boolean;
|
|
100
71
|
export declare const AEGIS_256_BS_NONCE_SIZE = 32;
|
|
101
72
|
export declare const AEGIS_256_BS_KEY_SIZE = 32;
|
|
102
|
-
/**
|
|
103
|
-
* Encrypts a message using bitsliced AEGIS-256.
|
|
104
|
-
* Returns a single buffer containing nonce || ciphertext || tag.
|
|
105
|
-
* @param msg - Plaintext message
|
|
106
|
-
* @param ad - Associated data (authenticated but not encrypted)
|
|
107
|
-
* @param key - 32-byte encryption key
|
|
108
|
-
* @param nonce - 32-byte nonce (optional, generates random nonce if not provided)
|
|
109
|
-
* @param tagLen - Authentication tag length: 16 or 32 bytes (default: 16)
|
|
110
|
-
* @returns Concatenated nonce || ciphertext || tag
|
|
111
|
-
*/
|
|
112
73
|
export declare function aegis256BsEncrypt(msg: Uint8Array, ad: Uint8Array, key: Uint8Array, nonce?: Uint8Array | null, tagLen?: 16 | 32): Uint8Array;
|
|
113
|
-
/**
|
|
114
|
-
* Decrypts a message using bitsliced AEGIS-256.
|
|
115
|
-
* Expects input as nonce || ciphertext || tag.
|
|
116
|
-
* @param sealed - Concatenated nonce || ciphertext || tag
|
|
117
|
-
* @param ad - Associated data (must match what was used during encryption)
|
|
118
|
-
* @param key - 32-byte encryption key
|
|
119
|
-
* @param tagLen - Authentication tag length: 16 or 32 bytes (default: 16)
|
|
120
|
-
* @returns Decrypted plaintext, or null if authentication fails
|
|
121
|
-
*/
|
|
122
74
|
export declare function aegis256BsDecrypt(sealed: Uint8Array, ad: Uint8Array, key: Uint8Array, tagLen?: 16 | 32): Uint8Array | null;
|
|
123
|
-
/**
|
|
124
|
-
* Computes a MAC (Message Authentication Code) using bitsliced AEGIS-256.
|
|
125
|
-
* @param data - Data to authenticate
|
|
126
|
-
* @param key - 32-byte key
|
|
127
|
-
* @param nonce - 32-byte nonce (optional, uses zero nonce if null)
|
|
128
|
-
* @param tagLen - Tag length: 16 or 32 bytes (default: 16)
|
|
129
|
-
* @returns Authentication tag
|
|
130
|
-
*/
|
|
131
75
|
export declare function aegis256BsMac(data: Uint8Array, key: Uint8Array, nonce?: Uint8Array | null, tagLen?: 16 | 32): Uint8Array;
|
|
132
|
-
/**
|
|
133
|
-
* Verifies a MAC computed using bitsliced AEGIS-256.
|
|
134
|
-
* @param data - Data to verify
|
|
135
|
-
* @param tag - Expected authentication tag (16 or 32 bytes)
|
|
136
|
-
* @param key - 32-byte key
|
|
137
|
-
* @param nonce - 32-byte nonce (optional, uses zero nonce if null)
|
|
138
|
-
* @returns True if the tag is valid, false otherwise
|
|
139
|
-
*/
|
|
140
76
|
export declare function aegis256BsMacVerify(data: Uint8Array, tag: Uint8Array, key: Uint8Array, nonce?: Uint8Array | null): boolean;
|
|
141
|
-
/**
|
|
142
|
-
* Generates a random 32-byte key for bitsliced AEGIS-256.
|
|
143
|
-
* @returns 32-byte encryption key
|
|
144
|
-
*/
|
|
145
77
|
export declare function aegis256BsCreateKey(): Uint8Array;
|
|
146
|
-
/**
|
|
147
|
-
* Generates a random 32-byte nonce for bitsliced AEGIS-256.
|
|
148
|
-
* @returns 32-byte nonce
|
|
149
|
-
*/
|
|
150
78
|
export declare function aegis256BsCreateNonce(): Uint8Array;
|
|
151
79
|
//# sourceMappingURL=aegis256-bs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aegis256-bs.d.ts","sourceRoot":"","sources":["../src/aegis256-bs.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"aegis256-bs.d.ts","sourceRoot":"","sources":["../src/aegis256-bs.ts"],"names":[],"mappings":"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"}
|
package/dist/aegis256-bs.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Provides constant-time operation by processing state blocks simultaneously.
|
|
4
4
|
*/
|
|
5
5
|
import { constantTimeEqual, zeroPad } from "./aes.js";
|
|
6
|
-
import { aesRound, blockFromBytes, blocksPut, blockToBytes, blockXor, createAesBlock, createAesBlocks, pack, unpack, wordIdx, } from "./aes-bs.js";
|
|
6
|
+
import { aesRound, blockFromBytes, blocksPut, blocksRotr6, blocksXor, blockToBytes, blockXor, createAesBlock, createAesBlocks, pack, pack04_6, unpack, unpack04_6, wordIdx, } from "./aes-bs.js";
|
|
7
7
|
import { randomBytes } from "./random.js";
|
|
8
8
|
const RATE = 16;
|
|
9
9
|
const C0 = new Uint32Array([
|
|
@@ -14,49 +14,58 @@ const C1 = new Uint32Array([
|
|
|
14
14
|
]);
|
|
15
15
|
/**
|
|
16
16
|
* Bitsliced AEGIS-256 cipher state.
|
|
17
|
-
* Uses 6 AES blocks
|
|
17
|
+
* Uses 6 AES blocks stored in packed bitsliced form throughout the lifetime
|
|
18
|
+
* of the state.
|
|
18
19
|
*/
|
|
19
20
|
export class Aegis256BsState {
|
|
20
21
|
constructor() {
|
|
21
22
|
this.st = createAesBlocks();
|
|
22
23
|
this.st1 = createAesBlocks();
|
|
24
|
+
this.constantInput = createAesBlocks();
|
|
23
25
|
this.tmp = createAesBlock();
|
|
26
|
+
this.z = createAesBlock();
|
|
24
27
|
}
|
|
25
|
-
|
|
26
|
-
* AEGIS round function: applies AES round to all blocks and rotates.
|
|
27
|
-
* st[i] = AES(st[i]) ^ st[(i+5) mod 6]
|
|
28
|
-
*/
|
|
29
|
-
aegisRound() {
|
|
28
|
+
aegisRoundPacked() {
|
|
30
29
|
const st = this.st;
|
|
31
30
|
const st1 = this.st1;
|
|
32
31
|
st1.set(st);
|
|
33
|
-
pack(st1);
|
|
34
32
|
aesRound(st1);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
st[wordIdx(i, 0)] = (st[wordIdx(i, 0)] ^ st1[wordIdx(prev, 0)]) >>> 0;
|
|
39
|
-
st[wordIdx(i, 1)] = (st[wordIdx(i, 1)] ^ st1[wordIdx(prev, 1)]) >>> 0;
|
|
40
|
-
st[wordIdx(i, 2)] = (st[wordIdx(i, 2)] ^ st1[wordIdx(prev, 2)]) >>> 0;
|
|
41
|
-
st[wordIdx(i, 3)] = (st[wordIdx(i, 3)] ^ st1[wordIdx(prev, 3)]) >>> 0;
|
|
42
|
-
}
|
|
33
|
+
blocksRotr6(st1);
|
|
34
|
+
blocksXor(st, st1);
|
|
35
|
+
blocksXor(st, this.constantInput);
|
|
43
36
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
st[wordIdx(0, 0)] = (st[wordIdx(0, 0)] ^ m[0]) >>> 0;
|
|
50
|
-
st[wordIdx(0, 1)] = (st[wordIdx(0, 1)] ^ m[1]) >>> 0;
|
|
51
|
-
st[wordIdx(0, 2)] = (st[wordIdx(0, 2)] ^ m[2]) >>> 0;
|
|
52
|
-
st[wordIdx(0, 3)] = (st[wordIdx(0, 3)] ^ m[3]) >>> 0;
|
|
37
|
+
packConstantInput(m) {
|
|
38
|
+
const out = this.constantInput;
|
|
39
|
+
out.fill(0);
|
|
40
|
+
blocksPut(out, m, 0);
|
|
41
|
+
pack04_6(out);
|
|
53
42
|
}
|
|
54
43
|
/**
|
|
55
|
-
*
|
|
44
|
+
* Extract the keystream block z directly from the packed state.
|
|
45
|
+
*
|
|
46
|
+
* z = S1 ^ S4 ^ S5 ^ (S2 & S3)
|
|
47
|
+
*
|
|
48
|
+
* In the packed layout, logical block j lives at bit position (7 - j) of
|
|
49
|
+
* every byte, so S1 = bit 6, S4 = bit 3, S5 = bit 2, S2 = bit 5,
|
|
50
|
+
* S3 = bit 4. The combination is computed lane-wise into bit position 7
|
|
51
|
+
* and unpack04_6 then extracts the AES block at logical index 0.
|
|
56
52
|
*/
|
|
57
|
-
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
53
|
+
keystreamPacked() {
|
|
54
|
+
const st = this.st;
|
|
55
|
+
const zPacked = this.st1;
|
|
56
|
+
for (let i = 0; i < 32; i++) {
|
|
57
|
+
const x = st[i];
|
|
58
|
+
zPacked[i] =
|
|
59
|
+
((x & 0x40404040) << 1) ^
|
|
60
|
+
((x & 0x08080808) << 4) ^
|
|
61
|
+
((x & 0x04040404) << 5) ^
|
|
62
|
+
((x & (x >>> 1) & 0x10101010) << 3);
|
|
63
|
+
}
|
|
64
|
+
unpack04_6(zPacked);
|
|
65
|
+
const z = this.z;
|
|
66
|
+
for (let i = 0; i < 4; i++) {
|
|
67
|
+
z[i] = zPacked[wordIdx(0, i)];
|
|
68
|
+
}
|
|
60
69
|
}
|
|
61
70
|
/**
|
|
62
71
|
* Initializes the state with a key and nonce.
|
|
@@ -87,50 +96,39 @@ export class Aegis256BsState {
|
|
|
87
96
|
blocksPut(this.st, C0, 3);
|
|
88
97
|
blocksPut(this.st, k0c0, 4);
|
|
89
98
|
blocksPut(this.st, k1c1, 5);
|
|
99
|
+
pack(this.st);
|
|
90
100
|
for (let i = 0; i < 4; i++) {
|
|
91
|
-
this.
|
|
92
|
-
this.
|
|
93
|
-
this.
|
|
94
|
-
this.
|
|
101
|
+
this.packConstantInput(k0);
|
|
102
|
+
this.aegisRoundPacked();
|
|
103
|
+
this.packConstantInput(k1);
|
|
104
|
+
this.aegisRoundPacked();
|
|
105
|
+
this.packConstantInput(k0n0);
|
|
106
|
+
this.aegisRoundPacked();
|
|
107
|
+
this.packConstantInput(k1n1);
|
|
108
|
+
this.aegisRoundPacked();
|
|
95
109
|
}
|
|
96
110
|
}
|
|
97
111
|
/**
|
|
98
112
|
* Absorbs a 16-byte associated data block into the state.
|
|
99
|
-
* @param ai - 16-byte associated data block
|
|
100
113
|
*/
|
|
101
114
|
absorb(ai) {
|
|
102
115
|
const msg = this.tmp;
|
|
103
116
|
blockFromBytes(msg, ai);
|
|
104
|
-
this.
|
|
117
|
+
this.packConstantInput(msg);
|
|
118
|
+
this.aegisRoundPacked();
|
|
105
119
|
}
|
|
106
120
|
/**
|
|
107
121
|
* Encrypts a 16-byte plaintext block and writes to output buffer.
|
|
108
|
-
* @param xi - 16-byte plaintext block
|
|
109
|
-
* @param out - 16-byte output buffer
|
|
110
122
|
*/
|
|
111
123
|
encTo(xi, out) {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
const t = createAesBlock();
|
|
115
|
-
for (let i = 0; i < 4; i++) {
|
|
116
|
-
z[i] =
|
|
117
|
-
(st[wordIdx(1, i)] ^
|
|
118
|
-
st[wordIdx(4, i)] ^
|
|
119
|
-
st[wordIdx(5, i)] ^
|
|
120
|
-
(st[wordIdx(2, i)] & st[wordIdx(3, i)])) >>>
|
|
121
|
-
0;
|
|
122
|
-
}
|
|
124
|
+
const t = this.tmp;
|
|
125
|
+
this.keystreamPacked();
|
|
123
126
|
blockFromBytes(t, xi);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
this.packConstantInput(t);
|
|
128
|
+
this.aegisRoundPacked();
|
|
129
|
+
blockXor(t, t, this.z);
|
|
130
|
+
blockToBytes(out, t);
|
|
128
131
|
}
|
|
129
|
-
/**
|
|
130
|
-
* Encrypts a 16-byte plaintext block.
|
|
131
|
-
* @param xi - 16-byte plaintext block
|
|
132
|
-
* @returns 16-byte ciphertext block
|
|
133
|
-
*/
|
|
134
132
|
enc(xi) {
|
|
135
133
|
const out = new Uint8Array(16);
|
|
136
134
|
this.encTo(xi, out);
|
|
@@ -138,69 +136,44 @@ export class Aegis256BsState {
|
|
|
138
136
|
}
|
|
139
137
|
/**
|
|
140
138
|
* Decrypts a 16-byte ciphertext block and writes to output buffer.
|
|
141
|
-
* @param ci - 16-byte ciphertext block
|
|
142
|
-
* @param out - 16-byte output buffer
|
|
143
139
|
*/
|
|
144
140
|
decTo(ci, out) {
|
|
145
|
-
const st = this.st;
|
|
146
141
|
const msg = this.tmp;
|
|
147
142
|
blockFromBytes(msg, ci);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
st[wordIdx(4, i)] ^
|
|
153
|
-
st[wordIdx(5, i)] ^
|
|
154
|
-
(st[wordIdx(2, i)] & st[wordIdx(3, i)])) >>>
|
|
155
|
-
0;
|
|
156
|
-
}
|
|
157
|
-
this.update(msg);
|
|
143
|
+
this.keystreamPacked();
|
|
144
|
+
blockXor(msg, msg, this.z);
|
|
145
|
+
this.packConstantInput(msg);
|
|
146
|
+
this.aegisRoundPacked();
|
|
158
147
|
blockToBytes(out, msg);
|
|
159
148
|
}
|
|
160
|
-
/**
|
|
161
|
-
* Decrypts a 16-byte ciphertext block.
|
|
162
|
-
* @param ci - 16-byte ciphertext block
|
|
163
|
-
* @returns 16-byte plaintext block
|
|
164
|
-
*/
|
|
165
149
|
dec(ci) {
|
|
166
150
|
const out = new Uint8Array(16);
|
|
167
151
|
this.decTo(ci, out);
|
|
168
152
|
return out;
|
|
169
153
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
154
|
+
encInPlace(block) {
|
|
155
|
+
this.encTo(block, block);
|
|
156
|
+
}
|
|
157
|
+
decInPlace(block) {
|
|
158
|
+
this.decTo(block, block);
|
|
159
|
+
}
|
|
175
160
|
decPartial(cn) {
|
|
176
|
-
const st = this.st;
|
|
177
161
|
const msg = this.tmp;
|
|
178
162
|
const padded = zeroPad(cn, RATE);
|
|
179
163
|
blockFromBytes(msg, padded);
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
(msg[i] ^
|
|
183
|
-
st[wordIdx(1, i)] ^
|
|
184
|
-
st[wordIdx(4, i)] ^
|
|
185
|
-
st[wordIdx(5, i)] ^
|
|
186
|
-
(st[wordIdx(2, i)] & st[wordIdx(3, i)])) >>>
|
|
187
|
-
0;
|
|
188
|
-
}
|
|
164
|
+
this.keystreamPacked();
|
|
165
|
+
blockXor(msg, msg, this.z);
|
|
189
166
|
const pad = new Uint8Array(RATE);
|
|
190
167
|
blockToBytes(pad, msg);
|
|
191
168
|
const xn = new Uint8Array(pad.subarray(0, cn.length));
|
|
192
169
|
pad.fill(0, cn.length);
|
|
193
170
|
blockFromBytes(msg, pad);
|
|
194
|
-
this.
|
|
195
|
-
this.
|
|
171
|
+
this.packConstantInput(msg);
|
|
172
|
+
this.aegisRoundPacked();
|
|
196
173
|
return xn;
|
|
197
174
|
}
|
|
198
175
|
/**
|
|
199
176
|
* Finalizes encryption/decryption and produces an authentication tag.
|
|
200
|
-
* @param adLen - Associated data length in bytes
|
|
201
|
-
* @param msgLen - Message length in bytes
|
|
202
|
-
* @param tagLen - Tag length (16 or 32 bytes)
|
|
203
|
-
* @returns Authentication tag
|
|
204
177
|
*/
|
|
205
178
|
finalize(adLen, msgLen, tagLen = 16) {
|
|
206
179
|
const st = this.st;
|
|
@@ -209,13 +182,18 @@ export class Aegis256BsState {
|
|
|
209
182
|
tmp[1] = Math.floor((adLen * 8) / 0x100000000) >>> 0;
|
|
210
183
|
tmp[2] = ((msgLen * 8) & 0xffffffff) >>> 0;
|
|
211
184
|
tmp[3] = Math.floor((msgLen * 8) / 0x100000000) >>> 0;
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
tmp[
|
|
185
|
+
const unpacked = this.st1;
|
|
186
|
+
unpacked.set(st);
|
|
187
|
+
unpack(unpacked);
|
|
188
|
+
tmp[0] = (tmp[0] ^ unpacked[wordIdx(3, 0)]) >>> 0;
|
|
189
|
+
tmp[1] = (tmp[1] ^ unpacked[wordIdx(3, 1)]) >>> 0;
|
|
190
|
+
tmp[2] = (tmp[2] ^ unpacked[wordIdx(3, 2)]) >>> 0;
|
|
191
|
+
tmp[3] = (tmp[3] ^ unpacked[wordIdx(3, 3)]) >>> 0;
|
|
192
|
+
this.packConstantInput(tmp);
|
|
216
193
|
for (let i = 0; i < 7; i++) {
|
|
217
|
-
this.
|
|
194
|
+
this.aegisRoundPacked();
|
|
218
195
|
}
|
|
196
|
+
unpack(st);
|
|
219
197
|
if (tagLen === 16) {
|
|
220
198
|
const tag = new Uint8Array(16);
|
|
221
199
|
const tagBlock = createAesBlock();
|
|
@@ -252,12 +230,6 @@ export class Aegis256BsState {
|
|
|
252
230
|
}
|
|
253
231
|
/**
|
|
254
232
|
* Encrypts a message using bitsliced AEGIS-256 (detached mode).
|
|
255
|
-
* @param msg - Plaintext message
|
|
256
|
-
* @param ad - Associated data (authenticated but not encrypted)
|
|
257
|
-
* @param key - 32-byte encryption key
|
|
258
|
-
* @param nonce - 32-byte nonce (must be unique per message with the same key)
|
|
259
|
-
* @param tagLen - Authentication tag length: 16 or 32 bytes (default: 16)
|
|
260
|
-
* @returns Object containing ciphertext and authentication tag separately
|
|
261
233
|
*/
|
|
262
234
|
export function aegis256BsEncryptDetached(msg, ad, key, nonce, tagLen = 16) {
|
|
263
235
|
const state = new Aegis256BsState();
|
|
@@ -281,12 +253,6 @@ export function aegis256BsEncryptDetached(msg, ad, key, nonce, tagLen = 16) {
|
|
|
281
253
|
}
|
|
282
254
|
/**
|
|
283
255
|
* Decrypts a message using bitsliced AEGIS-256 (detached mode).
|
|
284
|
-
* @param ct - Ciphertext
|
|
285
|
-
* @param tag - Authentication tag (16 or 32 bytes)
|
|
286
|
-
* @param ad - Associated data (must match what was used during encryption)
|
|
287
|
-
* @param key - 32-byte encryption key
|
|
288
|
-
* @param nonce - 32-byte nonce (must match what was used during encryption)
|
|
289
|
-
* @returns Decrypted plaintext, or null if authentication fails
|
|
290
256
|
*/
|
|
291
257
|
export function aegis256BsDecryptDetached(ct, tag, ad, key, nonce) {
|
|
292
258
|
const tagLen = tag.length;
|
|
@@ -311,18 +277,53 @@ export function aegis256BsDecryptDetached(ct, tag, ad, key, nonce) {
|
|
|
311
277
|
}
|
|
312
278
|
return msg;
|
|
313
279
|
}
|
|
280
|
+
export function aegis256BsEncryptDetachedInPlace(data, ad, key, nonce, tagLen = 16) {
|
|
281
|
+
const state = new Aegis256BsState();
|
|
282
|
+
state.init(key, nonce);
|
|
283
|
+
const adPadded = zeroPad(ad, RATE);
|
|
284
|
+
for (let i = 0; i + RATE <= adPadded.length; i += RATE) {
|
|
285
|
+
state.absorb(adPadded.subarray(i, i + RATE));
|
|
286
|
+
}
|
|
287
|
+
const msgLen = data.length;
|
|
288
|
+
const fullBlocksLen = Math.floor(msgLen / RATE) * RATE;
|
|
289
|
+
for (let i = 0; i < fullBlocksLen; i += RATE) {
|
|
290
|
+
state.encInPlace(data.subarray(i, i + RATE));
|
|
291
|
+
}
|
|
292
|
+
if (msgLen > fullBlocksLen) {
|
|
293
|
+
const lastPartial = data.subarray(fullBlocksLen);
|
|
294
|
+
const lastBlock = zeroPad(lastPartial, RATE);
|
|
295
|
+
const encBlock = state.enc(lastBlock);
|
|
296
|
+
lastPartial.set(encBlock.subarray(0, lastPartial.length));
|
|
297
|
+
}
|
|
298
|
+
return state.finalize(ad.length, msgLen, tagLen);
|
|
299
|
+
}
|
|
300
|
+
export function aegis256BsDecryptDetachedInPlace(data, tag, ad, key, nonce) {
|
|
301
|
+
const tagLen = tag.length;
|
|
302
|
+
const state = new Aegis256BsState();
|
|
303
|
+
state.init(key, nonce);
|
|
304
|
+
const adPadded = zeroPad(ad, RATE);
|
|
305
|
+
for (let i = 0; i + RATE <= adPadded.length; i += RATE) {
|
|
306
|
+
state.absorb(adPadded.subarray(i, i + RATE));
|
|
307
|
+
}
|
|
308
|
+
const msgLen = data.length;
|
|
309
|
+
const fullBlocksLen = Math.floor(msgLen / RATE) * RATE;
|
|
310
|
+
for (let i = 0; i < fullBlocksLen; i += RATE) {
|
|
311
|
+
state.decInPlace(data.subarray(i, i + RATE));
|
|
312
|
+
}
|
|
313
|
+
if (msgLen > fullBlocksLen) {
|
|
314
|
+
const lastPartial = data.subarray(fullBlocksLen);
|
|
315
|
+
const decrypted = state.decPartial(lastPartial);
|
|
316
|
+
lastPartial.set(decrypted);
|
|
317
|
+
}
|
|
318
|
+
const expectedTag = state.finalize(ad.length, msgLen, tagLen);
|
|
319
|
+
if (!constantTimeEqual(tag, expectedTag)) {
|
|
320
|
+
data.fill(0);
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
314
325
|
export const AEGIS_256_BS_NONCE_SIZE = 32;
|
|
315
326
|
export const AEGIS_256_BS_KEY_SIZE = 32;
|
|
316
|
-
/**
|
|
317
|
-
* Encrypts a message using bitsliced AEGIS-256.
|
|
318
|
-
* Returns a single buffer containing nonce || ciphertext || tag.
|
|
319
|
-
* @param msg - Plaintext message
|
|
320
|
-
* @param ad - Associated data (authenticated but not encrypted)
|
|
321
|
-
* @param key - 32-byte encryption key
|
|
322
|
-
* @param nonce - 32-byte nonce (optional, generates random nonce if not provided)
|
|
323
|
-
* @param tagLen - Authentication tag length: 16 or 32 bytes (default: 16)
|
|
324
|
-
* @returns Concatenated nonce || ciphertext || tag
|
|
325
|
-
*/
|
|
326
327
|
export function aegis256BsEncrypt(msg, ad, key, nonce = null, tagLen = 16) {
|
|
327
328
|
const actualNonce = nonce ?? randomBytes(AEGIS_256_BS_NONCE_SIZE);
|
|
328
329
|
const { ciphertext, tag } = aegis256BsEncryptDetached(msg, ad, key, actualNonce, tagLen);
|
|
@@ -332,15 +333,6 @@ export function aegis256BsEncrypt(msg, ad, key, nonce = null, tagLen = 16) {
|
|
|
332
333
|
result.set(tag, AEGIS_256_BS_NONCE_SIZE + ciphertext.length);
|
|
333
334
|
return result;
|
|
334
335
|
}
|
|
335
|
-
/**
|
|
336
|
-
* Decrypts a message using bitsliced AEGIS-256.
|
|
337
|
-
* Expects input as nonce || ciphertext || tag.
|
|
338
|
-
* @param sealed - Concatenated nonce || ciphertext || tag
|
|
339
|
-
* @param ad - Associated data (must match what was used during encryption)
|
|
340
|
-
* @param key - 32-byte encryption key
|
|
341
|
-
* @param tagLen - Authentication tag length: 16 or 32 bytes (default: 16)
|
|
342
|
-
* @returns Decrypted plaintext, or null if authentication fails
|
|
343
|
-
*/
|
|
344
336
|
export function aegis256BsDecrypt(sealed, ad, key, tagLen = 16) {
|
|
345
337
|
const nonceSize = AEGIS_256_BS_NONCE_SIZE;
|
|
346
338
|
if (sealed.length < nonceSize + tagLen) {
|
|
@@ -351,14 +343,6 @@ export function aegis256BsDecrypt(sealed, ad, key, tagLen = 16) {
|
|
|
351
343
|
const tag = sealed.subarray(sealed.length - tagLen);
|
|
352
344
|
return aegis256BsDecryptDetached(ct, tag, ad, key, nonce);
|
|
353
345
|
}
|
|
354
|
-
/**
|
|
355
|
-
* Computes a MAC (Message Authentication Code) using bitsliced AEGIS-256.
|
|
356
|
-
* @param data - Data to authenticate
|
|
357
|
-
* @param key - 32-byte key
|
|
358
|
-
* @param nonce - 32-byte nonce (optional, uses zero nonce if null)
|
|
359
|
-
* @param tagLen - Tag length: 16 or 32 bytes (default: 16)
|
|
360
|
-
* @returns Authentication tag
|
|
361
|
-
*/
|
|
362
346
|
export function aegis256BsMac(data, key, nonce = null, tagLen = 16) {
|
|
363
347
|
const state = new Aegis256BsState();
|
|
364
348
|
state.init(key, nonce ?? new Uint8Array(32));
|
|
@@ -368,30 +352,14 @@ export function aegis256BsMac(data, key, nonce = null, tagLen = 16) {
|
|
|
368
352
|
}
|
|
369
353
|
return state.finalize(data.length, tagLen, tagLen);
|
|
370
354
|
}
|
|
371
|
-
/**
|
|
372
|
-
* Verifies a MAC computed using bitsliced AEGIS-256.
|
|
373
|
-
* @param data - Data to verify
|
|
374
|
-
* @param tag - Expected authentication tag (16 or 32 bytes)
|
|
375
|
-
* @param key - 32-byte key
|
|
376
|
-
* @param nonce - 32-byte nonce (optional, uses zero nonce if null)
|
|
377
|
-
* @returns True if the tag is valid, false otherwise
|
|
378
|
-
*/
|
|
379
355
|
export function aegis256BsMacVerify(data, tag, key, nonce = null) {
|
|
380
356
|
const tagLen = tag.length;
|
|
381
357
|
const expectedTag = aegis256BsMac(data, key, nonce, tagLen);
|
|
382
358
|
return constantTimeEqual(tag, expectedTag);
|
|
383
359
|
}
|
|
384
|
-
/**
|
|
385
|
-
* Generates a random 32-byte key for bitsliced AEGIS-256.
|
|
386
|
-
* @returns 32-byte encryption key
|
|
387
|
-
*/
|
|
388
360
|
export function aegis256BsCreateKey() {
|
|
389
361
|
return randomBytes(AEGIS_256_BS_KEY_SIZE);
|
|
390
362
|
}
|
|
391
|
-
/**
|
|
392
|
-
* Generates a random 32-byte nonce for bitsliced AEGIS-256.
|
|
393
|
-
* @returns 32-byte nonce
|
|
394
|
-
*/
|
|
395
363
|
export function aegis256BsCreateNonce() {
|
|
396
364
|
return randomBytes(AEGIS_256_BS_NONCE_SIZE);
|
|
397
365
|
}
|
package/dist/aegis256-bs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aegis256-bs.js","sourceRoot":"","sources":["../src/aegis256-bs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aegis256-bs.js","sourceRoot":"","sources":["../src/aegis256-bs.ts"],"names":[],"mappings":"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"}
|