@vollcrypt/files-node 0.1.1 → 0.9.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/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
- signerEd25519Pk: Buffer
129
- signerEd25519Sk: Buffer
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 declare function encryptFilePipelinedAsync(sourcePath: string, destPath: string, dek: Uint8Array, fileId: Uint8Array, chunkSize: number, wraps: Array<WrapEntry>, mode: number, numWorkers: number, signInfo?: PipelinedSignInfoObj | undefined | null): Promise<unknown>
137
- export declare function decryptFilePipelinedAsync(sourcePath: string, destPath: string, dek: Uint8Array, numWorkers: number): Promise<unknown>
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.1.1",
3
+ "version": "0.9.0",
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",