@vollcrypt/messages-node 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.
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # @vollcrypt/node
2
+
3
+ **Cross-platform, quantum-resistant cryptography engine for Node.js - Native Binding**
4
+
5
+ [![npm](https://img.shields.io/npm/v/@vollcrypt/node.svg)](https://www.npmjs.com/package/@vollcrypt/node)
6
+ [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/BeratVural/vollcrypt/blob/main/LICENSE)
7
+
8
+ This package provides the high-performance **native Node.js bindings** for the Vollcrypt cryptography engine. It is compiled directly from Rust using NAPI-RS, offering maximum performance and utilizing hardware-accelerated instructions (such as AES-NI) where available.
9
+
10
+ ## Features
11
+
12
+ - **Blazing Fast:** Directly executes native machine code without the overhead of WebAssembly.
13
+ - **Quantum-Resistant:** Implements the NIST FIPS 203 (ML-KEM-768) standard combined with X25519 for hybrid key exchange.
14
+ - **Secure Defaults:** Provides AES-256-GCM, Ed25519, HKDF-SHA256, and post-compromise security ratchets out of the box.
15
+ - **Cross-Platform:** Pre-built native binaries are provided for Windows, macOS (Intel & Apple Silicon), and Linux (glibc & musl).
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install @vollcrypt/node
21
+ ```
22
+
23
+ *Note: When you install this package, npm will automatically download the correct pre-compiled native binary for your operating system and CPU architecture.*
24
+
25
+ ## Quick Start
26
+
27
+ ```javascript
28
+ const vollcrypt = require('@vollcrypt/node');
29
+
30
+ // Generate an Ed25519 Identity Keypair
31
+ const identity = vollcrypt.generateEd25519Keypair();
32
+ console.log("Public Key:", Buffer.from(identity[1]).toString('hex'));
33
+
34
+ // Sign and Verify
35
+ const message = Buffer.from("Hello from Vollcrypt Native!");
36
+ const signature = vollcrypt.signMessage(identity[0], message);
37
+ const isValid = vollcrypt.verifySignature(identity[1], message, signature);
38
+
39
+ console.log("Signature Valid:", isValid); // true
40
+
41
+ // Hybrid Key Exchange (X25519)
42
+ const alice = vollcrypt.generateX25519Keypair();
43
+ const bob = vollcrypt.generateX25519Keypair();
44
+ const sharedSecret = vollcrypt.ecdhSharedSecret(alice[0], bob[1]);
45
+
46
+ console.log("Shared Secret Derived successfully.");
47
+ ```
48
+
49
+ ## Documentation
50
+
51
+ For full API documentation, architecture details, and the WebAssembly equivalent, please refer to the [Vollcrypt Main Repository](https://github.com/BeratVural/vollcrypt).
52
+
53
+ ## License
54
+
55
+ This project is licensed under the **GNU General Public License v3.0**.
56
+
57
+ For commercial use without the GPL copyleft requirement, please contact Berat Vural at [berat.vural.tr@gmail.com](mailto:berat.vural.tr@gmail.com).
package/index.d.ts ADDED
@@ -0,0 +1,70 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /* auto-generated by NAPI-RS */
5
+
6
+ export declare function generateMnemonic(): string
7
+ export declare function mnemonicToSeed(phrase: string, password?: string | undefined | null): Buffer
8
+ export declare function generateEd25519Keypair(): Array<Buffer>
9
+ export declare function generateX25519Keypair(): Array<Buffer>
10
+ export declare function ecdhSharedSecret(ourSecret: Uint8Array, theirPublic: Uint8Array): Buffer
11
+ export declare function signMessage(secretKey: Uint8Array, message: Uint8Array): Buffer
12
+ export declare function verifySignature(publicKey: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean
13
+ export declare function encryptAesGcm(key: Uint8Array, plaintext: Uint8Array, aad?: Uint8Array | undefined | null): Buffer
14
+ export declare function decryptAesGcm(key: Uint8Array, ciphertext: Uint8Array, aad?: Uint8Array | undefined | null): Buffer
15
+ export declare function encryptAesGcmPadded(key: Uint8Array, plaintext: Uint8Array, aad?: Uint8Array | undefined | null): Buffer
16
+ export declare function decryptAesGcmPadded(key: Uint8Array, ciphertext: Uint8Array, aad?: Uint8Array | undefined | null): Buffer
17
+ export declare function encryptAesGcmChunked(key: Uint8Array, plaintext: Uint8Array, aad: Uint8Array | undefined | null, chunkSize: number): Buffer
18
+ export declare function decryptAesGcmChunked(key: Uint8Array, ciphertext: Uint8Array, aad?: Uint8Array | undefined | null): Buffer
19
+ export declare function encryptAesGcmChunkedPadded(key: Uint8Array, plaintext: Uint8Array, aad: Uint8Array | undefined | null, chunkSize: number): Buffer
20
+ export declare function decryptAesGcmChunkedPadded(key: Uint8Array, ciphertext: Uint8Array, aad?: Uint8Array | undefined | null): Buffer
21
+ export declare function derivePbkdf2(password: Uint8Array, salt: Uint8Array, iterations: number, keyLen: number): Buffer
22
+ export declare function deriveHkdf(ikm: Uint8Array, salt: Uint8Array | undefined | null, info: Uint8Array | undefined | null, keyLen: number): Buffer
23
+ export declare function deriveSrk(dek: Uint8Array, chatId: Uint8Array): Buffer
24
+ export declare function deriveWindowKey(srk: Uint8Array, windowIndex: number): Buffer
25
+ export declare function generateVerificationCode(keyA: Uint8Array, keyB: Uint8Array, conversationId: Uint8Array): string
26
+ export declare function computeFingerprint(keyA: Uint8Array, keyB: Uint8Array, conversationId: Uint8Array): Buffer
27
+ export declare function verifyFingerprintsMatch(fingerprintA: Uint8Array, fingerprintB: Uint8Array): boolean
28
+ export declare function wrapKey(kek: Uint8Array, keyToWrap: Uint8Array): Buffer
29
+ export declare function unwrapKey(kek: Uint8Array, wrappedKey: Uint8Array): Buffer
30
+ export declare function padMessage(content: Uint8Array): Buffer
31
+ export declare function packEnvelope(windowIndex: number, aadHash: Uint8Array, encryptedBlob: Uint8Array): Buffer
32
+ export interface UnpackedEnvelope {
33
+ windowIndex: number
34
+ aadHash: Buffer
35
+ encryptedBlob: Buffer
36
+ }
37
+ export declare function unpackEnvelope(envelope: Uint8Array): UnpackedEnvelope
38
+ export declare function mlKemKeygen(): Array<Buffer>
39
+ export interface MlKemEncapsulationResult {
40
+ ciphertext: Buffer
41
+ sharedSecret: Buffer
42
+ }
43
+ export declare function mlKemEncapsulate(encapsulationKey: Uint8Array): MlKemEncapsulationResult
44
+ export declare function mlKemDecapsulate(decapsulationKey: Uint8Array, ciphertext: Uint8Array): Buffer
45
+ export interface HybridKemResult {
46
+ sharedKey: Buffer
47
+ mlKemCiphertext: Buffer
48
+ }
49
+ export declare function hybridKemEncapsulate(x25519OurSecret: Uint8Array, x25519TheirPublic: Uint8Array, mlKemEk: Uint8Array): HybridKemResult
50
+ export declare function hybridKemDecapsulate(x25519OurSecret: Uint8Array, x25519TheirPublic: Uint8Array, mlKemDk: Uint8Array, mlKemCt: Uint8Array): Buffer
51
+ export declare function authenticatedKemEncapsulate(ourX25519Sk: Uint8Array, recipientX25519Pub: Uint8Array, recipientMlkemEk: Uint8Array, senderIdentitySk: Uint8Array): Array<Buffer>
52
+ export declare function authenticatedKemDecapsulate(ourX25519Sk: Uint8Array, senderX25519Pub: Uint8Array, ourMlkemDk: Uint8Array, authenticatedCiphertext: Uint8Array, senderIdentityPk: Uint8Array): Buffer
53
+ export declare function registryEmpty(): string
54
+ export declare function registryAddDevice(registryJson: string, deviceId: string, name: string, addedAt: number, publicKey: string): string
55
+ export declare function registryRevokeDevice(registryJson: string, deviceId: string): string
56
+ export declare function registryGetActiveDevices(registryJson: string): string
57
+ export declare function generateRatchetKeypair(): Array<Buffer>
58
+ export declare function ratchetSrk(currentSrk: Uint8Array, ourRatchetSecret: Uint8Array, theirRatchetPub: Uint8Array, chatId: Uint8Array, ratchetStep: number, isSender: boolean): Buffer
59
+ export declare function shouldRatchet(messageCount: number, windowChanged: boolean, messagesPerRatchet: number, ratchetOnNewWindow: boolean): boolean
60
+ export declare function transcriptNew(sessionId: Uint8Array): Buffer
61
+ export declare function transcriptUpdate(chainState: Uint8Array, messageHash: Uint8Array): Buffer
62
+ export declare function transcriptComputeMessageHash(messageId: Uint8Array, senderId: Uint8Array, timestamp: number, ciphertext: Uint8Array): Buffer
63
+ export declare function transcriptVerifySync(hashA: Uint8Array, hashB: Uint8Array): boolean
64
+ export declare function sealMessage(recipientX25519Pub: Uint8Array, senderId: Uint8Array, content: Uint8Array): Buffer
65
+ export declare function unsealMessage(sealedPacket: Uint8Array, ourX25519Sk: Uint8Array): Array<Buffer>
66
+ export declare function keyLogCreateEntry(userId: Uint8Array, publicKey: Uint8Array, timestamp: number, prevEntryHash: Uint8Array, action: number, signingKey: Uint8Array): string
67
+ export declare function keyLogVerifyChain(entriesJson: string): boolean
68
+ export declare function keyLogCurrentKey(entriesJson: string, userId: Uint8Array): Buffer | null
69
+ export declare function keyLogKeyAtTimestamp(entriesJson: string, userId: Uint8Array, timestamp: number): Buffer | null
70
+ export declare function keyLogComputeEntryHash(entryJson: string): Buffer
package/index.js ADDED
@@ -0,0 +1,366 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /* prettier-ignore */
4
+
5
+ /* auto-generated by NAPI-RS */
6
+
7
+ const { existsSync, readFileSync } = require('fs')
8
+ const { join } = require('path')
9
+
10
+ const { platform, arch } = process
11
+
12
+ let nativeBinding = null
13
+ let localFileExisted = false
14
+ let loadError = null
15
+
16
+ function isMusl() {
17
+ // For Node 10
18
+ if (!process.report || typeof process.report.getReport !== 'function') {
19
+ try {
20
+ const lddPath = require('child_process').execSync('which ldd').toString().trim()
21
+ return readFileSync(lddPath, 'utf8').includes('musl')
22
+ } catch (e) {
23
+ return true
24
+ }
25
+ } else {
26
+ const { glibcVersionRuntime } = process.report.getReport().header
27
+ return !glibcVersionRuntime
28
+ }
29
+ }
30
+
31
+ switch (platform) {
32
+ case 'android':
33
+ switch (arch) {
34
+ case 'arm64':
35
+ localFileExisted = existsSync(join(__dirname, 'vollcrypt.android-arm64.node'))
36
+ try {
37
+ if (localFileExisted) {
38
+ nativeBinding = require('./vollcrypt.android-arm64.node')
39
+ } else {
40
+ nativeBinding = require('@vollcrypt/messages-node-android-arm64')
41
+ }
42
+ } catch (e) {
43
+ loadError = e
44
+ }
45
+ break
46
+ case 'arm':
47
+ localFileExisted = existsSync(join(__dirname, 'vollcrypt.android-arm-eabi.node'))
48
+ try {
49
+ if (localFileExisted) {
50
+ nativeBinding = require('./vollcrypt.android-arm-eabi.node')
51
+ } else {
52
+ nativeBinding = require('@vollcrypt/messages-node-android-arm-eabi')
53
+ }
54
+ } catch (e) {
55
+ loadError = e
56
+ }
57
+ break
58
+ default:
59
+ throw new Error(`Unsupported architecture on Android ${arch}`)
60
+ }
61
+ break
62
+ case 'win32':
63
+ switch (arch) {
64
+ case 'x64':
65
+ localFileExisted = existsSync(
66
+ join(__dirname, 'vollcrypt.win32-x64-msvc.node')
67
+ )
68
+ try {
69
+ if (localFileExisted) {
70
+ nativeBinding = require('./vollcrypt.win32-x64-msvc.node')
71
+ } else {
72
+ nativeBinding = require('@vollcrypt/messages-node-win32-x64-msvc')
73
+ }
74
+ } catch (e) {
75
+ loadError = e
76
+ }
77
+ break
78
+ case 'ia32':
79
+ localFileExisted = existsSync(
80
+ join(__dirname, 'vollcrypt.win32-ia32-msvc.node')
81
+ )
82
+ try {
83
+ if (localFileExisted) {
84
+ nativeBinding = require('./vollcrypt.win32-ia32-msvc.node')
85
+ } else {
86
+ nativeBinding = require('@vollcrypt/messages-node-win32-ia32-msvc')
87
+ }
88
+ } catch (e) {
89
+ loadError = e
90
+ }
91
+ break
92
+ case 'arm64':
93
+ localFileExisted = existsSync(
94
+ join(__dirname, 'vollcrypt.win32-arm64-msvc.node')
95
+ )
96
+ try {
97
+ if (localFileExisted) {
98
+ nativeBinding = require('./vollcrypt.win32-arm64-msvc.node')
99
+ } else {
100
+ nativeBinding = require('@vollcrypt/messages-node-win32-arm64-msvc')
101
+ }
102
+ } catch (e) {
103
+ loadError = e
104
+ }
105
+ break
106
+ default:
107
+ throw new Error(`Unsupported architecture on Windows: ${arch}`)
108
+ }
109
+ break
110
+ case 'darwin':
111
+ localFileExisted = existsSync(join(__dirname, 'vollcrypt.darwin-universal.node'))
112
+ try {
113
+ if (localFileExisted) {
114
+ nativeBinding = require('./vollcrypt.darwin-universal.node')
115
+ } else {
116
+ nativeBinding = require('@vollcrypt/messages-node-darwin-universal')
117
+ }
118
+ break
119
+ } catch {}
120
+ switch (arch) {
121
+ case 'x64':
122
+ localFileExisted = existsSync(join(__dirname, 'vollcrypt.darwin-x64.node'))
123
+ try {
124
+ if (localFileExisted) {
125
+ nativeBinding = require('./vollcrypt.darwin-x64.node')
126
+ } else {
127
+ nativeBinding = require('@vollcrypt/messages-node-darwin-x64')
128
+ }
129
+ } catch (e) {
130
+ loadError = e
131
+ }
132
+ break
133
+ case 'arm64':
134
+ localFileExisted = existsSync(
135
+ join(__dirname, 'vollcrypt.darwin-arm64.node')
136
+ )
137
+ try {
138
+ if (localFileExisted) {
139
+ nativeBinding = require('./vollcrypt.darwin-arm64.node')
140
+ } else {
141
+ nativeBinding = require('@vollcrypt/messages-node-darwin-arm64')
142
+ }
143
+ } catch (e) {
144
+ loadError = e
145
+ }
146
+ break
147
+ default:
148
+ throw new Error(`Unsupported architecture on macOS: ${arch}`)
149
+ }
150
+ break
151
+ case 'freebsd':
152
+ if (arch !== 'x64') {
153
+ throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)
154
+ }
155
+ localFileExisted = existsSync(join(__dirname, 'vollcrypt.freebsd-x64.node'))
156
+ try {
157
+ if (localFileExisted) {
158
+ nativeBinding = require('./vollcrypt.freebsd-x64.node')
159
+ } else {
160
+ nativeBinding = require('@vollcrypt/messages-node-freebsd-x64')
161
+ }
162
+ } catch (e) {
163
+ loadError = e
164
+ }
165
+ break
166
+ case 'linux':
167
+ switch (arch) {
168
+ case 'x64':
169
+ if (isMusl()) {
170
+ localFileExisted = existsSync(
171
+ join(__dirname, 'vollcrypt.linux-x64-musl.node')
172
+ )
173
+ try {
174
+ if (localFileExisted) {
175
+ nativeBinding = require('./vollcrypt.linux-x64-musl.node')
176
+ } else {
177
+ nativeBinding = require('@vollcrypt/messages-node-linux-x64-musl')
178
+ }
179
+ } catch (e) {
180
+ loadError = e
181
+ }
182
+ } else {
183
+ localFileExisted = existsSync(
184
+ join(__dirname, 'vollcrypt.linux-x64-gnu.node')
185
+ )
186
+ try {
187
+ if (localFileExisted) {
188
+ nativeBinding = require('./vollcrypt.linux-x64-gnu.node')
189
+ } else {
190
+ nativeBinding = require('@vollcrypt/messages-node-linux-x64-gnu')
191
+ }
192
+ } catch (e) {
193
+ loadError = e
194
+ }
195
+ }
196
+ break
197
+ case 'arm64':
198
+ if (isMusl()) {
199
+ localFileExisted = existsSync(
200
+ join(__dirname, 'vollcrypt.linux-arm64-musl.node')
201
+ )
202
+ try {
203
+ if (localFileExisted) {
204
+ nativeBinding = require('./vollcrypt.linux-arm64-musl.node')
205
+ } else {
206
+ nativeBinding = require('@vollcrypt/messages-node-linux-arm64-musl')
207
+ }
208
+ } catch (e) {
209
+ loadError = e
210
+ }
211
+ } else {
212
+ localFileExisted = existsSync(
213
+ join(__dirname, 'vollcrypt.linux-arm64-gnu.node')
214
+ )
215
+ try {
216
+ if (localFileExisted) {
217
+ nativeBinding = require('./vollcrypt.linux-arm64-gnu.node')
218
+ } else {
219
+ nativeBinding = require('@vollcrypt/messages-node-linux-arm64-gnu')
220
+ }
221
+ } catch (e) {
222
+ loadError = e
223
+ }
224
+ }
225
+ break
226
+ case 'arm':
227
+ if (isMusl()) {
228
+ localFileExisted = existsSync(
229
+ join(__dirname, 'vollcrypt.linux-arm-musleabihf.node')
230
+ )
231
+ try {
232
+ if (localFileExisted) {
233
+ nativeBinding = require('./vollcrypt.linux-arm-musleabihf.node')
234
+ } else {
235
+ nativeBinding = require('@vollcrypt/messages-node-linux-arm-musleabihf')
236
+ }
237
+ } catch (e) {
238
+ loadError = e
239
+ }
240
+ } else {
241
+ localFileExisted = existsSync(
242
+ join(__dirname, 'vollcrypt.linux-arm-gnueabihf.node')
243
+ )
244
+ try {
245
+ if (localFileExisted) {
246
+ nativeBinding = require('./vollcrypt.linux-arm-gnueabihf.node')
247
+ } else {
248
+ nativeBinding = require('@vollcrypt/messages-node-linux-arm-gnueabihf')
249
+ }
250
+ } catch (e) {
251
+ loadError = e
252
+ }
253
+ }
254
+ break
255
+ case 'riscv64':
256
+ if (isMusl()) {
257
+ localFileExisted = existsSync(
258
+ join(__dirname, 'vollcrypt.linux-riscv64-musl.node')
259
+ )
260
+ try {
261
+ if (localFileExisted) {
262
+ nativeBinding = require('./vollcrypt.linux-riscv64-musl.node')
263
+ } else {
264
+ nativeBinding = require('@vollcrypt/messages-node-linux-riscv64-musl')
265
+ }
266
+ } catch (e) {
267
+ loadError = e
268
+ }
269
+ } else {
270
+ localFileExisted = existsSync(
271
+ join(__dirname, 'vollcrypt.linux-riscv64-gnu.node')
272
+ )
273
+ try {
274
+ if (localFileExisted) {
275
+ nativeBinding = require('./vollcrypt.linux-riscv64-gnu.node')
276
+ } else {
277
+ nativeBinding = require('@vollcrypt/messages-node-linux-riscv64-gnu')
278
+ }
279
+ } catch (e) {
280
+ loadError = e
281
+ }
282
+ }
283
+ break
284
+ case 's390x':
285
+ localFileExisted = existsSync(
286
+ join(__dirname, 'vollcrypt.linux-s390x-gnu.node')
287
+ )
288
+ try {
289
+ if (localFileExisted) {
290
+ nativeBinding = require('./vollcrypt.linux-s390x-gnu.node')
291
+ } else {
292
+ nativeBinding = require('@vollcrypt/messages-node-linux-s390x-gnu')
293
+ }
294
+ } catch (e) {
295
+ loadError = e
296
+ }
297
+ break
298
+ default:
299
+ throw new Error(`Unsupported architecture on Linux: ${arch}`)
300
+ }
301
+ break
302
+ default:
303
+ throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)
304
+ }
305
+
306
+ if (!nativeBinding) {
307
+ if (loadError) {
308
+ throw loadError
309
+ }
310
+ throw new Error(`Failed to load native binding`)
311
+ }
312
+
313
+ const { generateMnemonic, mnemonicToSeed, generateEd25519Keypair, generateX25519Keypair, ecdhSharedSecret, signMessage, verifySignature, encryptAesGcm, decryptAesGcm, encryptAesGcmPadded, decryptAesGcmPadded, encryptAesGcmChunked, decryptAesGcmChunked, encryptAesGcmChunkedPadded, decryptAesGcmChunkedPadded, derivePbkdf2, deriveHkdf, deriveSrk, deriveWindowKey, generateVerificationCode, computeFingerprint, verifyFingerprintsMatch, wrapKey, unwrapKey, padMessage, packEnvelope, unpackEnvelope, mlKemKeygen, mlKemEncapsulate, mlKemDecapsulate, hybridKemEncapsulate, hybridKemDecapsulate, authenticatedKemEncapsulate, authenticatedKemDecapsulate, registryEmpty, registryAddDevice, registryRevokeDevice, registryGetActiveDevices, generateRatchetKeypair, ratchetSrk, shouldRatchet, transcriptNew, transcriptUpdate, transcriptComputeMessageHash, transcriptVerifySync, sealMessage, unsealMessage, keyLogCreateEntry, keyLogVerifyChain, keyLogCurrentKey, keyLogKeyAtTimestamp, keyLogComputeEntryHash } = nativeBinding
314
+
315
+ module.exports.generateMnemonic = generateMnemonic
316
+ module.exports.mnemonicToSeed = mnemonicToSeed
317
+ module.exports.generateEd25519Keypair = generateEd25519Keypair
318
+ module.exports.generateX25519Keypair = generateX25519Keypair
319
+ module.exports.ecdhSharedSecret = ecdhSharedSecret
320
+ module.exports.signMessage = signMessage
321
+ module.exports.verifySignature = verifySignature
322
+ module.exports.encryptAesGcm = encryptAesGcm
323
+ module.exports.decryptAesGcm = decryptAesGcm
324
+ module.exports.encryptAesGcmPadded = encryptAesGcmPadded
325
+ module.exports.decryptAesGcmPadded = decryptAesGcmPadded
326
+ module.exports.encryptAesGcmChunked = encryptAesGcmChunked
327
+ module.exports.decryptAesGcmChunked = decryptAesGcmChunked
328
+ module.exports.encryptAesGcmChunkedPadded = encryptAesGcmChunkedPadded
329
+ module.exports.decryptAesGcmChunkedPadded = decryptAesGcmChunkedPadded
330
+ module.exports.derivePbkdf2 = derivePbkdf2
331
+ module.exports.deriveHkdf = deriveHkdf
332
+ module.exports.deriveSrk = deriveSrk
333
+ module.exports.deriveWindowKey = deriveWindowKey
334
+ module.exports.generateVerificationCode = generateVerificationCode
335
+ module.exports.computeFingerprint = computeFingerprint
336
+ module.exports.verifyFingerprintsMatch = verifyFingerprintsMatch
337
+ module.exports.wrapKey = wrapKey
338
+ module.exports.unwrapKey = unwrapKey
339
+ module.exports.padMessage = padMessage
340
+ module.exports.packEnvelope = packEnvelope
341
+ module.exports.unpackEnvelope = unpackEnvelope
342
+ module.exports.mlKemKeygen = mlKemKeygen
343
+ module.exports.mlKemEncapsulate = mlKemEncapsulate
344
+ module.exports.mlKemDecapsulate = mlKemDecapsulate
345
+ module.exports.hybridKemEncapsulate = hybridKemEncapsulate
346
+ module.exports.hybridKemDecapsulate = hybridKemDecapsulate
347
+ module.exports.authenticatedKemEncapsulate = authenticatedKemEncapsulate
348
+ module.exports.authenticatedKemDecapsulate = authenticatedKemDecapsulate
349
+ module.exports.registryEmpty = registryEmpty
350
+ module.exports.registryAddDevice = registryAddDevice
351
+ module.exports.registryRevokeDevice = registryRevokeDevice
352
+ module.exports.registryGetActiveDevices = registryGetActiveDevices
353
+ module.exports.generateRatchetKeypair = generateRatchetKeypair
354
+ module.exports.ratchetSrk = ratchetSrk
355
+ module.exports.shouldRatchet = shouldRatchet
356
+ module.exports.transcriptNew = transcriptNew
357
+ module.exports.transcriptUpdate = transcriptUpdate
358
+ module.exports.transcriptComputeMessageHash = transcriptComputeMessageHash
359
+ module.exports.transcriptVerifySync = transcriptVerifySync
360
+ module.exports.sealMessage = sealMessage
361
+ module.exports.unsealMessage = unsealMessage
362
+ module.exports.keyLogCreateEntry = keyLogCreateEntry
363
+ module.exports.keyLogVerifyChain = keyLogVerifyChain
364
+ module.exports.keyLogCurrentKey = keyLogCurrentKey
365
+ module.exports.keyLogKeyAtTimestamp = keyLogKeyAtTimestamp
366
+ module.exports.keyLogComputeEntryHash = keyLogComputeEntryHash
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@vollcrypt/messages-node",
3
+ "version": "0.2.0",
4
+ "description": "Cross-platform, quantum-resistant cryptography engine for Node.js - native binding",
5
+ "main": "index.js",
6
+ "types": "index.d.ts",
7
+ "scripts": {
8
+ "build": "npx @napi-rs/cli build --platform --release"
9
+ },
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "devDependencies": {
14
+ "@napi-rs/cli": "^2.18.4"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/BeratVural/vollcrypt.git",
19
+ "directory": "node"
20
+ },
21
+ "homepage": "https://github.com/BeratVural/vollcrypt#readme",
22
+ "bugs": {
23
+ "url": "https://github.com/BeratVural/vollcrypt/issues"
24
+ },
25
+ "engines": {
26
+ "node": ">=18"
27
+ },
28
+ "files": [
29
+ "index.d.ts",
30
+ "index.js",
31
+ "vollcrypt.*.node"
32
+ ],
33
+ "keywords": [
34
+ "vollcrypt",
35
+ "cryptography",
36
+ "encryption",
37
+ "aes-gcm",
38
+ "ed25519",
39
+ "x25519",
40
+ "ml-kem",
41
+ "post-quantum",
42
+ "pqc",
43
+ "e2ee",
44
+ "napi"
45
+ ],
46
+ "author": "Berat Vural <berat.vural.tr@gmail.com>",
47
+ "license": "GPL-3.0-only",
48
+ "napi": {
49
+ "name": "vollcrypt",
50
+ "triples": {
51
+ "defaults": true,
52
+ "additional": [
53
+ "aarch64-apple-darwin",
54
+ "aarch64-unknown-linux-gnu",
55
+ "aarch64-unknown-linux-musl"
56
+ ]
57
+ }
58
+ }
59
+ }
Binary file