@protontech/drive-sdk 0.9.8 → 0.10.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/dist/crypto/driveCrypto.d.ts +15 -15
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/hmac.d.ts +3 -3
- package/dist/crypto/hmac.js.map +1 -1
- package/dist/crypto/interface.d.ts +45 -25
- package/dist/crypto/interface.js.map +1 -1
- package/dist/crypto/openPGPCrypto.d.ts +37 -37
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/crypto/utils.d.ts +1 -1
- package/dist/interface/index.d.ts +3 -3
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +8 -0
- package/dist/interface/photos.d.ts +18 -1
- package/dist/interface/sharing.d.ts +2 -0
- package/dist/interface/telemetry.d.ts +1 -0
- package/dist/interface/telemetry.js.map +1 -1
- package/dist/interface/thumbnail.d.ts +2 -2
- package/dist/internal/apiService/apiService.js +25 -12
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/apiService.test.js +33 -5
- package/dist/internal/apiService/apiService.test.js.map +1 -1
- package/dist/internal/apiService/driveTypes.d.ts +2942 -3187
- package/dist/internal/apiService/errors.test.js +17 -7
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/devices/manager.d.ts +1 -0
- package/dist/internal/devices/manager.js +11 -0
- package/dist/internal/devices/manager.js.map +1 -1
- package/dist/internal/download/apiService.d.ts +1 -1
- package/dist/internal/download/cryptoService.d.ts +4 -4
- package/dist/internal/download/cryptoService.js.map +1 -1
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.js.map +1 -1
- package/dist/internal/nodes/cryptoService.d.ts +4 -4
- package/dist/internal/nodes/cryptoService.js +5 -3
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +1 -1
- package/dist/internal/nodes/nodesManagement.js +0 -1
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/photos/addToAlbum.d.ts +46 -0
- package/dist/internal/photos/addToAlbum.js +257 -0
- package/dist/internal/photos/addToAlbum.js.map +1 -0
- package/dist/internal/photos/addToAlbum.test.d.ts +1 -0
- package/dist/internal/photos/addToAlbum.test.js +409 -0
- package/dist/internal/photos/addToAlbum.test.js.map +1 -0
- package/dist/internal/photos/albums.d.ts +7 -2
- package/dist/internal/photos/albums.js +24 -1
- package/dist/internal/photos/albums.js.map +1 -1
- package/dist/internal/photos/albums.test.js +26 -1
- package/dist/internal/photos/albums.test.js.map +1 -1
- package/dist/internal/photos/albumsCrypto.d.ts +20 -3
- package/dist/internal/photos/albumsCrypto.js +27 -0
- package/dist/internal/photos/albumsCrypto.js.map +1 -1
- package/dist/internal/photos/apiService.d.ts +20 -0
- package/dist/internal/photos/apiService.js +142 -0
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/apiService.test.d.ts +1 -0
- package/dist/internal/photos/apiService.test.js +199 -0
- package/dist/internal/photos/apiService.test.js.map +1 -0
- package/dist/internal/photos/errors.d.ts +4 -0
- package/dist/internal/photos/errors.js +17 -0
- package/dist/internal/photos/errors.js.map +1 -0
- package/dist/internal/photos/index.d.ts +1 -1
- package/dist/internal/photos/index.js +1 -1
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +36 -1
- package/dist/internal/photos/interface.js +14 -0
- package/dist/internal/photos/interface.js.map +1 -1
- package/dist/internal/photos/nodes.js +32 -2
- package/dist/internal/photos/nodes.js.map +1 -1
- package/dist/internal/photos/nodes.test.js +25 -5
- package/dist/internal/photos/nodes.test.js.map +1 -1
- package/dist/internal/photos/timeline.d.ts +2 -5
- package/dist/internal/photos/timeline.js.map +1 -1
- package/dist/internal/photos/upload.d.ts +2 -2
- package/dist/internal/photos/upload.js.map +1 -1
- package/dist/internal/shares/apiService.js +1 -0
- package/dist/internal/shares/apiService.js.map +1 -1
- package/dist/internal/shares/interface.d.ts +1 -0
- package/dist/internal/sharing/apiService.d.ts +8 -1
- package/dist/internal/sharing/apiService.js +23 -1
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.js +8 -4
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +1 -0
- package/dist/internal/sharing/sharingManagement.js +15 -2
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +30 -5
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/sharingPublic/nodes.d.ts +2 -2
- package/dist/internal/sharingPublic/nodes.js.map +1 -1
- package/dist/internal/upload/apiService.d.ts +5 -5
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/blockVerifier.d.ts +2 -2
- package/dist/internal/upload/blockVerifier.js.map +1 -1
- package/dist/internal/upload/chunkStreamReader.d.ts +2 -2
- package/dist/internal/upload/chunkStreamReader.js.map +1 -1
- package/dist/internal/upload/chunkStreamReader.test.js.map +1 -1
- package/dist/internal/upload/cryptoService.d.ts +7 -7
- package/dist/internal/upload/cryptoService.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +6 -6
- package/dist/internal/upload/manager.d.ts +1 -1
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +1 -1
- package/dist/internal/utils.d.ts +1 -1
- package/dist/protonDriveClient.d.ts +8 -0
- package/dist/protonDriveClient.js +11 -0
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.d.ts +42 -7
- package/dist/protonDrivePhotosClient.js +50 -2
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/protonDrivePublicLinkClient.d.ts +9 -0
- package/dist/protonDrivePublicLinkClient.js +12 -0
- package/dist/protonDrivePublicLinkClient.js.map +1 -1
- package/dist/transformers.js +2 -0
- package/dist/transformers.js.map +1 -1
- package/package.json +4 -4
- package/src/crypto/driveCrypto.ts +15 -15
- package/src/crypto/hmac.ts +4 -4
- package/src/crypto/interface.ts +58 -27
- package/src/crypto/openPGPCrypto.ts +26 -26
- package/src/interface/index.ts +10 -2
- package/src/interface/nodes.ts +1 -0
- package/src/interface/photos.ts +19 -1
- package/src/interface/sharing.ts +2 -0
- package/src/interface/telemetry.ts +1 -0
- package/src/interface/thumbnail.ts +2 -2
- package/src/internal/apiService/apiService.test.ts +38 -6
- package/src/internal/apiService/apiService.ts +33 -12
- package/src/internal/apiService/driveTypes.ts +2942 -3187
- package/src/internal/devices/manager.ts +14 -0
- package/src/internal/download/apiService.ts +1 -1
- package/src/internal/download/cryptoService.ts +4 -4
- package/src/internal/download/fileDownloader.test.ts +4 -4
- package/src/internal/download/fileDownloader.ts +6 -6
- package/src/internal/download/thumbnailDownloader.ts +4 -4
- package/src/internal/nodes/cryptoService.test.ts +2 -2
- package/src/internal/nodes/cryptoService.ts +11 -8
- package/src/internal/nodes/interface.ts +1 -1
- package/src/internal/nodes/nodesManagement.ts +0 -1
- package/src/internal/photos/addToAlbum.test.ts +515 -0
- package/src/internal/photos/addToAlbum.ts +341 -0
- package/src/internal/photos/albums.test.ts +46 -22
- package/src/internal/photos/albums.ts +48 -2
- package/src/internal/photos/albumsCrypto.ts +54 -3
- package/src/internal/photos/apiService.test.ts +233 -0
- package/src/internal/photos/apiService.ts +234 -15
- package/src/internal/photos/errors.ts +11 -0
- package/src/internal/photos/index.ts +2 -2
- package/src/internal/photos/interface.ts +40 -1
- package/src/internal/photos/nodes.test.ts +27 -6
- package/src/internal/photos/nodes.ts +34 -2
- package/src/internal/photos/timeline.ts +2 -5
- package/src/internal/photos/upload.ts +2 -2
- package/src/internal/shares/apiService.ts +1 -0
- package/src/internal/shares/interface.ts +1 -0
- package/src/internal/sharing/apiService.ts +49 -5
- package/src/internal/sharing/cryptoService.ts +10 -4
- package/src/internal/sharing/sharingManagement.test.ts +33 -5
- package/src/internal/sharing/sharingManagement.ts +28 -6
- package/src/internal/sharingPublic/nodes.ts +1 -1
- package/src/internal/upload/apiService.ts +5 -5
- package/src/internal/upload/blockVerifier.ts +3 -3
- package/src/internal/upload/chunkStreamReader.test.ts +7 -7
- package/src/internal/upload/chunkStreamReader.ts +3 -3
- package/src/internal/upload/cryptoService.ts +9 -9
- package/src/internal/upload/interface.ts +6 -6
- package/src/internal/upload/manager.ts +2 -2
- package/src/internal/upload/streamUploader.ts +1 -1
- package/src/protonDriveClient.ts +15 -3
- package/src/protonDrivePhotosClient.ts +78 -22
- package/src/protonDrivePublicLinkClient.ts +13 -0
- package/src/transformers.ts +2 -0
|
@@ -23,6 +23,20 @@ export class DevicesManager {
|
|
|
23
23
|
this.nodesManagementService = nodesManagementService;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
async getDevice(deviceUid: string): Promise<Device> {
|
|
27
|
+
const device = await this.getDeviceMetadata(deviceUid);
|
|
28
|
+
|
|
29
|
+
const [node] = await Array.fromAsync(this.nodesService.iterateNodes([device.rootFolderUid]));
|
|
30
|
+
if (!node || 'missingUid' in node) {
|
|
31
|
+
throw new ValidationError(c('Error').t`Device not found`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
...device,
|
|
36
|
+
name: node.name,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
26
40
|
async *iterateDevices(signal?: AbortSignal): AsyncGenerator<Device> {
|
|
27
41
|
const devices = await this.apiService.getDevices(signal);
|
|
28
42
|
|
|
@@ -91,7 +91,7 @@ export class DownloadAPIService {
|
|
|
91
91
|
token: string,
|
|
92
92
|
onProgress?: (downloadedBytes: number) => void,
|
|
93
93
|
signal?: AbortSignal,
|
|
94
|
-
): Promise<Uint8Array
|
|
94
|
+
): Promise<Uint8Array<ArrayBuffer>> {
|
|
95
95
|
const rawBlockStream = await this.apiService.getBlockStream(baseUrl, token, signal);
|
|
96
96
|
const progressStream = new ObserverStream((value) => {
|
|
97
97
|
onProgress?.(value.length);
|
|
@@ -34,7 +34,7 @@ export class DownloadCryptoService {
|
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
async decryptBlock(encryptedBlock: Uint8Array
|
|
37
|
+
async decryptBlock(encryptedBlock: Uint8Array<ArrayBuffer>, revisionKeys: RevisionKeys): Promise<Uint8Array<ArrayBuffer>> {
|
|
38
38
|
let decryptedBlock;
|
|
39
39
|
try {
|
|
40
40
|
// We do not verify signatures on blocks. We only verify
|
|
@@ -55,7 +55,7 @@ export class DownloadCryptoService {
|
|
|
55
55
|
return decryptedBlock;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
async decryptThumbnail(thumbnail: Uint8Array
|
|
58
|
+
async decryptThumbnail(thumbnail: Uint8Array<ArrayBuffer>, contentKeyPacketSessionKey: SessionKey): Promise<Uint8Array<ArrayBuffer>> {
|
|
59
59
|
let decryptedBlock;
|
|
60
60
|
try {
|
|
61
61
|
const result = await this.driveCrypto.decryptThumbnailBlock(
|
|
@@ -72,7 +72,7 @@ export class DownloadCryptoService {
|
|
|
72
72
|
return decryptedBlock;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
async verifyBlockIntegrity(encryptedBlock: Uint8Array
|
|
75
|
+
async verifyBlockIntegrity(encryptedBlock: Uint8Array<ArrayBuffer>, base64sha256Hash: string): Promise<void> {
|
|
76
76
|
const digest = await crypto.subtle.digest('SHA-256', encryptedBlock);
|
|
77
77
|
const expectedHash = uint8ArrayToBase64String(new Uint8Array(digest));
|
|
78
78
|
|
|
@@ -87,7 +87,7 @@ export class DownloadCryptoService {
|
|
|
87
87
|
async verifyManifest(
|
|
88
88
|
revision: Revision,
|
|
89
89
|
nodeKey: PrivateKey,
|
|
90
|
-
allBlockHashes: Uint8Array[],
|
|
90
|
+
allBlockHashes: Uint8Array<ArrayBuffer>[],
|
|
91
91
|
armoredManifestSignature?: string,
|
|
92
92
|
): Promise<void> {
|
|
93
93
|
const hash = mergeUint8Arrays(allBlockHashes);
|
|
@@ -85,8 +85,8 @@ describe('FileDownloader', () => {
|
|
|
85
85
|
let onFinish: () => void;
|
|
86
86
|
|
|
87
87
|
let downloader: FileDownloader;
|
|
88
|
-
let writer: WritableStreamDefaultWriter<Uint8Array
|
|
89
|
-
let stream: WritableStream<Uint8Array
|
|
88
|
+
let writer: WritableStreamDefaultWriter<Uint8Array<ArrayBuffer>>;
|
|
89
|
+
let stream: WritableStream<Uint8Array<ArrayBuffer>>;
|
|
90
90
|
|
|
91
91
|
const verifySuccess = async (
|
|
92
92
|
fileProgress: number = 6, // 3 blocks of length 1, 2, 3
|
|
@@ -360,8 +360,8 @@ describe('FileDownloader', () => {
|
|
|
360
360
|
let onFinish: () => void;
|
|
361
361
|
|
|
362
362
|
let downloader: FileDownloader;
|
|
363
|
-
let writer: WritableStreamDefaultWriter<Uint8Array
|
|
364
|
-
let stream: WritableStream<Uint8Array
|
|
363
|
+
let writer: WritableStreamDefaultWriter<Uint8Array<ArrayBuffer>>;
|
|
364
|
+
let stream: WritableStream<Uint8Array<ArrayBuffer>>;
|
|
365
365
|
|
|
366
366
|
beforeEach(() => {
|
|
367
367
|
onProgress = jest.fn();
|
|
@@ -30,7 +30,7 @@ export class FileDownloader {
|
|
|
30
30
|
number,
|
|
31
31
|
{
|
|
32
32
|
downloadPromise: Promise<void>;
|
|
33
|
-
decryptedBufferedBlock?: Uint8Array
|
|
33
|
+
decryptedBufferedBlock?: Uint8Array<ArrayBuffer>;
|
|
34
34
|
}
|
|
35
35
|
>();
|
|
36
36
|
|
|
@@ -120,7 +120,7 @@ export class FileDownloader {
|
|
|
120
120
|
claimedBlockSizes: number[],
|
|
121
121
|
position: number,
|
|
122
122
|
cryptoKeys: RevisionKeys,
|
|
123
|
-
): Promise<Uint8Array | Error | undefined> {
|
|
123
|
+
): Promise<Uint8Array<ArrayBuffer> | Error | undefined> {
|
|
124
124
|
const { value, done } = getBlockIndex(claimedBlockSizes, position);
|
|
125
125
|
if (done) {
|
|
126
126
|
return;
|
|
@@ -174,7 +174,7 @@ export class FileDownloader {
|
|
|
174
174
|
|
|
175
175
|
// Collection of all block hashes for manifest verification.
|
|
176
176
|
// This includes both thumbnail and regular blocks.
|
|
177
|
-
const allBlockHashes: Uint8Array[] = [];
|
|
177
|
+
const allBlockHashes: Uint8Array<ArrayBuffer>[] = [];
|
|
178
178
|
let armoredManifestSignature: string | undefined;
|
|
179
179
|
|
|
180
180
|
try {
|
|
@@ -271,12 +271,12 @@ export class FileDownloader {
|
|
|
271
271
|
ignoreIntegrityErrors: boolean,
|
|
272
272
|
cryptoKeys: RevisionKeys,
|
|
273
273
|
onProgress?: (downloadedBytes: number) => void,
|
|
274
|
-
): Promise<Uint8Array
|
|
274
|
+
): Promise<Uint8Array<ArrayBuffer>> {
|
|
275
275
|
const logger = new LoggerWithPrefix(this.logger, `block ${blockMetadata.index}`);
|
|
276
276
|
logger.info(`Download started`);
|
|
277
277
|
|
|
278
278
|
let blockProgress = 0;
|
|
279
|
-
let decryptedBlock: Uint8Array | null = null;
|
|
279
|
+
let decryptedBlock: Uint8Array<ArrayBuffer> | null = null;
|
|
280
280
|
let retries = 0;
|
|
281
281
|
|
|
282
282
|
while (!decryptedBlock) {
|
|
@@ -369,7 +369,7 @@ export class FileDownloader {
|
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
|
|
372
|
-
private async flushCompletedBlocks(write: (chunk: Uint8Array) => void | Promise<void>) {
|
|
372
|
+
private async flushCompletedBlocks(write: (chunk: Uint8Array<ArrayBuffer>) => void | Promise<void>) {
|
|
373
373
|
this.logger.debug(`Flushing completed blocks`);
|
|
374
374
|
while (this.isNextBlockDownloaded) {
|
|
375
375
|
const decryptedBlock = this.ongoingDownloads.get(this.nextBlockIndex)!.decryptedBufferedBlock!;
|
|
@@ -24,7 +24,7 @@ export class ThumbnailDownloader {
|
|
|
24
24
|
private batchThumbnailToNodeUids = new Map<string, string>();
|
|
25
25
|
private ongoingDownloads = new Map<string, Promise<void>>();
|
|
26
26
|
private bufferedThumbnails: (
|
|
27
|
-
| { nodeUid: string; ok: true; thumbnail: Uint8Array }
|
|
27
|
+
| { nodeUid: string; ok: true; thumbnail: Uint8Array<ArrayBuffer> }
|
|
28
28
|
| { nodeUid: string; ok: false; error: string }
|
|
29
29
|
)[] = [];
|
|
30
30
|
|
|
@@ -163,7 +163,7 @@ export class ThumbnailDownloader {
|
|
|
163
163
|
private async *iterateThumbnailDownloads(
|
|
164
164
|
signal?: AbortSignal,
|
|
165
165
|
): AsyncGenerator<
|
|
166
|
-
| { nodeUid: string; ok: true; downloadPromise: Promise<Uint8Array
|
|
166
|
+
| { nodeUid: string; ok: true; downloadPromise: Promise<Uint8Array<ArrayBuffer>> }
|
|
167
167
|
| { nodeUid: string; ok: false; error: string }
|
|
168
168
|
> {
|
|
169
169
|
const missingThumbnailUids = new Set(this.batchThumbnailToNodeUids.keys());
|
|
@@ -212,10 +212,10 @@ export class ThumbnailDownloader {
|
|
|
212
212
|
bareUrl: string,
|
|
213
213
|
token: string,
|
|
214
214
|
signal?: AbortSignal,
|
|
215
|
-
): Promise<Uint8Array
|
|
215
|
+
): Promise<Uint8Array<ArrayBuffer>> {
|
|
216
216
|
const logger = new LoggerWithPrefix(this.logger, `thumbnail ${token}`);
|
|
217
217
|
|
|
218
|
-
let decryptedBlock: Uint8Array | null = null;
|
|
218
|
+
let decryptedBlock: Uint8Array<ArrayBuffer> | null = null;
|
|
219
219
|
let attempt = 0;
|
|
220
220
|
|
|
221
221
|
while (!decryptedBlock) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DriveCrypto, PrivateKey, SessionKey, VERIFICATION_STATUS } from '../../crypto';
|
|
1
|
+
import { DriveCrypto, PrivateKey, PublicKey, SessionKey, VERIFICATION_STATUS } from '../../crypto';
|
|
2
2
|
import { MemberRole, ProtonDriveAccount, ProtonDriveTelemetry, RevisionState } from '../../interface';
|
|
3
3
|
import { getMockTelemetry } from '../../tests/telemetry';
|
|
4
4
|
import {
|
|
@@ -20,7 +20,7 @@ describe('nodesCryptoService', () => {
|
|
|
20
20
|
|
|
21
21
|
let cryptoService: NodesCryptoService;
|
|
22
22
|
|
|
23
|
-
const publicAddressKey = { _idx: 21312 };
|
|
23
|
+
const publicAddressKey = { _idx: 21312 } as PublicKey;
|
|
24
24
|
const ownPrivateAddressKey = { id: 'id', key: 'key' as unknown as PrivateKey };
|
|
25
25
|
|
|
26
26
|
beforeEach(() => {
|
|
@@ -145,7 +145,10 @@ export class NodesCryptoService {
|
|
|
145
145
|
}),
|
|
146
146
|
nameAuthor,
|
|
147
147
|
membership,
|
|
148
|
-
activeRevision:
|
|
148
|
+
activeRevision:
|
|
149
|
+
'file' in node.encryptedCrypto
|
|
150
|
+
? resultError(new Error(errorMessage, { cause: error }))
|
|
151
|
+
: undefined,
|
|
149
152
|
folder: undefined,
|
|
150
153
|
errors: [error],
|
|
151
154
|
},
|
|
@@ -210,7 +213,7 @@ export class NodesCryptoService {
|
|
|
210
213
|
void this.reporter.reportDecryptionError(node, 'nodeExtendedAttributes', error);
|
|
211
214
|
const message = getErrorMessage(error);
|
|
212
215
|
const errorMessage = c('Error').t`Failed to decrypt active revision: ${message}`;
|
|
213
|
-
activeRevision = resultError(new Error(errorMessage));
|
|
216
|
+
activeRevision = resultError(new Error(errorMessage, { cause: error }));
|
|
214
217
|
}
|
|
215
218
|
|
|
216
219
|
try {
|
|
@@ -361,7 +364,7 @@ export class NodesCryptoService {
|
|
|
361
364
|
void this.reporter.reportDecryptionError(node, 'nodeName', error);
|
|
362
365
|
const errorMessage = getErrorMessage(error);
|
|
363
366
|
return {
|
|
364
|
-
name: resultError(new Error(errorMessage)),
|
|
367
|
+
name: resultError(new Error(errorMessage, { cause: error })),
|
|
365
368
|
author: resultError({
|
|
366
369
|
claimedAuthor: getClaimedAuthor(nameSignatureEmail, verificationKeys.length === 0),
|
|
367
370
|
error: errorMessage,
|
|
@@ -433,7 +436,7 @@ export class NodesCryptoService {
|
|
|
433
436
|
nodeKey: PrivateKey,
|
|
434
437
|
addressKeys: PublicKey[],
|
|
435
438
|
): Promise<{
|
|
436
|
-
hashKey: Uint8Array
|
|
439
|
+
hashKey: Uint8Array<ArrayBuffer>;
|
|
437
440
|
author: Author;
|
|
438
441
|
}> {
|
|
439
442
|
if (!('folder' in node.encryptedCrypto)) {
|
|
@@ -583,7 +586,7 @@ export class NodesCryptoService {
|
|
|
583
586
|
}
|
|
584
587
|
|
|
585
588
|
async createFolder(
|
|
586
|
-
parentKeys: { key: PrivateKey; hashKey: Uint8Array },
|
|
589
|
+
parentKeys: { key: PrivateKey; hashKey: Uint8Array<ArrayBuffer> },
|
|
587
590
|
signingKeys: NodeSigningKeys,
|
|
588
591
|
name: string,
|
|
589
592
|
extendedAttributes?: string,
|
|
@@ -648,7 +651,7 @@ export class NodesCryptoService {
|
|
|
648
651
|
}
|
|
649
652
|
|
|
650
653
|
async encryptNewName(
|
|
651
|
-
parentKeys: { key: PrivateKey; hashKey?: Uint8Array },
|
|
654
|
+
parentKeys: { key: PrivateKey; hashKey?: Uint8Array<ArrayBuffer> },
|
|
652
655
|
nodeNameSessionKey: SessionKey,
|
|
653
656
|
signingKeys: NodeSigningKeys,
|
|
654
657
|
newName: string,
|
|
@@ -684,7 +687,7 @@ export class NodesCryptoService {
|
|
|
684
687
|
async encryptNodeWithNewParent(
|
|
685
688
|
nodeName: DecryptedNode['name'],
|
|
686
689
|
keys: { passphrase: string; passphraseSessionKey: SessionKey; nameSessionKey: SessionKey },
|
|
687
|
-
parentKeys: { key: PrivateKey; hashKey: Uint8Array },
|
|
690
|
+
parentKeys: { key: PrivateKey; hashKey: Uint8Array<ArrayBuffer> },
|
|
688
691
|
signingKeys: NodeSigningKeys,
|
|
689
692
|
): Promise<{
|
|
690
693
|
encryptedName: string;
|
|
@@ -732,7 +735,7 @@ export class NodesCryptoService {
|
|
|
732
735
|
};
|
|
733
736
|
}
|
|
734
737
|
|
|
735
|
-
async generateNameHashes(parentHashKey: Uint8Array
|
|
738
|
+
async generateNameHashes(parentHashKey: Uint8Array<ArrayBuffer>, names: string[]): Promise<{ name: string; hash: string }[]> {
|
|
736
739
|
return Promise.all(
|
|
737
740
|
names.map(async (name) => ({
|
|
738
741
|
name,
|
|
@@ -180,7 +180,6 @@ export abstract class NodesManagementBase<
|
|
|
180
180
|
encryptedName: encryptedCrypto.encryptedName,
|
|
181
181
|
nameSignatureEmail: encryptedCrypto.nameSignatureEmail,
|
|
182
182
|
hash: encryptedCrypto.hash,
|
|
183
|
-
// TODO: When moving photos, we need to pass content hash.
|
|
184
183
|
},
|
|
185
184
|
);
|
|
186
185
|
const newNode: TDecryptedNode = {
|