@vollcrypt/files-node 0.1.1 → 0.9.1
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/CHANGELOG.md +49 -0
- package/LICENSE +16 -0
- package/LICENSE-COMMERCIAL.md +71 -0
- package/LICENSE-GPL +674 -0
- package/README.md +891 -0
- package/index.d.ts +66 -5
- package/index.js +12 -1
- package/package.json +11 -6
- package/vollcrypt-files-node.win32-x64-msvc.node +0 -0
package/index.d.ts
CHANGED
|
@@ -40,6 +40,9 @@ export interface WrapEntry {
|
|
|
40
40
|
ciphertextMlKem?: Buffer
|
|
41
41
|
groupId?: Buffer
|
|
42
42
|
wrappedKey: Buffer
|
|
43
|
+
t?: number
|
|
44
|
+
n?: number
|
|
45
|
+
shareSetId?: Buffer
|
|
43
46
|
}
|
|
44
47
|
export declare function wrapDekWithPassword(dek: Uint8Array, password: string, kdf: KdfChoice): WrapEntry
|
|
45
48
|
export declare function unwrapDekWithPassword(wrap: WrapEntry, password: string): Buffer
|
|
@@ -57,6 +60,21 @@ export declare function wrapKeyToRecipient(key: Uint8Array, recipientId: Uint8Ar
|
|
|
57
60
|
export declare function unwrapKeyWithRecipientKey(wrap: WrapEntry, recipientSk: KeySubpair): Buffer
|
|
58
61
|
export declare function wrapDekForGroup(dek: Uint8Array, groupId: Uint8Array, gkVersion: number, gk: Uint8Array): WrapEntry
|
|
59
62
|
export declare function unwrapDekWithGroupKey(wrap: WrapEntry, gk: Uint8Array): Buffer
|
|
63
|
+
export interface WrapThresholdResult {
|
|
64
|
+
wrap: WrapEntry
|
|
65
|
+
shares: Array<string>
|
|
66
|
+
}
|
|
67
|
+
export interface ShareJson {
|
|
68
|
+
shareSetId: Buffer
|
|
69
|
+
t: number
|
|
70
|
+
n: number
|
|
71
|
+
x: number
|
|
72
|
+
y: Buffer
|
|
73
|
+
}
|
|
74
|
+
export declare function wrapDekWithThreshold(dek: Buffer, fileId: Buffer, t: number, n: number, cipherSuiteId: number): WrapThresholdResult
|
|
75
|
+
export declare function unwrapDekWithThresholdShares(wrap: WrapEntry, fileId: Buffer, shares: Array<string>, cipherSuiteId: number): Buffer
|
|
76
|
+
export declare function encodeShare(share: ShareJson): string
|
|
77
|
+
export declare function decodeShare(s: string): ShareJson
|
|
60
78
|
export interface Ed25519KeypairObj {
|
|
61
79
|
publicKey: Buffer
|
|
62
80
|
secretKey: Buffer
|
|
@@ -64,6 +82,13 @@ export interface Ed25519KeypairObj {
|
|
|
64
82
|
export declare function ed25519KeypairGenerate(): Ed25519KeypairObj
|
|
65
83
|
export declare function ed25519Sign(sk: Uint8Array, message: Uint8Array): Buffer
|
|
66
84
|
export declare function ed25519Verify(pk: Uint8Array, message: Uint8Array, signature: Uint8Array): boolean
|
|
85
|
+
export interface HybridKeypairObj {
|
|
86
|
+
publicKey: Buffer
|
|
87
|
+
secretKey: Buffer
|
|
88
|
+
}
|
|
89
|
+
export declare function hybridKeypairGenerate(): HybridKeypairObj
|
|
90
|
+
export declare function hybridSign(sk: Uint8Array, pk: Uint8Array, domain: string, context: Uint8Array, payload: Uint8Array): Buffer
|
|
91
|
+
export declare function hybridVerify(pk: Uint8Array, domain: string, context: Uint8Array, payload: Uint8Array, signature: Uint8Array): boolean
|
|
67
92
|
export interface MemberPublicKeyObj {
|
|
68
93
|
recipient: KeySubpair
|
|
69
94
|
signingPk: Buffer
|
|
@@ -78,6 +103,8 @@ export interface SignedMetadata {
|
|
|
78
103
|
iv?: Buffer
|
|
79
104
|
sealedPayload?: Buffer
|
|
80
105
|
sealedTag?: Buffer
|
|
106
|
+
sealedMode?: number
|
|
107
|
+
reason?: string
|
|
81
108
|
}
|
|
82
109
|
export interface HeaderObj {
|
|
83
110
|
version: number
|
|
@@ -87,6 +114,7 @@ export interface HeaderObj {
|
|
|
87
114
|
chunkSize: number
|
|
88
115
|
plaintextSize: number
|
|
89
116
|
merkleRoot: Buffer
|
|
117
|
+
hashAlgorithm: number
|
|
90
118
|
wraps: Array<WrapEntry>
|
|
91
119
|
signedMetadata?: SignedMetadata
|
|
92
120
|
signature?: Buffer
|
|
@@ -104,7 +132,7 @@ export declare function cryptoShredHeader(headerBytes: Uint8Array): Buffer
|
|
|
104
132
|
export declare function signHeaderPlain(header: HeaderObj, signerPk: Uint8Array, signerSk: Uint8Array, keyLogId: Uint8Array, timestamp: number): HeaderObj
|
|
105
133
|
export declare function signHeaderSealed(header: HeaderObj, signerPk: Uint8Array, signerSk: Uint8Array, keyLogId: Uint8Array, timestamp: number, sealedGroupId: Uint8Array, sealedGkVersion: number, sealedGk: Uint8Array): HeaderObj
|
|
106
134
|
export declare function verifyHeaderSignaturePlain(header: HeaderObj): Buffer
|
|
107
|
-
export declare function verifyHeaderSignatureSealed(header: HeaderObj, sealedGk: Uint8Array): Buffer
|
|
135
|
+
export declare function verifyHeaderSignatureSealed(header: HeaderObj, sealedGk: Uint8Array, keyLog: KeyLog): Buffer
|
|
108
136
|
export interface KeyLogEntry {
|
|
109
137
|
kind: string
|
|
110
138
|
userId?: Buffer
|
|
@@ -125,16 +153,49 @@ export interface SenderInfo {
|
|
|
125
153
|
export declare function resolveSender(header: HeaderObj, keyLog: KeyLog, sealedGk?: Uint8Array | undefined | null): SenderInfo
|
|
126
154
|
export interface PipelinedSignInfoObj {
|
|
127
155
|
kind: string
|
|
128
|
-
|
|
129
|
-
|
|
156
|
+
signerPk: Buffer
|
|
157
|
+
signerSk: Buffer
|
|
130
158
|
keyLogId: Buffer
|
|
131
159
|
timestamp: number
|
|
132
160
|
sealedGroupId?: Buffer
|
|
133
161
|
sealedGkVersion?: number
|
|
134
162
|
sealedGk?: Buffer
|
|
135
163
|
}
|
|
136
|
-
export
|
|
137
|
-
|
|
164
|
+
export interface IoWriteModeObj {
|
|
165
|
+
mode: string
|
|
166
|
+
batchSize?: number
|
|
167
|
+
}
|
|
168
|
+
export interface NapiSealOptions {
|
|
169
|
+
mode: string
|
|
170
|
+
reason?: string
|
|
171
|
+
signInfo?: PipelinedSignInfoObj
|
|
172
|
+
}
|
|
173
|
+
export interface NapiShieldPolicy {
|
|
174
|
+
releaseMode: string
|
|
175
|
+
signature?: string
|
|
176
|
+
rollbackPin?: number
|
|
177
|
+
founderAnchor?: boolean
|
|
178
|
+
onTamper?: string
|
|
179
|
+
verifySealedMarker?: boolean
|
|
180
|
+
}
|
|
181
|
+
export interface SealedInspectionObj {
|
|
182
|
+
version: number
|
|
183
|
+
fileId: Buffer
|
|
184
|
+
chunkSize: number
|
|
185
|
+
plaintextSize: number
|
|
186
|
+
merkleRoot: Buffer
|
|
187
|
+
hashAlgorithm: number
|
|
188
|
+
sealedMode?: number
|
|
189
|
+
reason?: string
|
|
190
|
+
timestamp?: number
|
|
191
|
+
ciphertextPresent: boolean
|
|
192
|
+
}
|
|
193
|
+
export declare function sealContainer(path: string, options: NapiSealOptions): Promise<unknown>
|
|
194
|
+
export declare function isSealed(header: HeaderObj): boolean
|
|
195
|
+
export declare function inspectSealedContainer(path: string): Promise<unknown>
|
|
196
|
+
export declare function verifyContainer(path: string, policy: NapiShieldPolicy): string
|
|
197
|
+
export declare function encryptFilePipelinedAsync(sourcePath: string, destPath: string, dek: Uint8Array, fileId: Uint8Array, chunkSize: number, wraps: Array<WrapEntry>, mode: number, numWorkers: number, signInfo?: PipelinedSignInfoObj | undefined | null, writeMode?: IoWriteModeObj | undefined | null): Promise<unknown>
|
|
198
|
+
export declare function decryptFilePipelinedAsync(sourcePath: string, destPath: string, dek: Uint8Array, numWorkers: number, shield?: NapiShieldPolicy | undefined | null): Promise<unknown>
|
|
138
199
|
export declare class GroupManifest {
|
|
139
200
|
static genesis(groupId: Uint8Array, initialGk: Uint8Array, founderMemberId: Uint8Array, founderRecipientPk: KeySubpair, founderEd25519Pk: Uint8Array, founderEd25519Sk: Uint8Array, timestamp: number): GroupManifest
|
|
140
201
|
static parse(bytes: Uint8Array): GroupManifest
|
package/index.js
CHANGED
|
@@ -310,7 +310,7 @@ if (!nativeBinding) {
|
|
|
310
310
|
throw new Error(`Failed to load native binding`)
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
const { generateDek, generateFileId, generateSalt, generateGk, encryptChunk, decryptChunk, chunkLeafHash, merkleRoot, merkleProof, verifyMerkleProof, wrapDekWithPassword, unwrapDekWithPassword, unwrapDekWithPasswordAsync, generateRecipientKeypair, wrapKeyToRecipient, unwrapKeyWithRecipientKey, wrapDekForGroup, unwrapDekWithGroupKey, ed25519KeypairGenerate, ed25519Sign, ed25519Verify, GroupManifest, HeaderClass, rewrapDekInHeader, cryptoShredHeader, signHeaderPlain, signHeaderSealed, verifyHeaderSignaturePlain, verifyHeaderSignatureSealed, KeyLog, resolveSender, encryptFilePipelinedAsync, decryptFilePipelinedAsync } = nativeBinding
|
|
313
|
+
const { generateDek, generateFileId, generateSalt, generateGk, encryptChunk, decryptChunk, chunkLeafHash, merkleRoot, merkleProof, verifyMerkleProof, wrapDekWithPassword, unwrapDekWithPassword, unwrapDekWithPasswordAsync, generateRecipientKeypair, wrapKeyToRecipient, unwrapKeyWithRecipientKey, wrapDekForGroup, unwrapDekWithGroupKey, wrapDekWithThreshold, unwrapDekWithThresholdShares, encodeShare, decodeShare, ed25519KeypairGenerate, ed25519Sign, ed25519Verify, hybridKeypairGenerate, hybridSign, hybridVerify, GroupManifest, HeaderClass, rewrapDekInHeader, cryptoShredHeader, signHeaderPlain, signHeaderSealed, verifyHeaderSignaturePlain, verifyHeaderSignatureSealed, KeyLog, resolveSender, sealContainer, isSealed, inspectSealedContainer, verifyContainer, encryptFilePipelinedAsync, decryptFilePipelinedAsync } = nativeBinding
|
|
314
314
|
|
|
315
315
|
module.exports.generateDek = generateDek
|
|
316
316
|
module.exports.generateFileId = generateFileId
|
|
@@ -330,9 +330,16 @@ module.exports.wrapKeyToRecipient = wrapKeyToRecipient
|
|
|
330
330
|
module.exports.unwrapKeyWithRecipientKey = unwrapKeyWithRecipientKey
|
|
331
331
|
module.exports.wrapDekForGroup = wrapDekForGroup
|
|
332
332
|
module.exports.unwrapDekWithGroupKey = unwrapDekWithGroupKey
|
|
333
|
+
module.exports.wrapDekWithThreshold = wrapDekWithThreshold
|
|
334
|
+
module.exports.unwrapDekWithThresholdShares = unwrapDekWithThresholdShares
|
|
335
|
+
module.exports.encodeShare = encodeShare
|
|
336
|
+
module.exports.decodeShare = decodeShare
|
|
333
337
|
module.exports.ed25519KeypairGenerate = ed25519KeypairGenerate
|
|
334
338
|
module.exports.ed25519Sign = ed25519Sign
|
|
335
339
|
module.exports.ed25519Verify = ed25519Verify
|
|
340
|
+
module.exports.hybridKeypairGenerate = hybridKeypairGenerate
|
|
341
|
+
module.exports.hybridSign = hybridSign
|
|
342
|
+
module.exports.hybridVerify = hybridVerify
|
|
336
343
|
module.exports.GroupManifest = GroupManifest
|
|
337
344
|
module.exports.HeaderClass = HeaderClass
|
|
338
345
|
module.exports.rewrapDekInHeader = rewrapDekInHeader
|
|
@@ -343,5 +350,9 @@ module.exports.verifyHeaderSignaturePlain = verifyHeaderSignaturePlain
|
|
|
343
350
|
module.exports.verifyHeaderSignatureSealed = verifyHeaderSignatureSealed
|
|
344
351
|
module.exports.KeyLog = KeyLog
|
|
345
352
|
module.exports.resolveSender = resolveSender
|
|
353
|
+
module.exports.sealContainer = sealContainer
|
|
354
|
+
module.exports.isSealed = isSealed
|
|
355
|
+
module.exports.inspectSealedContainer = inspectSealedContainer
|
|
356
|
+
module.exports.verifyContainer = verifyContainer
|
|
346
357
|
module.exports.encryptFilePipelinedAsync = encryptFilePipelinedAsync
|
|
347
358
|
module.exports.decryptFilePipelinedAsync = decryptFilePipelinedAsync
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vollcrypt/files-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Cross-platform, quantum-resistant file encryption engine for Node.js - native binding",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -38,7 +38,12 @@
|
|
|
38
38
|
"files": [
|
|
39
39
|
"index.d.ts",
|
|
40
40
|
"index.js",
|
|
41
|
-
"vollcrypt-files-node.*.node"
|
|
41
|
+
"vollcrypt-files-node.*.node",
|
|
42
|
+
"README.md",
|
|
43
|
+
"LICENSE",
|
|
44
|
+
"LICENSE-COMMERCIAL.md",
|
|
45
|
+
"LICENSE-GPL",
|
|
46
|
+
"CHANGELOG.md"
|
|
42
47
|
],
|
|
43
48
|
"keywords": [
|
|
44
49
|
"vollcrypt",
|
|
@@ -57,9 +62,9 @@
|
|
|
57
62
|
"author": "Berat Vural <berat.vural.tr@gmail.com>",
|
|
58
63
|
"license": "GPL-3.0-only OR LicenseRef-Commercial",
|
|
59
64
|
"devDependencies": {
|
|
60
|
-
"@napi-rs/cli": "
|
|
61
|
-
"@types/node": "
|
|
62
|
-
"tsx": "
|
|
63
|
-
"typescript": "
|
|
65
|
+
"@napi-rs/cli": "2.18.4",
|
|
66
|
+
"@types/node": "20.11.0",
|
|
67
|
+
"tsx": "4.7.0",
|
|
68
|
+
"typescript": "5.3.3"
|
|
64
69
|
}
|
|
65
70
|
}
|
|
Binary file
|