internxt-crypto 0.0.13 → 0.0.14
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/dist/{aes-DSDxP8uF.mjs → aes-DCb9dJqb.mjs} +7 -30
- package/dist/aes-DCb9dJqb.mjs.map +1 -0
- package/dist/{aes-bOrKZuUC.js → aes-DQo1MyCz.js} +7 -30
- package/dist/aes-DQo1MyCz.js.map +1 -0
- package/dist/constants.d.mts +5 -5
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.d.ts +5 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -8
- package/dist/constants.js.map +1 -1
- package/dist/constants.mjs +5 -5
- package/dist/constants.mjs.map +1 -1
- package/dist/derive-key.js +1 -1
- package/dist/derive-key.mjs +1 -1
- package/dist/{deriveKeysFromPassword-Ko7NxkHM.js → deriveKeysFromPassword-BYaiSGKL.js} +4 -9
- package/dist/{deriveKeysFromPassword-Ko7NxkHM.js.map → deriveKeysFromPassword-BYaiSGKL.js.map} +1 -1
- package/dist/{deriveKeysFromPassword-DJRWZ8Rw.mjs → deriveKeysFromPassword-XIwzErlL.mjs} +4 -9
- package/dist/{deriveKeysFromPassword-DJRWZ8Rw.mjs.map → deriveKeysFromPassword-XIwzErlL.mjs.map} +1 -1
- package/dist/email-crypto.js +1 -1
- package/dist/email-crypto.mjs +1 -1
- package/dist/email-search.d.mts +18 -18
- package/dist/email-search.d.mts.map +1 -1
- package/dist/email-search.d.ts +18 -18
- package/dist/email-search.d.ts.map +1 -1
- package/dist/email-search.js +14 -14
- package/dist/email-search.js.map +1 -1
- package/dist/email-search.mjs +14 -14
- package/dist/email-search.mjs.map +1 -1
- package/dist/{emailEncryptionKey-27mIHh18.mjs → emailEncryptionKey-B9xHw1h_.mjs} +6 -6
- package/dist/emailEncryptionKey-B9xHw1h_.mjs.map +1 -0
- package/dist/{emailEncryptionKey-DbaDAdoW.js → emailEncryptionKey-CQNe5W_T.js} +6 -6
- package/dist/emailEncryptionKey-CQNe5W_T.js.map +1 -0
- package/dist/{emailKeys-BJGdkLrg.js → emailKeys-C0KhtfNP.js} +28 -49
- package/dist/emailKeys-C0KhtfNP.js.map +1 -0
- package/dist/{emailKeys-Fp9WR3wl.mjs → emailKeys-D4lp9NRv.mjs} +26 -47
- package/dist/emailKeys-D4lp9NRv.mjs.map +1 -0
- package/dist/index.d.mts +11 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.mjs +7 -7
- package/dist/keystore-crypto.js +1 -1
- package/dist/keystore-crypto.mjs +1 -1
- package/dist/kyber768-SXnIo-Nw.mjs +47 -0
- package/dist/kyber768-SXnIo-Nw.mjs.map +1 -0
- package/dist/kyber768-WUVc2fIR.js +65 -0
- package/dist/kyber768-WUVc2fIR.js.map +1 -0
- package/dist/post-quantum-crypto.d.mts +5 -41
- package/dist/post-quantum-crypto.d.mts.map +1 -1
- package/dist/post-quantum-crypto.d.ts +5 -41
- package/dist/post-quantum-crypto.d.ts.map +1 -1
- package/dist/post-quantum-crypto.js +4 -16
- package/dist/post-quantum-crypto.mjs +2 -2
- package/dist/symmetric-crypto.d.mts +4 -4
- package/dist/symmetric-crypto.d.mts.map +1 -1
- package/dist/symmetric-crypto.d.ts +4 -4
- package/dist/symmetric-crypto.d.ts.map +1 -1
- package/dist/symmetric-crypto.js +1 -1
- package/dist/symmetric-crypto.mjs +1 -1
- package/dist/types.d.mts +5 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +2 -1
- package/dist/aes-DSDxP8uF.mjs.map +0 -1
- package/dist/aes-bOrKZuUC.js.map +0 -1
- package/dist/emailEncryptionKey-27mIHh18.mjs.map +0 -1
- package/dist/emailEncryptionKey-DbaDAdoW.js.map +0 -1
- package/dist/emailKeys-BJGdkLrg.js.map +0 -1
- package/dist/emailKeys-Fp9WR3wl.mjs.map +0 -1
- package/dist/kyber1024-PpwE1rki.mjs +0 -144
- package/dist/kyber1024-PpwE1rki.mjs.map +0 -1
- package/dist/kyber1024-jeKS8CXf.js +0 -173
- package/dist/kyber1024-jeKS8CXf.js.map +0 -1
- package/dist/kyber768-DGBB_RS7.d.ts +0 -32
- package/dist/kyber768-DGBB_RS7.d.ts.map +0 -1
- package/dist/kyber768-DzIcGg1i.d.mts +0 -32
- package/dist/kyber768-DzIcGg1i.d.mts.map +0 -1
|
@@ -2,6 +2,7 @@ import { AES_ALGORITHM, AES_KEY_BIT_LENGTH, AUX_BYTE_LEN, IV_LEN_BYTES, KEY_FORM
|
|
|
2
2
|
import { n as getBytesFromData } from "./mac-ZpRlx8Fs.mjs";
|
|
3
3
|
import { concatBytes } from "@noble/hashes/utils.js";
|
|
4
4
|
import { randomBytes } from "@noble/post-quantum/utils.js";
|
|
5
|
+
import { gcm } from "@noble/ciphers/webcrypto.js";
|
|
5
6
|
|
|
6
7
|
//#region src/symmetric-crypto/keys.ts
|
|
7
8
|
/**
|
|
@@ -47,13 +48,7 @@ async function genSymmetricCryptoKey() {
|
|
|
47
48
|
* @returns The generated Uint8Array.
|
|
48
49
|
*/
|
|
49
50
|
function genSymmetricKey() {
|
|
50
|
-
|
|
51
|
-
const key = new Uint8Array(AES_KEY_BIT_LENGTH / 8);
|
|
52
|
-
crypto.getRandomValues(key);
|
|
53
|
-
return key;
|
|
54
|
-
} catch (error) {
|
|
55
|
-
throw new Error("Failed to generate symmetric key", { cause: error });
|
|
56
|
-
}
|
|
51
|
+
return randomBytes(AES_KEY_BIT_LENGTH / 8);
|
|
57
52
|
}
|
|
58
53
|
/**
|
|
59
54
|
* Derives CryptoKey from the given key material
|
|
@@ -110,16 +105,7 @@ async function makeAuxFixedLength(aux) {
|
|
|
110
105
|
* @returns The resulting ciphertext
|
|
111
106
|
*/
|
|
112
107
|
async function encryptMessage(message, encryptionKey, iv, additionalData) {
|
|
113
|
-
|
|
114
|
-
const encrypted = await crypto.subtle.encrypt({
|
|
115
|
-
name: AES_ALGORITHM,
|
|
116
|
-
iv,
|
|
117
|
-
additionalData
|
|
118
|
-
}, encryptionKey, message);
|
|
119
|
-
return new Uint8Array(encrypted);
|
|
120
|
-
} catch (error) {
|
|
121
|
-
throw new Error("Failed to encrypt symmetrically", { cause: error });
|
|
122
|
-
}
|
|
108
|
+
return gcm(encryptionKey, iv, additionalData).encrypt(message);
|
|
123
109
|
}
|
|
124
110
|
/**
|
|
125
111
|
* Symmetrically decrypts message
|
|
@@ -131,16 +117,7 @@ async function encryptMessage(message, encryptionKey, iv, additionalData) {
|
|
|
131
117
|
* @returns The resulting decrypted message
|
|
132
118
|
*/
|
|
133
119
|
async function decryptMessage(ciphertext, iv, encryptionKey, additionalData) {
|
|
134
|
-
|
|
135
|
-
const decrypted = await crypto.subtle.decrypt({
|
|
136
|
-
name: AES_ALGORITHM,
|
|
137
|
-
iv,
|
|
138
|
-
additionalData
|
|
139
|
-
}, encryptionKey, ciphertext);
|
|
140
|
-
return new Uint8Array(decrypted);
|
|
141
|
-
} catch (error) {
|
|
142
|
-
throw new Error("Failed to decrypt symmetrically", { cause: error });
|
|
143
|
-
}
|
|
120
|
+
return gcm(encryptionKey, iv, additionalData).decrypt(ciphertext);
|
|
144
121
|
}
|
|
145
122
|
|
|
146
123
|
//#endregion
|
|
@@ -148,7 +125,7 @@ async function decryptMessage(ciphertext, iv, encryptionKey, additionalData) {
|
|
|
148
125
|
/**
|
|
149
126
|
* Symmetrically encrypts the message
|
|
150
127
|
*
|
|
151
|
-
* @param encryptionKey - The symmetric
|
|
128
|
+
* @param encryptionKey - The symmetric key used for message encryption
|
|
152
129
|
* @param message - The message to encrypt
|
|
153
130
|
* @param freeField - The context of the message (required for IV generation)
|
|
154
131
|
* @param aux - The auxilary string
|
|
@@ -165,7 +142,7 @@ async function encryptSymmetrically(encryptionKey, message, aux, freeField) {
|
|
|
165
142
|
/**
|
|
166
143
|
* Decryps symmetrically encrypted message
|
|
167
144
|
*
|
|
168
|
-
* @param encryptionKey - The symmetric
|
|
145
|
+
* @param encryptionKey - The symmetric key used for message encryption
|
|
169
146
|
* @param encryptedMessage - The ciphertext
|
|
170
147
|
* @param aux - The auxilary string
|
|
171
148
|
* @returns The resulting ciphertext.
|
|
@@ -181,4 +158,4 @@ async function decryptSymmetrically(encryptionKey, encryptedMessage, aux) {
|
|
|
181
158
|
|
|
182
159
|
//#endregion
|
|
183
160
|
export { genSymmetricCryptoKey as a, exportSymmetricCryptoKey as i, encryptSymmetrically as n, genSymmetricKey as o, deriveSymmetricCryptoKey as r, importSymmetricCryptoKey as s, decryptSymmetrically as t };
|
|
184
|
-
//# sourceMappingURL=aes-
|
|
161
|
+
//# sourceMappingURL=aes-DCb9dJqb.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-DCb9dJqb.mjs","names":["aeadCipher"],"sources":["../src/symmetric-crypto/keys.ts","../src/symmetric-crypto/core.ts","../src/symmetric-crypto/aes.ts"],"sourcesContent":["import { AES_ALGORITHM, AES_KEY_BIT_LENGTH, KEY_FORMAT } from '../constants';\nimport { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBytesFromData } from '../hash';\n\n/**\n * Converts Uint8Array into CryptoKey\n *\n * @param keyData - The Uint8Array representation of the symmetric key\n * @returns The resulting symmetric CryptoKey.\n */\nexport async function importSymmetricCryptoKey(keyData: Uint8Array | ArrayBuffer): Promise<CryptoKey> {\n return crypto.subtle.importKey(\n KEY_FORMAT,\n new Uint8Array(keyData),\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Converts CryptoKey into Uint8Array\n *\n * @param key - The symmetric CryptoKey\n * @returns The resulting Uint8Array.\n */\nexport async function exportSymmetricCryptoKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const rawKey = await crypto.subtle.exportKey(KEY_FORMAT, key);\n return new Uint8Array(rawKey);\n } catch (error) {\n throw new Error('Failed to export symmetric CryptoKey', { cause: error });\n }\n}\n\n/**\n * Generates symmetric CryptoKey\n *\n * @returns The generated CryptoKey.\n */\nexport async function genSymmetricCryptoKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey(\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n return randomBytes(AES_KEY_BIT_LENGTH / 8);\n}\n\n/**\n * Derives CryptoKey from the given key material\n *\n * @returns The derived CryptoKey.\n */\nexport async function deriveSymmetricCryptoKey(keyMaterial: Uint8Array): Promise<CryptoKey> {\n try {\n const hashBuffer = getBytesFromData(AES_KEY_BIT_LENGTH / 8, keyMaterial);\n return importSymmetricCryptoKey(hashBuffer);\n } catch (error) {\n throw new Error('Failed to derive CryptoKey from the given key material', { cause: error });\n }\n}\n","import { gcm as aeadCipher } from '@noble/ciphers/webcrypto.js';\nimport { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBytesFromData } from '../hash';\nimport { AUX_BYTE_LEN, IV_LEN_BYTES } from '../constants';\n\n/**\n * Creates an initialization vector (IV) using RGB-based construction (8.2.2 NIST Special Publication 800-38D)\n * Constructs a 128-bits IV from 2 fileds: the random field (at least 96 bits) and the free field (32 bits).\n * If free filed is empty, then the entier 128-bit IV is sampled randomly.\n *\n * @param freeFiled - The string with an unrestricted content. Can be a device identifier, etc.\n * @returns The resulting 128-bits initialization vector.\n */\nexport function createNISTbasedIV(freeField?: Uint8Array): Uint8Array {\n try {\n if (!freeField) {\n return randomBytes(IV_LEN_BYTES);\n }\n\n const iv = new Uint8Array(16);\n\n const randFiled = randomBytes(12);\n iv.set(randFiled, 0);\n\n const freeFiledFixedLength = getBytesFromData(4, freeField);\n iv.set(freeFiledFixedLength, 12);\n\n return iv;\n } catch (error) {\n throw new Error('Failed to create IV', { cause: error });\n }\n}\n\n/**\n * Hashes aux string to make it fixed-length\n *\n * @param aux - The auxilay string of arbitrary length\n * @returns The resulting fixed-length auxilary string.\n */\nexport async function makeAuxFixedLength(aux: Uint8Array): Promise<Uint8Array> {\n return getBytesFromData(AUX_BYTE_LEN, aux);\n}\n\n/**\n * Symmetrically encrypts message\n *\n * @param message - The message to encrypt\n * @param encryptionKey - The encryption key\n * @param iv - The initialization vector\n * @param additionalData - The auxilary data\n * @returns The resulting ciphertext\n */\nexport async function encryptMessage(\n message: Uint8Array,\n encryptionKey: Uint8Array,\n iv: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n return aeadCipher(encryptionKey, iv, additionalData).encrypt(message);\n}\n\n/**\n * Symmetrically decrypts message\n *\n * @param ciphertext - The encrypted message\n * @param ciphertext - The initialization vector\n * @param encryptionKey - The encryption key\n * @param additionalData - The auxilary data\n * @returns The resulting decrypted message\n */\nexport async function decryptMessage(\n ciphertext: Uint8Array,\n iv: Uint8Array,\n encryptionKey: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n return aeadCipher(encryptionKey, iv, additionalData).decrypt(ciphertext);\n}\n","import { createNISTbasedIV, makeAuxFixedLength, encryptMessage, decryptMessage } from './core';\nimport { concatBytes } from '@noble/hashes/utils.js';\nimport { IV_LEN_BYTES } from '../constants';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param message - The message to encrypt\n * @param freeField - The context of the message (required for IV generation)\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: Uint8Array,\n message: Uint8Array,\n aux: Uint8Array,\n freeField?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const iv = createNISTbasedIV(freeField);\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = await encryptMessage(message, encryptionKey, iv, additionalData);\n return concatBytes(ciphertext, iv);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Decryps symmetrically encrypted message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: Uint8Array,\n encryptedMessage: Uint8Array,\n aux: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - IV_LEN_BYTES);\n const iv = encryptedMessage.slice(encryptedMessage.length - IV_LEN_BYTES);\n const result = await decryptMessage(ciphertext, iv, encryptionKey, additionalData);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAUA,eAAsB,yBAAyB,SAAuD;AACpG,QAAO,OAAO,OAAO,UACnB,YACA,IAAI,WAAW,QAAQ,EACvB;EACE,MAAM;EACN,QAAQ;EACT,EACD,MACA,CAAC,WAAW,UAAU,CACvB;;;;;;;;AASH,eAAsB,yBAAyB,KAAqC;AAClF,KAAI;EACF,MAAM,SAAS,MAAM,OAAO,OAAO,UAAU,YAAY,IAAI;AAC7D,SAAO,IAAI,WAAW,OAAO;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,wCAAwC,EAAE,OAAO,OAAO,CAAC;;;;;;;;AAS7E,eAAsB,wBAA4C;AAChE,QAAO,OAAO,OAAO,YACnB;EACE,MAAM;EACN,QAAQ;EACT,EACD,MACA,CAAC,WAAW,UAAU,CACvB;;;;;;;AAQH,SAAgB,kBAA8B;AAC5C,QAAO,YAAY,qBAAqB,EAAE;;;;;;;AAQ5C,eAAsB,yBAAyB,aAA6C;AAC1F,KAAI;AAEF,SAAO,yBADY,iBAAiB,qBAAqB,GAAG,YAAY,CAC7B;UACpC,OAAO;AACd,QAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;AC5D/F,SAAgB,kBAAkB,WAAoC;AACpE,KAAI;AACF,MAAI,CAAC,UACH,QAAO,YAAY,aAAa;EAGlC,MAAM,KAAK,IAAI,WAAW,GAAG;EAE7B,MAAM,YAAY,YAAY,GAAG;AACjC,KAAG,IAAI,WAAW,EAAE;EAEpB,MAAM,uBAAuB,iBAAiB,GAAG,UAAU;AAC3D,KAAG,IAAI,sBAAsB,GAAG;AAEhC,SAAO;UACA,OAAO;AACd,QAAM,IAAI,MAAM,uBAAuB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAU5D,eAAsB,mBAAmB,KAAsC;AAC7E,QAAO,iBAAiB,cAAc,IAAI;;;;;;;;;;;AAY5C,eAAsB,eACpB,SACA,eACA,IACA,gBACqB;AACrB,QAAOA,IAAW,eAAe,IAAI,eAAe,CAAC,QAAQ,QAAQ;;;;;;;;;;;AAYvE,eAAsB,eACpB,YACA,IACA,eACA,gBACqB;AACrB,QAAOA,IAAW,eAAe,IAAI,eAAe,CAAC,QAAQ,WAAW;;;;;;;;;;;;;;AC/D1E,eAAsB,qBACpB,eACA,SACA,KACA,WACqB;AACrB,KAAI;EACF,MAAM,KAAK,kBAAkB,UAAU;AAGvC,SAAO,YADY,MAAM,eAAe,SAAS,eAAe,IADzC,MAAM,mBAAmB,IAAI,CAC+B,EACpD,GAAG;UAC3B,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;AAYxE,eAAsB,qBACpB,eACA,kBACA,KACqB;AACrB,KAAI;EACF,MAAM,iBAAiB,MAAM,mBAAmB,IAAI;AAIpD,SADe,MAAM,eAFF,iBAAiB,MAAM,GAAG,iBAAiB,SAAS,aAAa,EACzE,iBAAiB,MAAM,iBAAiB,SAAS,aAAa,EACrB,eAAe,eAAe;UAE3E,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC"}
|
|
@@ -3,6 +3,7 @@ const require_constants = require('./constants.js');
|
|
|
3
3
|
const require_mac = require('./mac-BMb1F0dN.js');
|
|
4
4
|
let _noble_hashes_utils_js = require("@noble/hashes/utils.js");
|
|
5
5
|
let _noble_post_quantum_utils_js = require("@noble/post-quantum/utils.js");
|
|
6
|
+
let _noble_ciphers_webcrypto_js = require("@noble/ciphers/webcrypto.js");
|
|
6
7
|
|
|
7
8
|
//#region src/symmetric-crypto/keys.ts
|
|
8
9
|
/**
|
|
@@ -48,13 +49,7 @@ async function genSymmetricCryptoKey() {
|
|
|
48
49
|
* @returns The generated Uint8Array.
|
|
49
50
|
*/
|
|
50
51
|
function genSymmetricKey() {
|
|
51
|
-
|
|
52
|
-
const key = new Uint8Array(require_constants.AES_KEY_BIT_LENGTH / 8);
|
|
53
|
-
crypto.getRandomValues(key);
|
|
54
|
-
return key;
|
|
55
|
-
} catch (error) {
|
|
56
|
-
throw new Error("Failed to generate symmetric key", { cause: error });
|
|
57
|
-
}
|
|
52
|
+
return (0, _noble_post_quantum_utils_js.randomBytes)(require_constants.AES_KEY_BIT_LENGTH / 8);
|
|
58
53
|
}
|
|
59
54
|
/**
|
|
60
55
|
* Derives CryptoKey from the given key material
|
|
@@ -111,16 +106,7 @@ async function makeAuxFixedLength(aux) {
|
|
|
111
106
|
* @returns The resulting ciphertext
|
|
112
107
|
*/
|
|
113
108
|
async function encryptMessage(message, encryptionKey, iv, additionalData) {
|
|
114
|
-
|
|
115
|
-
const encrypted = await crypto.subtle.encrypt({
|
|
116
|
-
name: require_constants.AES_ALGORITHM,
|
|
117
|
-
iv,
|
|
118
|
-
additionalData
|
|
119
|
-
}, encryptionKey, message);
|
|
120
|
-
return new Uint8Array(encrypted);
|
|
121
|
-
} catch (error) {
|
|
122
|
-
throw new Error("Failed to encrypt symmetrically", { cause: error });
|
|
123
|
-
}
|
|
109
|
+
return (0, _noble_ciphers_webcrypto_js.gcm)(encryptionKey, iv, additionalData).encrypt(message);
|
|
124
110
|
}
|
|
125
111
|
/**
|
|
126
112
|
* Symmetrically decrypts message
|
|
@@ -132,16 +118,7 @@ async function encryptMessage(message, encryptionKey, iv, additionalData) {
|
|
|
132
118
|
* @returns The resulting decrypted message
|
|
133
119
|
*/
|
|
134
120
|
async function decryptMessage(ciphertext, iv, encryptionKey, additionalData) {
|
|
135
|
-
|
|
136
|
-
const decrypted = await crypto.subtle.decrypt({
|
|
137
|
-
name: require_constants.AES_ALGORITHM,
|
|
138
|
-
iv,
|
|
139
|
-
additionalData
|
|
140
|
-
}, encryptionKey, ciphertext);
|
|
141
|
-
return new Uint8Array(decrypted);
|
|
142
|
-
} catch (error) {
|
|
143
|
-
throw new Error("Failed to decrypt symmetrically", { cause: error });
|
|
144
|
-
}
|
|
121
|
+
return (0, _noble_ciphers_webcrypto_js.gcm)(encryptionKey, iv, additionalData).decrypt(ciphertext);
|
|
145
122
|
}
|
|
146
123
|
|
|
147
124
|
//#endregion
|
|
@@ -149,7 +126,7 @@ async function decryptMessage(ciphertext, iv, encryptionKey, additionalData) {
|
|
|
149
126
|
/**
|
|
150
127
|
* Symmetrically encrypts the message
|
|
151
128
|
*
|
|
152
|
-
* @param encryptionKey - The symmetric
|
|
129
|
+
* @param encryptionKey - The symmetric key used for message encryption
|
|
153
130
|
* @param message - The message to encrypt
|
|
154
131
|
* @param freeField - The context of the message (required for IV generation)
|
|
155
132
|
* @param aux - The auxilary string
|
|
@@ -166,7 +143,7 @@ async function encryptSymmetrically(encryptionKey, message, aux, freeField) {
|
|
|
166
143
|
/**
|
|
167
144
|
* Decryps symmetrically encrypted message
|
|
168
145
|
*
|
|
169
|
-
* @param encryptionKey - The symmetric
|
|
146
|
+
* @param encryptionKey - The symmetric key used for message encryption
|
|
170
147
|
* @param encryptedMessage - The ciphertext
|
|
171
148
|
* @param aux - The auxilary string
|
|
172
149
|
* @returns The resulting ciphertext.
|
|
@@ -223,4 +200,4 @@ Object.defineProperty(exports, 'importSymmetricCryptoKey', {
|
|
|
223
200
|
return importSymmetricCryptoKey;
|
|
224
201
|
}
|
|
225
202
|
});
|
|
226
|
-
//# sourceMappingURL=aes-
|
|
203
|
+
//# sourceMappingURL=aes-DQo1MyCz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes-DQo1MyCz.js","names":["KEY_FORMAT","AES_ALGORITHM","AES_KEY_BIT_LENGTH","getBytesFromData","IV_LEN_BYTES","getBytesFromData","AUX_BYTE_LEN","IV_LEN_BYTES"],"sources":["../src/symmetric-crypto/keys.ts","../src/symmetric-crypto/core.ts","../src/symmetric-crypto/aes.ts"],"sourcesContent":["import { AES_ALGORITHM, AES_KEY_BIT_LENGTH, KEY_FORMAT } from '../constants';\nimport { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBytesFromData } from '../hash';\n\n/**\n * Converts Uint8Array into CryptoKey\n *\n * @param keyData - The Uint8Array representation of the symmetric key\n * @returns The resulting symmetric CryptoKey.\n */\nexport async function importSymmetricCryptoKey(keyData: Uint8Array | ArrayBuffer): Promise<CryptoKey> {\n return crypto.subtle.importKey(\n KEY_FORMAT,\n new Uint8Array(keyData),\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Converts CryptoKey into Uint8Array\n *\n * @param key - The symmetric CryptoKey\n * @returns The resulting Uint8Array.\n */\nexport async function exportSymmetricCryptoKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const rawKey = await crypto.subtle.exportKey(KEY_FORMAT, key);\n return new Uint8Array(rawKey);\n } catch (error) {\n throw new Error('Failed to export symmetric CryptoKey', { cause: error });\n }\n}\n\n/**\n * Generates symmetric CryptoKey\n *\n * @returns The generated CryptoKey.\n */\nexport async function genSymmetricCryptoKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey(\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n return randomBytes(AES_KEY_BIT_LENGTH / 8);\n}\n\n/**\n * Derives CryptoKey from the given key material\n *\n * @returns The derived CryptoKey.\n */\nexport async function deriveSymmetricCryptoKey(keyMaterial: Uint8Array): Promise<CryptoKey> {\n try {\n const hashBuffer = getBytesFromData(AES_KEY_BIT_LENGTH / 8, keyMaterial);\n return importSymmetricCryptoKey(hashBuffer);\n } catch (error) {\n throw new Error('Failed to derive CryptoKey from the given key material', { cause: error });\n }\n}\n","import { gcm as aeadCipher } from '@noble/ciphers/webcrypto.js';\nimport { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBytesFromData } from '../hash';\nimport { AUX_BYTE_LEN, IV_LEN_BYTES } from '../constants';\n\n/**\n * Creates an initialization vector (IV) using RGB-based construction (8.2.2 NIST Special Publication 800-38D)\n * Constructs a 128-bits IV from 2 fileds: the random field (at least 96 bits) and the free field (32 bits).\n * If free filed is empty, then the entier 128-bit IV is sampled randomly.\n *\n * @param freeFiled - The string with an unrestricted content. Can be a device identifier, etc.\n * @returns The resulting 128-bits initialization vector.\n */\nexport function createNISTbasedIV(freeField?: Uint8Array): Uint8Array {\n try {\n if (!freeField) {\n return randomBytes(IV_LEN_BYTES);\n }\n\n const iv = new Uint8Array(16);\n\n const randFiled = randomBytes(12);\n iv.set(randFiled, 0);\n\n const freeFiledFixedLength = getBytesFromData(4, freeField);\n iv.set(freeFiledFixedLength, 12);\n\n return iv;\n } catch (error) {\n throw new Error('Failed to create IV', { cause: error });\n }\n}\n\n/**\n * Hashes aux string to make it fixed-length\n *\n * @param aux - The auxilay string of arbitrary length\n * @returns The resulting fixed-length auxilary string.\n */\nexport async function makeAuxFixedLength(aux: Uint8Array): Promise<Uint8Array> {\n return getBytesFromData(AUX_BYTE_LEN, aux);\n}\n\n/**\n * Symmetrically encrypts message\n *\n * @param message - The message to encrypt\n * @param encryptionKey - The encryption key\n * @param iv - The initialization vector\n * @param additionalData - The auxilary data\n * @returns The resulting ciphertext\n */\nexport async function encryptMessage(\n message: Uint8Array,\n encryptionKey: Uint8Array,\n iv: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n return aeadCipher(encryptionKey, iv, additionalData).encrypt(message);\n}\n\n/**\n * Symmetrically decrypts message\n *\n * @param ciphertext - The encrypted message\n * @param ciphertext - The initialization vector\n * @param encryptionKey - The encryption key\n * @param additionalData - The auxilary data\n * @returns The resulting decrypted message\n */\nexport async function decryptMessage(\n ciphertext: Uint8Array,\n iv: Uint8Array,\n encryptionKey: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n return aeadCipher(encryptionKey, iv, additionalData).decrypt(ciphertext);\n}\n","import { createNISTbasedIV, makeAuxFixedLength, encryptMessage, decryptMessage } from './core';\nimport { concatBytes } from '@noble/hashes/utils.js';\nimport { IV_LEN_BYTES } from '../constants';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param message - The message to encrypt\n * @param freeField - The context of the message (required for IV generation)\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: Uint8Array,\n message: Uint8Array,\n aux: Uint8Array,\n freeField?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const iv = createNISTbasedIV(freeField);\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = await encryptMessage(message, encryptionKey, iv, additionalData);\n return concatBytes(ciphertext, iv);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Decryps symmetrically encrypted message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: Uint8Array,\n encryptedMessage: Uint8Array,\n aux: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - IV_LEN_BYTES);\n const iv = encryptedMessage.slice(encryptedMessage.length - IV_LEN_BYTES);\n const result = await decryptMessage(ciphertext, iv, encryptionKey, additionalData);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAUA,eAAsB,yBAAyB,SAAuD;AACpG,QAAO,OAAO,OAAO,UACnBA,8BACA,IAAI,WAAW,QAAQ,EACvB;EACE,MAAMC;EACN,QAAQC;EACT,EACD,MACA,CAAC,WAAW,UAAU,CACvB;;;;;;;;AASH,eAAsB,yBAAyB,KAAqC;AAClF,KAAI;EACF,MAAM,SAAS,MAAM,OAAO,OAAO,UAAUF,8BAAY,IAAI;AAC7D,SAAO,IAAI,WAAW,OAAO;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,wCAAwC,EAAE,OAAO,OAAO,CAAC;;;;;;;;AAS7E,eAAsB,wBAA4C;AAChE,QAAO,OAAO,OAAO,YACnB;EACE,MAAMC;EACN,QAAQC;EACT,EACD,MACA,CAAC,WAAW,UAAU,CACvB;;;;;;;AAQH,SAAgB,kBAA8B;AAC5C,sDAAmBA,uCAAqB,EAAE;;;;;;;AAQ5C,eAAsB,yBAAyB,aAA6C;AAC1F,KAAI;AAEF,SAAO,yBADYC,6BAAiBD,uCAAqB,GAAG,YAAY,CAC7B;UACpC,OAAO;AACd,QAAM,IAAI,MAAM,0DAA0D,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;AC5D/F,SAAgB,kBAAkB,WAAoC;AACpE,KAAI;AACF,MAAI,CAAC,UACH,sDAAmBE,+BAAa;EAGlC,MAAM,KAAK,IAAI,WAAW,GAAG;EAE7B,MAAM,0DAAwB,GAAG;AACjC,KAAG,IAAI,WAAW,EAAE;EAEpB,MAAM,uBAAuBC,6BAAiB,GAAG,UAAU;AAC3D,KAAG,IAAI,sBAAsB,GAAG;AAEhC,SAAO;UACA,OAAO;AACd,QAAM,IAAI,MAAM,uBAAuB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAU5D,eAAsB,mBAAmB,KAAsC;AAC7E,QAAOA,6BAAiBC,gCAAc,IAAI;;;;;;;;;;;AAY5C,eAAsB,eACpB,SACA,eACA,IACA,gBACqB;AACrB,6CAAkB,eAAe,IAAI,eAAe,CAAC,QAAQ,QAAQ;;;;;;;;;;;AAYvE,eAAsB,eACpB,YACA,IACA,eACA,gBACqB;AACrB,6CAAkB,eAAe,IAAI,eAAe,CAAC,QAAQ,WAAW;;;;;;;;;;;;;;AC/D1E,eAAsB,qBACpB,eACA,SACA,KACA,WACqB;AACrB,KAAI;EACF,MAAM,KAAK,kBAAkB,UAAU;AAGvC,iDADmB,MAAM,eAAe,SAAS,eAAe,IADzC,MAAM,mBAAmB,IAAI,CAC+B,EACpD,GAAG;UAC3B,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;AAYxE,eAAsB,qBACpB,eACA,kBACA,KACqB;AACrB,KAAI;EACF,MAAM,iBAAiB,MAAM,mBAAmB,IAAI;AAIpD,SADe,MAAM,eAFF,iBAAiB,MAAM,GAAG,iBAAiB,SAASC,+BAAa,EACzE,iBAAiB,MAAM,iBAAiB,SAASA,+BAAa,EACrB,eAAe,eAAe;UAE3E,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC"}
|
package/dist/constants.d.mts
CHANGED
|
@@ -16,18 +16,18 @@ declare const ARGON2ID_ITERATIONS = 4;
|
|
|
16
16
|
declare const ARGON2ID_MEMORY_SIZE = 65536;
|
|
17
17
|
declare const ARGON2ID_SALT_BYTE_LENGTH = 16;
|
|
18
18
|
declare const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;
|
|
19
|
-
declare const KYBER512_PUBLIC_KEY_LENGTH = 800;
|
|
20
|
-
declare const KYBER512_SECRET_KEY_LENGTH = 1632;
|
|
21
19
|
declare const KYBER768_PUBLIC_KEY_LENGTH = 1184;
|
|
22
20
|
declare const KYBER768_SECRET_KEY_LENGTH = 2400;
|
|
23
|
-
declare const KYBER1024_PUBLIC_KEY_LENGTH = 1568;
|
|
24
|
-
declare const KYBER1024_SECRET_KEY_LENGTH = 3168;
|
|
25
21
|
declare const KYBER_SEED_LENGTH = 64;
|
|
26
22
|
declare const HASH_BIT_LEN = 256;
|
|
27
23
|
declare const MAX_CACHE_SIZE = 600000000;
|
|
28
24
|
declare const MAX_EMAIL_PER_BATCH = 100;
|
|
29
25
|
declare const DB_LABEL = "email";
|
|
30
26
|
declare const DB_VERSION = 1;
|
|
27
|
+
declare const XWING_PUBLIC_KEY_LENGTH = 1216;
|
|
28
|
+
declare const XWING_SECRET_KEY_LENGTH = 32;
|
|
29
|
+
declare const XWING_SEED_BYTE_LENGTH = 32;
|
|
30
|
+
declare const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;
|
|
31
31
|
//#endregion
|
|
32
|
-
export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM,
|
|
32
|
+
export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH, XWING_CIPHERTEXT_BYTE_LENGTH, XWING_PUBLIC_KEY_LENGTH, XWING_SECRET_KEY_LENGTH, XWING_SEED_BYTE_LENGTH };
|
|
33
33
|
//# sourceMappingURL=constants.d.mts.map
|
package/dist/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,aAAA;AAAA,cACA,kBAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cAEA,sBAAA;AAAA,cACA,UAAA;AAAA,cACA,gBAAA;AAAA,cAEA,aAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"constants.d.mts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,aAAA;AAAA,cACA,kBAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cAEA,sBAAA;AAAA,cACA,UAAA;AAAA,cACA,gBAAA;AAAA,cAEA,aAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cACA,iBAAA;AAAA,cAEA,YAAA;AAAA,cAEA,cAAA;AAAA,cACA,mBAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA;AAAA,cAEA,uBAAA;AAAA,cACA,uBAAA;AAAA,cACA,sBAAA;AAAA,cACA,4BAAA"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -16,18 +16,18 @@ declare const ARGON2ID_ITERATIONS = 4;
|
|
|
16
16
|
declare const ARGON2ID_MEMORY_SIZE = 65536;
|
|
17
17
|
declare const ARGON2ID_SALT_BYTE_LENGTH = 16;
|
|
18
18
|
declare const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;
|
|
19
|
-
declare const KYBER512_PUBLIC_KEY_LENGTH = 800;
|
|
20
|
-
declare const KYBER512_SECRET_KEY_LENGTH = 1632;
|
|
21
19
|
declare const KYBER768_PUBLIC_KEY_LENGTH = 1184;
|
|
22
20
|
declare const KYBER768_SECRET_KEY_LENGTH = 2400;
|
|
23
|
-
declare const KYBER1024_PUBLIC_KEY_LENGTH = 1568;
|
|
24
|
-
declare const KYBER1024_SECRET_KEY_LENGTH = 3168;
|
|
25
21
|
declare const KYBER_SEED_LENGTH = 64;
|
|
26
22
|
declare const HASH_BIT_LEN = 256;
|
|
27
23
|
declare const MAX_CACHE_SIZE = 600000000;
|
|
28
24
|
declare const MAX_EMAIL_PER_BATCH = 100;
|
|
29
25
|
declare const DB_LABEL = "email";
|
|
30
26
|
declare const DB_VERSION = 1;
|
|
27
|
+
declare const XWING_PUBLIC_KEY_LENGTH = 1216;
|
|
28
|
+
declare const XWING_SECRET_KEY_LENGTH = 32;
|
|
29
|
+
declare const XWING_SEED_BYTE_LENGTH = 32;
|
|
30
|
+
declare const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;
|
|
31
31
|
//#endregion
|
|
32
|
-
export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM,
|
|
32
|
+
export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH, XWING_CIPHERTEXT_BYTE_LENGTH, XWING_PUBLIC_KEY_LENGTH, XWING_SECRET_KEY_LENGTH, XWING_SEED_BYTE_LENGTH };
|
|
33
33
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,aAAA;AAAA,cACA,kBAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cAEA,sBAAA;AAAA,cACA,UAAA;AAAA,cACA,gBAAA;AAAA,cAEA,aAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,aAAA;AAAA,cACA,kBAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cAEA,sBAAA;AAAA,cACA,UAAA;AAAA,cACA,gBAAA;AAAA,cAEA,aAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cACA,iBAAA;AAAA,cAEA,YAAA;AAAA,cAEA,cAAA;AAAA,cACA,mBAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA;AAAA,cAEA,uBAAA;AAAA,cACA,uBAAA;AAAA,cACA,sBAAA;AAAA,cACA,4BAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -18,18 +18,18 @@ const ARGON2ID_ITERATIONS = 4;
|
|
|
18
18
|
const ARGON2ID_MEMORY_SIZE = 65536;
|
|
19
19
|
const ARGON2ID_SALT_BYTE_LENGTH = 16;
|
|
20
20
|
const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;
|
|
21
|
-
const KYBER512_PUBLIC_KEY_LENGTH = 800;
|
|
22
|
-
const KYBER512_SECRET_KEY_LENGTH = 1632;
|
|
23
21
|
const KYBER768_PUBLIC_KEY_LENGTH = 1184;
|
|
24
22
|
const KYBER768_SECRET_KEY_LENGTH = 2400;
|
|
25
|
-
const KYBER1024_PUBLIC_KEY_LENGTH = 1568;
|
|
26
|
-
const KYBER1024_SECRET_KEY_LENGTH = 3168;
|
|
27
23
|
const KYBER_SEED_LENGTH = 64;
|
|
28
24
|
const HASH_BIT_LEN = 256;
|
|
29
25
|
const MAX_CACHE_SIZE = 6e8;
|
|
30
26
|
const MAX_EMAIL_PER_BATCH = 100;
|
|
31
27
|
const DB_LABEL = "email";
|
|
32
28
|
const DB_VERSION = 1;
|
|
29
|
+
const XWING_PUBLIC_KEY_LENGTH = 1216;
|
|
30
|
+
const XWING_SECRET_KEY_LENGTH = 32;
|
|
31
|
+
const XWING_SEED_BYTE_LENGTH = 32;
|
|
32
|
+
const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;
|
|
33
33
|
|
|
34
34
|
//#endregion
|
|
35
35
|
exports.AES_ALGORITHM = AES_ALGORITHM;
|
|
@@ -52,13 +52,13 @@ exports.HASH_BIT_LEN = HASH_BIT_LEN;
|
|
|
52
52
|
exports.IV_LEN_BYTES = IV_LEN_BYTES;
|
|
53
53
|
exports.KEY_FORMAT = KEY_FORMAT;
|
|
54
54
|
exports.KEY_WRAPPING_ALGORITHM = KEY_WRAPPING_ALGORITHM;
|
|
55
|
-
exports.KYBER1024_PUBLIC_KEY_LENGTH = KYBER1024_PUBLIC_KEY_LENGTH;
|
|
56
|
-
exports.KYBER1024_SECRET_KEY_LENGTH = KYBER1024_SECRET_KEY_LENGTH;
|
|
57
|
-
exports.KYBER512_PUBLIC_KEY_LENGTH = KYBER512_PUBLIC_KEY_LENGTH;
|
|
58
|
-
exports.KYBER512_SECRET_KEY_LENGTH = KYBER512_SECRET_KEY_LENGTH;
|
|
59
55
|
exports.KYBER768_PUBLIC_KEY_LENGTH = KYBER768_PUBLIC_KEY_LENGTH;
|
|
60
56
|
exports.KYBER768_SECRET_KEY_LENGTH = KYBER768_SECRET_KEY_LENGTH;
|
|
61
57
|
exports.KYBER_SEED_LENGTH = KYBER_SEED_LENGTH;
|
|
62
58
|
exports.MAX_CACHE_SIZE = MAX_CACHE_SIZE;
|
|
63
59
|
exports.MAX_EMAIL_PER_BATCH = MAX_EMAIL_PER_BATCH;
|
|
60
|
+
exports.XWING_CIPHERTEXT_BYTE_LENGTH = XWING_CIPHERTEXT_BYTE_LENGTH;
|
|
61
|
+
exports.XWING_PUBLIC_KEY_LENGTH = XWING_PUBLIC_KEY_LENGTH;
|
|
62
|
+
exports.XWING_SECRET_KEY_LENGTH = XWING_SECRET_KEY_LENGTH;
|
|
63
|
+
exports.XWING_SEED_BYTE_LENGTH = XWING_SEED_BYTE_LENGTH;
|
|
64
64
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_BYTE_LEN = 16;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_BYTE_LEN = 16;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n\nexport const XWING_PUBLIC_KEY_LENGTH = 1216;\nexport const XWING_SECRET_KEY_LENGTH = 32;\nexport const XWING_SEED_BYTE_LENGTH = 32;\nexport const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;\n"],"mappings":";;;AAAA,MAAa,gBAAgB;AAC7B,MAAa,qBAAqB;AAClC,MAAa,eAAe;AAC5B,MAAa,eAAe;AAE5B,MAAa,yBAAyB;AACtC,MAAa,aAAa;AAC1B,MAAa,mBAAmB;AAEhC,MAAa,gBAAgB;AAE7B,MAAa,uBAAuB;AACpC,MAAa,mBAAmB;AAChC,MAAa,gBAAgB;AAC7B,MAAa,iBAAiB;AAG9B,MAAa,uBAAuB;AACpC,MAAa,sBAAsB;AACnC,MAAa,uBAAuB;AACpC,MAAa,4BAA4B;AACzC,MAAa,8BAA8B;AAE3C,MAAa,6BAA6B;AAC1C,MAAa,6BAA6B;AAC1C,MAAa,oBAAoB;AAEjC,MAAa,eAAe;AAE5B,MAAa,iBAAiB;AAC9B,MAAa,sBAAsB;AACnC,MAAa,WAAW;AACxB,MAAa,aAAa;AAE1B,MAAa,0BAA0B;AACvC,MAAa,0BAA0B;AACvC,MAAa,yBAAyB;AACtC,MAAa,+BAA+B"}
|
package/dist/constants.mjs
CHANGED
|
@@ -16,19 +16,19 @@ const ARGON2ID_ITERATIONS = 4;
|
|
|
16
16
|
const ARGON2ID_MEMORY_SIZE = 65536;
|
|
17
17
|
const ARGON2ID_SALT_BYTE_LENGTH = 16;
|
|
18
18
|
const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;
|
|
19
|
-
const KYBER512_PUBLIC_KEY_LENGTH = 800;
|
|
20
|
-
const KYBER512_SECRET_KEY_LENGTH = 1632;
|
|
21
19
|
const KYBER768_PUBLIC_KEY_LENGTH = 1184;
|
|
22
20
|
const KYBER768_SECRET_KEY_LENGTH = 2400;
|
|
23
|
-
const KYBER1024_PUBLIC_KEY_LENGTH = 1568;
|
|
24
|
-
const KYBER1024_SECRET_KEY_LENGTH = 3168;
|
|
25
21
|
const KYBER_SEED_LENGTH = 64;
|
|
26
22
|
const HASH_BIT_LEN = 256;
|
|
27
23
|
const MAX_CACHE_SIZE = 6e8;
|
|
28
24
|
const MAX_EMAIL_PER_BATCH = 100;
|
|
29
25
|
const DB_LABEL = "email";
|
|
30
26
|
const DB_VERSION = 1;
|
|
27
|
+
const XWING_PUBLIC_KEY_LENGTH = 1216;
|
|
28
|
+
const XWING_SECRET_KEY_LENGTH = 32;
|
|
29
|
+
const XWING_SEED_BYTE_LENGTH = 32;
|
|
30
|
+
const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;
|
|
31
31
|
|
|
32
32
|
//#endregion
|
|
33
|
-
export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM,
|
|
33
|
+
export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH, XWING_CIPHERTEXT_BYTE_LENGTH, XWING_PUBLIC_KEY_LENGTH, XWING_SECRET_KEY_LENGTH, XWING_SEED_BYTE_LENGTH };
|
|
34
34
|
//# sourceMappingURL=constants.mjs.map
|
package/dist/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_BYTE_LEN = 16;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const
|
|
1
|
+
{"version":3,"file":"constants.mjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_BYTE_LEN = 16;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n\nexport const XWING_PUBLIC_KEY_LENGTH = 1216;\nexport const XWING_SECRET_KEY_LENGTH = 32;\nexport const XWING_SEED_BYTE_LENGTH = 32;\nexport const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;\n"],"mappings":";AAAA,MAAa,gBAAgB;AAC7B,MAAa,qBAAqB;AAClC,MAAa,eAAe;AAC5B,MAAa,eAAe;AAE5B,MAAa,yBAAyB;AACtC,MAAa,aAAa;AAC1B,MAAa,mBAAmB;AAEhC,MAAa,gBAAgB;AAE7B,MAAa,uBAAuB;AACpC,MAAa,mBAAmB;AAChC,MAAa,gBAAgB;AAC7B,MAAa,iBAAiB;AAG9B,MAAa,uBAAuB;AACpC,MAAa,sBAAsB;AACnC,MAAa,uBAAuB;AACpC,MAAa,4BAA4B;AACzC,MAAa,8BAA8B;AAE3C,MAAa,6BAA6B;AAC1C,MAAa,6BAA6B;AAC1C,MAAa,oBAAoB;AAEjC,MAAa,eAAe;AAE5B,MAAa,iBAAiB;AAC9B,MAAa,sBAAsB;AACnC,MAAa,WAAW;AACxB,MAAa,aAAa;AAE1B,MAAa,0BAA0B;AACvC,MAAa,0BAA0B;AACvC,MAAa,yBAAyB;AACtC,MAAa,+BAA+B"}
|
package/dist/derive-key.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_deriveKeysFromPassword = require('./deriveKeysFromPassword-
|
|
2
|
+
const require_deriveKeysFromPassword = require('./deriveKeysFromPassword-BYaiSGKL.js');
|
|
3
3
|
|
|
4
4
|
exports.deriveSymmetricCryptoKeyFromContext = require_deriveKeysFromPassword.deriveSymmetricCryptoKeyFromContext;
|
|
5
5
|
exports.deriveSymmetricCryptoKeyFromTwoKeys = require_deriveKeysFromPassword.deriveSymmetricCryptoKeyFromTwoKeys;
|
package/dist/derive-key.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as verifyKeyFromPasswordHex, c as deriveSymmetricKeyFromContext, i as getKeyFromPasswordHex, l as deriveSymmetricKeyFromTwoKeys, n as getKeyFromPasswordAndSalt, o as deriveSymmetricCryptoKeyFromContext, r as getKeyFromPasswordAndSaltHex, s as deriveSymmetricCryptoKeyFromTwoKeys, t as getKeyFromPassword, u as deriveSymmetricKeyFromTwoKeysAndContext } from "./deriveKeysFromPassword-
|
|
1
|
+
import { a as verifyKeyFromPasswordHex, c as deriveSymmetricKeyFromContext, i as getKeyFromPasswordHex, l as deriveSymmetricKeyFromTwoKeys, n as getKeyFromPasswordAndSalt, o as deriveSymmetricCryptoKeyFromContext, r as getKeyFromPasswordAndSaltHex, s as deriveSymmetricCryptoKeyFromTwoKeys, t as getKeyFromPassword, u as deriveSymmetricKeyFromTwoKeysAndContext } from "./deriveKeysFromPassword-XIwzErlL.mjs";
|
|
2
2
|
|
|
3
3
|
export { deriveSymmetricCryptoKeyFromContext, deriveSymmetricCryptoKeyFromTwoKeys, deriveSymmetricKeyFromContext, deriveSymmetricKeyFromTwoKeys, deriveSymmetricKeyFromTwoKeysAndContext, getKeyFromPassword, getKeyFromPasswordAndSalt, getKeyFromPasswordAndSaltHex, getKeyFromPasswordHex, verifyKeyFromPasswordHex };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
const require_chunk = require('./chunk-EbLFQX5m.js');
|
|
2
2
|
const require_constants = require('./constants.js');
|
|
3
3
|
const require_genID = require('./genID-YJSl3YhL.js');
|
|
4
|
-
const require_aes = require('./aes-
|
|
4
|
+
const require_aes = require('./aes-DQo1MyCz.js');
|
|
5
5
|
let _noble_hashes_blake3_js = require("@noble/hashes/blake3.js");
|
|
6
|
+
let _noble_post_quantum_utils_js = require("@noble/post-quantum/utils.js");
|
|
6
7
|
|
|
7
8
|
//#region src/derive-key/deriveKeysFromKey.ts
|
|
8
9
|
/**
|
|
@@ -2340,13 +2341,7 @@ async function argon2(password, salt, parallelism = require_constants.ARGON2ID_P
|
|
|
2340
2341
|
* @returns The salt
|
|
2341
2342
|
*/
|
|
2342
2343
|
function sampleSalt() {
|
|
2343
|
-
|
|
2344
|
-
const salt = new Uint8Array(require_constants.ARGON2ID_SALT_BYTE_LENGTH);
|
|
2345
|
-
crypto.getRandomValues(salt);
|
|
2346
|
-
return salt;
|
|
2347
|
-
} catch (error) {
|
|
2348
|
-
throw new Error("Failed to sample salt", { cause: error });
|
|
2349
|
-
}
|
|
2344
|
+
return (0, _noble_post_quantum_utils_js.randomBytes)(require_constants.ARGON2ID_SALT_BYTE_LENGTH);
|
|
2350
2345
|
}
|
|
2351
2346
|
|
|
2352
2347
|
//#endregion
|
|
@@ -2489,4 +2484,4 @@ Object.defineProperty(exports, 'verifyKeyFromPasswordHex', {
|
|
|
2489
2484
|
return verifyKeyFromPasswordHex;
|
|
2490
2485
|
}
|
|
2491
2486
|
});
|
|
2492
|
-
//# sourceMappingURL=deriveKeysFromPassword-
|
|
2487
|
+
//# sourceMappingURL=deriveKeysFromPassword-BYaiSGKL.js.map
|