@protontech/drive-sdk 0.0.13 → 0.1.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/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.js +3 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/memoryCache.d.ts +1 -1
- package/dist/cache/memoryCache.js +0 -1
- package/dist/cache/memoryCache.js.map +1 -1
- package/dist/cache/memoryCache.test.js +2 -4
- package/dist/cache/memoryCache.test.js.map +1 -1
- package/dist/cache/nullCache.d.ts +14 -0
- package/dist/cache/nullCache.js +36 -0
- package/dist/cache/nullCache.js.map +1 -0
- package/dist/config.d.ts +16 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/crypto/driveCrypto.d.ts +2 -5
- package/dist/crypto/driveCrypto.js +7 -12
- package/dist/crypto/driveCrypto.js.map +1 -1
- package/dist/crypto/driveCrypto.test.js +14 -14
- package/dist/crypto/openPGPCrypto.js +5 -3
- package/dist/crypto/openPGPCrypto.js.map +1 -1
- package/dist/diagnostic/eventsGenerator.d.ts +14 -0
- package/dist/diagnostic/eventsGenerator.js +49 -0
- package/dist/diagnostic/eventsGenerator.js.map +1 -0
- package/dist/diagnostic/httpClient.d.ts +16 -0
- package/dist/diagnostic/httpClient.js +81 -0
- package/dist/diagnostic/httpClient.js.map +1 -0
- package/dist/diagnostic/index.d.ts +10 -0
- package/dist/diagnostic/index.js +35 -0
- package/dist/diagnostic/index.js.map +1 -0
- package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
- package/dist/diagnostic/integrityVerificationStream.js +56 -0
- package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
- package/dist/diagnostic/interface.d.ts +102 -0
- package/dist/diagnostic/interface.js +3 -0
- package/dist/diagnostic/interface.js.map +1 -0
- package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
- package/dist/diagnostic/sdkDiagnostic.js +222 -0
- package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
- package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
- package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
- package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
- package/dist/diagnostic/telemetry.d.ts +25 -0
- package/dist/diagnostic/telemetry.js +70 -0
- package/dist/diagnostic/telemetry.js.map +1 -0
- package/dist/diagnostic/zipGenerators.d.ts +9 -0
- package/dist/diagnostic/zipGenerators.js +64 -0
- package/dist/diagnostic/zipGenerators.js.map +1 -0
- package/dist/diagnostic/zipGenerators.test.js +144 -0
- package/dist/diagnostic/zipGenerators.test.js.map +1 -0
- package/dist/errors.d.ts +2 -1
- package/dist/errors.js +3 -1
- package/dist/errors.js.map +1 -1
- package/dist/interface/config.d.ts +26 -0
- package/dist/interface/config.js +3 -0
- package/dist/interface/config.js.map +1 -0
- package/dist/interface/download.d.ts +2 -2
- package/dist/interface/events.d.ts +58 -20
- package/dist/interface/events.js +11 -1
- package/dist/interface/events.js.map +1 -1
- package/dist/interface/httpClient.d.ts +0 -14
- package/dist/interface/index.d.ts +11 -7
- package/dist/interface/index.js +2 -2
- package/dist/interface/index.js.map +1 -1
- package/dist/interface/nodes.d.ts +9 -0
- package/dist/interface/nodes.js.map +1 -1
- package/dist/interface/result.js.map +1 -1
- package/dist/interface/sharing.d.ts +2 -0
- package/dist/interface/sharing.js.map +1 -1
- package/dist/interface/telemetry.js +0 -8
- package/dist/interface/telemetry.js.map +1 -1
- package/dist/interface/thumbnail.js.map +1 -1
- package/dist/interface/upload.d.ts +7 -1
- package/dist/internal/apiService/apiService.d.ts +1 -1
- package/dist/internal/apiService/apiService.js +7 -11
- package/dist/internal/apiService/apiService.js.map +1 -1
- package/dist/internal/apiService/apiService.test.js +55 -48
- package/dist/internal/apiService/apiService.test.js.map +1 -1
- package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
- package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
- package/dist/internal/apiService/errors.js +14 -8
- package/dist/internal/apiService/errors.js.map +1 -1
- package/dist/internal/apiService/errors.test.js +17 -12
- package/dist/internal/apiService/errors.test.js.map +1 -1
- package/dist/internal/apiService/transformers.d.ts +1 -1
- package/dist/internal/apiService/transformers.js +1 -1
- package/dist/internal/asyncIteratorMap.test.js +2 -2
- package/dist/internal/asyncIteratorMap.test.js.map +1 -1
- package/dist/internal/asyncIteratorRace.d.ts +13 -0
- package/dist/internal/asyncIteratorRace.js +59 -0
- package/dist/internal/asyncIteratorRace.js.map +1 -0
- package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
- package/dist/internal/asyncIteratorRace.test.js +119 -0
- package/dist/internal/asyncIteratorRace.test.js.map +1 -0
- package/dist/internal/batch.d.ts +1 -0
- package/dist/internal/batch.js +12 -0
- package/dist/internal/batch.js.map +1 -0
- package/dist/internal/batch.test.d.ts +1 -0
- package/dist/internal/batch.test.js +41 -0
- package/dist/internal/batch.test.js.map +1 -0
- package/dist/internal/batchLoading.js.map +1 -1
- package/dist/internal/batchLoading.test.js +13 -13
- package/dist/internal/batchLoading.test.js.map +1 -1
- package/dist/internal/devices/apiService.d.ts +3 -3
- package/dist/internal/devices/apiService.js +2 -2
- package/dist/internal/devices/apiService.js.map +1 -1
- package/dist/internal/devices/cryptoService.js +1 -2
- package/dist/internal/devices/cryptoService.js.map +1 -1
- package/dist/internal/devices/index.d.ts +5 -5
- package/dist/internal/devices/index.js.map +1 -1
- package/dist/internal/devices/interface.d.ts +3 -3
- package/dist/internal/devices/manager.js +2 -2
- package/dist/internal/devices/manager.js.map +1 -1
- package/dist/internal/devices/manager.test.js +38 -7
- package/dist/internal/devices/manager.test.js.map +1 -1
- package/dist/internal/download/apiService.d.ts +4 -4
- package/dist/internal/download/apiService.js +32 -32
- package/dist/internal/download/apiService.js.map +1 -1
- package/dist/internal/download/cryptoService.d.ts +4 -4
- package/dist/internal/download/cryptoService.js +6 -5
- package/dist/internal/download/cryptoService.js.map +1 -1
- package/dist/internal/download/fileDownloader.d.ts +6 -6
- package/dist/internal/download/fileDownloader.js +3 -2
- package/dist/internal/download/fileDownloader.js.map +1 -1
- package/dist/internal/download/fileDownloader.test.js +1 -1
- package/dist/internal/download/fileDownloader.test.js.map +1 -1
- package/dist/internal/download/index.d.ts +5 -5
- package/dist/internal/download/index.js +5 -5
- package/dist/internal/download/index.js.map +1 -1
- package/dist/internal/download/interface.d.ts +3 -4
- package/dist/internal/download/telemetry.d.ts +3 -3
- package/dist/internal/download/telemetry.js +4 -2
- package/dist/internal/download/telemetry.js.map +1 -1
- package/dist/internal/download/telemetry.test.js +8 -8
- package/dist/internal/download/telemetry.test.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
- package/dist/internal/download/thumbnailDownloader.js +6 -6
- package/dist/internal/download/thumbnailDownloader.js.map +1 -1
- package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
- package/dist/internal/errors.d.ts +1 -1
- package/dist/internal/errors.js +1 -3
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/events/apiService.d.ts +5 -7
- package/dist/internal/events/apiService.js +19 -22
- package/dist/internal/events/apiService.js.map +1 -1
- package/dist/internal/events/coreEventManager.d.ts +9 -12
- package/dist/internal/events/coreEventManager.js +19 -36
- package/dist/internal/events/coreEventManager.js.map +1 -1
- package/dist/internal/events/coreEventManager.test.d.ts +1 -0
- package/dist/internal/events/coreEventManager.test.js +87 -0
- package/dist/internal/events/coreEventManager.test.js.map +1 -0
- package/dist/internal/events/eventManager.d.ts +11 -36
- package/dist/internal/events/eventManager.js +59 -106
- package/dist/internal/events/eventManager.js.map +1 -1
- package/dist/internal/events/eventManager.test.js +177 -83
- package/dist/internal/events/eventManager.test.js.map +1 -1
- package/dist/internal/events/index.d.ts +16 -36
- package/dist/internal/events/index.js +56 -72
- package/dist/internal/events/index.js.map +1 -1
- package/dist/internal/events/interface.d.ts +59 -14
- package/dist/internal/events/interface.js +12 -3
- package/dist/internal/events/interface.js.map +1 -1
- package/dist/internal/events/volumeEventManager.d.ts +9 -19
- package/dist/internal/events/volumeEventManager.js +58 -45
- package/dist/internal/events/volumeEventManager.js.map +1 -1
- package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
- package/dist/internal/events/volumeEventManager.test.js +203 -0
- package/dist/internal/events/volumeEventManager.test.js.map +1 -0
- package/dist/internal/nodes/apiService.d.ts +4 -3
- package/dist/internal/nodes/apiService.js +36 -15
- package/dist/internal/nodes/apiService.js.map +1 -1
- package/dist/internal/nodes/apiService.test.js +60 -41
- package/dist/internal/nodes/apiService.test.js.map +1 -1
- package/dist/internal/nodes/cache.d.ts +14 -5
- package/dist/internal/nodes/cache.js +31 -7
- package/dist/internal/nodes/cache.js.map +1 -1
- package/dist/internal/nodes/cache.test.js +31 -9
- package/dist/internal/nodes/cache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoCache.d.ts +2 -2
- package/dist/internal/nodes/cryptoCache.js.map +1 -1
- package/dist/internal/nodes/cryptoCache.test.js +24 -4
- package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
- package/dist/internal/nodes/cryptoService.d.ts +4 -4
- package/dist/internal/nodes/cryptoService.js +11 -17
- package/dist/internal/nodes/cryptoService.js.map +1 -1
- package/dist/internal/nodes/cryptoService.test.js +320 -241
- package/dist/internal/nodes/cryptoService.test.js.map +1 -1
- package/dist/internal/nodes/events.d.ts +8 -84
- package/dist/internal/nodes/events.js +43 -217
- package/dist/internal/nodes/events.js.map +1 -1
- package/dist/internal/nodes/events.test.js +35 -279
- package/dist/internal/nodes/events.test.js.map +1 -1
- package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
- package/dist/internal/nodes/extendedAttributes.js +3 -1
- package/dist/internal/nodes/extendedAttributes.js.map +1 -1
- package/dist/internal/nodes/extendedAttributes.test.js +7 -10
- package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
- package/dist/internal/nodes/index.d.ts +12 -13
- package/dist/internal/nodes/index.js +5 -5
- package/dist/internal/nodes/index.js.map +1 -1
- package/dist/internal/nodes/index.test.js +24 -32
- package/dist/internal/nodes/index.test.js.map +1 -1
- package/dist/internal/nodes/interface.d.ts +2 -2
- package/dist/internal/nodes/nodesAccess.d.ts +22 -7
- package/dist/internal/nodes/nodesAccess.js +65 -16
- package/dist/internal/nodes/nodesAccess.js.map +1 -1
- package/dist/internal/nodes/nodesAccess.test.js +165 -101
- package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.d.ts +7 -9
- package/dist/internal/nodes/nodesManagement.js +21 -33
- package/dist/internal/nodes/nodesManagement.js.map +1 -1
- package/dist/internal/nodes/nodesManagement.test.js +42 -21
- package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
- package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
- package/dist/internal/nodes/nodesRevisions.js.map +1 -1
- package/dist/internal/photos/albums.d.ts +3 -3
- package/dist/internal/photos/albums.js.map +1 -1
- package/dist/internal/photos/apiService.d.ts +1 -1
- package/dist/internal/photos/apiService.js +3 -6
- package/dist/internal/photos/apiService.js.map +1 -1
- package/dist/internal/photos/cache.d.ts +1 -1
- package/dist/internal/photos/index.d.ts +5 -5
- package/dist/internal/photos/index.js.map +1 -1
- package/dist/internal/photos/interface.d.ts +2 -2
- package/dist/internal/photos/photosTimeline.d.ts +3 -3
- package/dist/internal/photos/photosTimeline.js +1 -2
- package/dist/internal/photos/photosTimeline.js.map +1 -1
- package/dist/internal/sdkEvents.d.ts +1 -1
- package/dist/internal/sdkEvents.js +2 -7
- package/dist/internal/sdkEvents.js.map +1 -1
- package/dist/internal/sdkEvents.test.js +8 -8
- package/dist/internal/shares/apiService.d.ts +2 -2
- package/dist/internal/shares/apiService.js +5 -3
- package/dist/internal/shares/apiService.js.map +1 -1
- package/dist/internal/shares/cache.d.ts +4 -2
- package/dist/internal/shares/cache.js +14 -6
- package/dist/internal/shares/cache.js.map +1 -1
- package/dist/internal/shares/cache.test.js.map +1 -1
- package/dist/internal/shares/cryptoCache.d.ts +2 -2
- package/dist/internal/shares/cryptoCache.test.js +8 -2
- package/dist/internal/shares/cryptoCache.test.js.map +1 -1
- package/dist/internal/shares/cryptoService.d.ts +3 -3
- package/dist/internal/shares/cryptoService.js.map +1 -1
- package/dist/internal/shares/cryptoService.test.js +42 -42
- package/dist/internal/shares/cryptoService.test.js.map +1 -1
- package/dist/internal/shares/index.d.ts +4 -4
- package/dist/internal/shares/index.js.map +1 -1
- package/dist/internal/shares/interface.d.ts +2 -2
- package/dist/internal/shares/manager.d.ts +8 -7
- package/dist/internal/shares/manager.js +3 -0
- package/dist/internal/shares/manager.js.map +1 -1
- package/dist/internal/shares/manager.test.js +71 -63
- package/dist/internal/shares/manager.test.js.map +1 -1
- package/dist/internal/sharing/apiService.d.ts +4 -4
- package/dist/internal/sharing/apiService.js +5 -3
- package/dist/internal/sharing/apiService.js.map +1 -1
- package/dist/internal/sharing/cache.d.ts +1 -1
- package/dist/internal/sharing/cache.test.js +33 -33
- package/dist/internal/sharing/cryptoService.d.ts +3 -3
- package/dist/internal/sharing/cryptoService.js +3 -4
- package/dist/internal/sharing/cryptoService.js.map +1 -1
- package/dist/internal/sharing/cryptoService.test.js +39 -39
- package/dist/internal/sharing/cryptoService.test.js.map +1 -1
- package/dist/internal/sharing/events.d.ts +24 -56
- package/dist/internal/sharing/events.js +45 -138
- package/dist/internal/sharing/events.js.map +1 -1
- package/dist/internal/sharing/events.test.js +85 -189
- package/dist/internal/sharing/events.test.js.map +1 -1
- package/dist/internal/sharing/index.d.ts +8 -9
- package/dist/internal/sharing/index.js +5 -5
- package/dist/internal/sharing/index.js.map +1 -1
- package/dist/internal/sharing/interface.d.ts +8 -4
- package/dist/internal/sharing/sharingAccess.d.ts +6 -6
- package/dist/internal/sharing/sharingAccess.js +8 -4
- package/dist/internal/sharing/sharingAccess.js.map +1 -1
- package/dist/internal/sharing/sharingAccess.test.js +45 -39
- package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.d.ts +5 -6
- package/dist/internal/sharing/sharingManagement.js +12 -16
- package/dist/internal/sharing/sharingManagement.js.map +1 -1
- package/dist/internal/sharing/sharingManagement.test.js +305 -286
- package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
- package/dist/internal/uids.js.map +1 -1
- package/dist/internal/upload/apiService.d.ts +5 -6
- package/dist/internal/upload/apiService.js +8 -5
- package/dist/internal/upload/apiService.js.map +1 -1
- package/dist/internal/upload/blockVerifier.d.ts +3 -3
- package/dist/internal/upload/blockVerifier.js +1 -1
- package/dist/internal/upload/blockVerifier.js.map +1 -1
- package/dist/internal/upload/chunkStreamReader.test.js +6 -6
- package/dist/internal/upload/cryptoService.d.ts +4 -4
- package/dist/internal/upload/cryptoService.js +4 -4
- package/dist/internal/upload/cryptoService.js.map +1 -1
- package/dist/internal/upload/digests.js.map +1 -1
- package/dist/internal/upload/fileUploader.d.ts +6 -6
- package/dist/internal/upload/fileUploader.js.map +1 -1
- package/dist/internal/upload/fileUploader.test.js.map +1 -1
- package/dist/internal/upload/index.d.ts +6 -6
- package/dist/internal/upload/index.js +3 -3
- package/dist/internal/upload/index.js.map +1 -1
- package/dist/internal/upload/interface.d.ts +5 -3
- package/dist/internal/upload/manager.d.ts +8 -8
- package/dist/internal/upload/manager.js +23 -52
- package/dist/internal/upload/manager.js.map +1 -1
- package/dist/internal/upload/manager.test.js +185 -147
- package/dist/internal/upload/manager.test.js.map +1 -1
- package/dist/internal/upload/streamUploader.d.ts +6 -6
- package/dist/internal/upload/streamUploader.js +9 -8
- package/dist/internal/upload/streamUploader.js.map +1 -1
- package/dist/internal/upload/streamUploader.test.js +17 -12
- package/dist/internal/upload/streamUploader.test.js.map +1 -1
- package/dist/internal/upload/telemetry.d.ts +3 -3
- package/dist/internal/upload/telemetry.js +5 -3
- package/dist/internal/upload/telemetry.js.map +1 -1
- package/dist/internal/upload/telemetry.test.js +8 -8
- package/dist/internal/upload/telemetry.test.js.map +1 -1
- package/dist/protonDriveClient.d.ts +27 -170
- package/dist/protonDriveClient.js +37 -198
- package/dist/protonDriveClient.js.map +1 -1
- package/dist/protonDrivePhotosClient.js +3 -2
- package/dist/protonDrivePhotosClient.js.map +1 -1
- package/dist/telemetry.js +18 -15
- package/dist/telemetry.js.map +1 -1
- package/dist/tests/logger.js.map +1 -1
- package/dist/tests/telemetry.d.ts +1 -1
- package/dist/transformers.js +4 -2
- package/dist/transformers.js.map +1 -1
- package/package.json +3 -3
- package/src/cache/index.ts +1 -0
- package/src/cache/interface.ts +22 -22
- package/src/cache/memoryCache.test.ts +7 -7
- package/src/cache/memoryCache.ts +5 -5
- package/src/cache/nullCache.ts +38 -0
- package/src/config.ts +17 -2
- package/src/crypto/driveCrypto.test.ts +15 -15
- package/src/crypto/driveCrypto.ts +120 -156
- package/src/crypto/hmac.ts +1 -1
- package/src/crypto/interface.ts +63 -72
- package/src/crypto/openPGPCrypto.ts +76 -94
- package/src/crypto/utils.ts +1 -1
- package/src/diagnostic/eventsGenerator.ts +48 -0
- package/src/diagnostic/httpClient.ts +84 -0
- package/src/diagnostic/index.ts +40 -0
- package/src/diagnostic/integrityVerificationStream.ts +55 -0
- package/src/diagnostic/interface.ts +158 -0
- package/src/diagnostic/sdkDiagnostic.ts +249 -0
- package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
- package/src/diagnostic/telemetry.ts +74 -0
- package/src/diagnostic/zipGenerators.test.ts +177 -0
- package/src/diagnostic/zipGenerators.ts +70 -0
- package/src/errors.ts +25 -22
- package/src/index.ts +3 -3
- package/src/interface/account.ts +10 -10
- package/src/interface/author.ts +6 -6
- package/src/interface/config.ts +28 -0
- package/src/interface/devices.ts +6 -6
- package/src/interface/download.ts +12 -9
- package/src/interface/events.ts +76 -25
- package/src/interface/httpClient.ts +11 -27
- package/src/interface/index.ts +81 -20
- package/src/interface/nodes.ts +67 -60
- package/src/interface/result.ts +1 -3
- package/src/interface/sharing.ts +60 -56
- package/src/interface/telemetry.ts +74 -74
- package/src/interface/thumbnail.ts +5 -6
- package/src/interface/upload.ts +25 -11
- package/src/internal/apiService/apiService.test.ts +109 -76
- package/src/internal/apiService/apiService.ts +40 -26
- package/src/internal/apiService/coreTypes.ts +2474 -2463
- package/src/internal/apiService/driveTypes.ts +1868 -1822
- package/src/internal/apiService/errorCodes.ts +4 -4
- package/src/internal/apiService/errors.test.ts +25 -23
- package/src/internal/apiService/errors.ts +15 -9
- package/src/internal/apiService/index.ts +1 -1
- package/src/internal/apiService/transformers.ts +2 -2
- package/src/internal/asyncIteratorMap.test.ts +4 -4
- package/src/internal/asyncIteratorMap.ts +1 -1
- package/src/internal/asyncIteratorRace.test.ts +149 -0
- package/src/internal/asyncIteratorRace.ts +79 -0
- package/src/internal/batch.test.ts +50 -0
- package/src/internal/batch.ts +9 -0
- package/src/internal/batchLoading.test.ts +13 -14
- package/src/internal/batchLoading.ts +8 -8
- package/src/internal/devices/apiService.ts +58 -51
- package/src/internal/devices/cryptoService.ts +22 -17
- package/src/internal/devices/index.ts +17 -10
- package/src/internal/devices/interface.ts +21 -12
- package/src/internal/devices/manager.test.ts +40 -9
- package/src/internal/devices/manager.ts +3 -3
- package/src/internal/download/apiService.ts +72 -52
- package/src/internal/download/cryptoService.ts +34 -18
- package/src/internal/download/fileDownloader.test.ts +25 -9
- package/src/internal/download/fileDownloader.ts +38 -20
- package/src/internal/download/index.ts +19 -19
- package/src/internal/download/interface.ts +19 -20
- package/src/internal/download/queue.ts +3 -3
- package/src/internal/download/telemetry.test.ts +11 -11
- package/src/internal/download/telemetry.ts +24 -14
- package/src/internal/download/thumbnailDownloader.test.ts +11 -6
- package/src/internal/download/thumbnailDownloader.ts +43 -32
- package/src/internal/errors.ts +7 -5
- package/src/internal/events/apiService.ts +46 -36
- package/src/internal/events/coreEventManager.test.ts +101 -0
- package/src/internal/events/coreEventManager.ts +26 -48
- package/src/internal/events/eventManager.test.ts +211 -93
- package/src/internal/events/eventManager.ts +72 -117
- package/src/internal/events/index.ts +71 -91
- package/src/internal/events/interface.ts +92 -29
- package/src/internal/events/volumeEventManager.test.ts +239 -0
- package/src/internal/events/volumeEventManager.ts +68 -57
- package/src/internal/nodes/apiService.test.ts +197 -147
- package/src/internal/nodes/apiService.ts +288 -174
- package/src/internal/nodes/cache.test.ts +48 -20
- package/src/internal/nodes/cache.ts +79 -45
- package/src/internal/nodes/cryptoCache.test.ts +34 -14
- package/src/internal/nodes/cryptoCache.ts +10 -5
- package/src/internal/nodes/cryptoService.test.ts +492 -351
- package/src/internal/nodes/cryptoService.ts +171 -89
- package/src/internal/nodes/events.test.ts +48 -344
- package/src/internal/nodes/events.ts +48 -254
- package/src/internal/nodes/extendedAttributes.test.ts +28 -24
- package/src/internal/nodes/extendedAttributes.ts +20 -15
- package/src/internal/nodes/index.test.ts +51 -55
- package/src/internal/nodes/index.ts +32 -22
- package/src/internal/nodes/interface.ts +44 -31
- package/src/internal/nodes/nodesAccess.test.ts +237 -130
- package/src/internal/nodes/nodesAccess.ts +113 -50
- package/src/internal/nodes/nodesManagement.test.ts +64 -39
- package/src/internal/nodes/nodesManagement.ts +51 -62
- package/src/internal/nodes/nodesRevisions.ts +7 -7
- package/src/internal/nodes/validations.ts +2 -2
- package/src/internal/photos/albums.ts +5 -5
- package/src/internal/photos/apiService.ts +4 -7
- package/src/internal/photos/cache.ts +1 -1
- package/src/internal/photos/index.ts +8 -8
- package/src/internal/photos/interface.ts +2 -2
- package/src/internal/photos/photosTimeline.ts +4 -5
- package/src/internal/sdkEvents.test.ts +10 -10
- package/src/internal/sdkEvents.ts +5 -13
- package/src/internal/shares/apiService.ts +44 -33
- package/src/internal/shares/cache.test.ts +6 -4
- package/src/internal/shares/cache.ts +25 -14
- package/src/internal/shares/cryptoCache.test.ts +17 -11
- package/src/internal/shares/cryptoCache.ts +4 -4
- package/src/internal/shares/cryptoService.test.ts +72 -74
- package/src/internal/shares/cryptoService.ts +48 -23
- package/src/internal/shares/index.ts +23 -11
- package/src/internal/shares/interface.ts +8 -8
- package/src/internal/shares/manager.test.ts +88 -80
- package/src/internal/shares/manager.ts +27 -23
- package/src/internal/sharing/apiService.ts +283 -175
- package/src/internal/sharing/cache.test.ts +35 -35
- package/src/internal/sharing/cache.ts +3 -3
- package/src/internal/sharing/cryptoService.test.ts +58 -46
- package/src/internal/sharing/cryptoService.ts +121 -83
- package/src/internal/sharing/events.test.ts +97 -207
- package/src/internal/sharing/events.ts +46 -157
- package/src/internal/sharing/index.ts +24 -16
- package/src/internal/sharing/interface.ts +46 -42
- package/src/internal/sharing/sharingAccess.test.ts +71 -65
- package/src/internal/sharing/sharingAccess.ts +39 -21
- package/src/internal/sharing/sharingManagement.test.ts +405 -335
- package/src/internal/sharing/sharingManagement.ts +144 -75
- package/src/internal/uids.ts +1 -1
- package/src/internal/upload/apiService.ts +168 -119
- package/src/internal/upload/blockVerifier.ts +8 -6
- package/src/internal/upload/chunkStreamReader.test.ts +7 -7
- package/src/internal/upload/cryptoService.ts +42 -36
- package/src/internal/upload/digests.ts +2 -2
- package/src/internal/upload/fileUploader.test.ts +15 -3
- package/src/internal/upload/fileUploader.ts +39 -17
- package/src/internal/upload/index.ts +17 -18
- package/src/internal/upload/interface.ts +79 -77
- package/src/internal/upload/manager.test.ts +222 -175
- package/src/internal/upload/manager.ts +74 -80
- package/src/internal/upload/queue.ts +3 -3
- package/src/internal/upload/streamUploader.test.ts +40 -27
- package/src/internal/upload/streamUploader.ts +87 -71
- package/src/internal/upload/telemetry.test.ts +11 -11
- package/src/internal/upload/telemetry.ts +25 -15
- package/src/internal/wait.test.ts +1 -1
- package/src/internal/wait.ts +3 -3
- package/src/protonDriveClient.ts +189 -276
- package/src/protonDrivePhotosClient.ts +20 -13
- package/src/telemetry.ts +60 -52
- package/src/tests/logger.ts +1 -1
- package/src/tests/telemetry.ts +2 -2
- package/src/transformers.ts +27 -21
- package/src/version.ts +0 -1
- package/dist/internal/events/cache.d.ts +0 -28
- package/dist/internal/events/cache.js +0 -67
- package/dist/internal/events/cache.js.map +0 -1
- package/dist/internal/events/cache.test.js +0 -43
- package/dist/internal/events/cache.test.js.map +0 -1
- package/src/internal/events/cache.test.ts +0 -47
- package/src/internal/events/cache.ts +0 -80
- /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
package/src/crypto/interface.ts
CHANGED
|
@@ -48,24 +48,24 @@ export interface SessionKey {
|
|
|
48
48
|
export enum VERIFICATION_STATUS {
|
|
49
49
|
NOT_SIGNED = 0,
|
|
50
50
|
SIGNED_AND_VALID = 1,
|
|
51
|
-
SIGNED_AND_INVALID = 2
|
|
51
|
+
SIGNED_AND_INVALID = 2,
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export interface SRPModule {
|
|
55
|
-
getSrpVerifier: (password: string) => Promise<SRPVerifier
|
|
56
|
-
computeKeyPassword: (password: string, salt: string) => Promise<string
|
|
55
|
+
getSrpVerifier: (password: string) => Promise<SRPVerifier>;
|
|
56
|
+
computeKeyPassword: (password: string, salt: string) => Promise<string>;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
export type SRPVerifier = {
|
|
60
|
-
modulusId: string
|
|
61
|
-
version: number
|
|
62
|
-
salt: string
|
|
63
|
-
verifier: string
|
|
64
|
-
}
|
|
60
|
+
modulusId: string;
|
|
61
|
+
version: number;
|
|
62
|
+
salt: string;
|
|
63
|
+
verifier: string;
|
|
64
|
+
};
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* OpenPGP crypto layer to provide necessary PGP operations for Drive crypto.
|
|
68
|
-
*
|
|
68
|
+
*
|
|
69
69
|
* This layer focuses on providing general openPGP functions. Every operation
|
|
70
70
|
* should prefer binary input and output. Ideally, armoring should be done
|
|
71
71
|
* later in serialisation step, but for now, it is part of the interface to
|
|
@@ -77,38 +77,44 @@ export type SRPVerifier = {
|
|
|
77
77
|
export interface OpenPGPCrypto {
|
|
78
78
|
/**
|
|
79
79
|
* Generate a random passphrase.
|
|
80
|
-
*
|
|
80
|
+
*
|
|
81
81
|
* 32 random bytes are generated and encoded into a base64 string.
|
|
82
82
|
*/
|
|
83
|
-
generatePassphrase: () => string
|
|
83
|
+
generatePassphrase: () => string;
|
|
84
84
|
|
|
85
|
-
generateSessionKey: (encryptionKeys: PrivateKey[]) => Promise<SessionKey
|
|
85
|
+
generateSessionKey: (encryptionKeys: PrivateKey[]) => Promise<SessionKey>;
|
|
86
86
|
|
|
87
|
-
encryptSessionKey: (
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
encryptSessionKey: (
|
|
88
|
+
sessionKey: SessionKey,
|
|
89
|
+
encryptionKeys: PublicKey | PublicKey[],
|
|
90
|
+
) => Promise<{
|
|
91
|
+
keyPacket: Uint8Array;
|
|
92
|
+
}>;
|
|
90
93
|
|
|
91
|
-
encryptSessionKeyWithPassword: (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
encryptSessionKeyWithPassword: (
|
|
95
|
+
sessionKey: SessionKey,
|
|
96
|
+
password: string,
|
|
97
|
+
) => Promise<{
|
|
98
|
+
keyPacket: Uint8Array;
|
|
99
|
+
}>;
|
|
94
100
|
|
|
95
101
|
/**
|
|
96
102
|
* Generate a new key pair locked by a passphrase.
|
|
97
|
-
*
|
|
103
|
+
*
|
|
98
104
|
* The key pair is generated using the Curve25519 algorithm.
|
|
99
105
|
*/
|
|
100
106
|
generateKey: (passphrase: string) => Promise<{
|
|
101
|
-
privateKey: PrivateKey
|
|
102
|
-
armoredKey: string
|
|
103
|
-
}
|
|
107
|
+
privateKey: PrivateKey;
|
|
108
|
+
armoredKey: string;
|
|
109
|
+
}>;
|
|
104
110
|
|
|
105
111
|
encryptArmored: (
|
|
106
112
|
data: Uint8Array,
|
|
107
113
|
encryptionKeys: PrivateKey[],
|
|
108
114
|
sessionKey?: SessionKey,
|
|
109
115
|
) => Promise<{
|
|
110
|
-
armoredData: string
|
|
111
|
-
}
|
|
116
|
+
armoredData: string;
|
|
117
|
+
}>;
|
|
112
118
|
|
|
113
119
|
encryptAndSign: (
|
|
114
120
|
data: Uint8Array,
|
|
@@ -116,8 +122,8 @@ export interface OpenPGPCrypto {
|
|
|
116
122
|
encryptionKeys: PrivateKey[],
|
|
117
123
|
signingKey: PrivateKey,
|
|
118
124
|
) => Promise<{
|
|
119
|
-
encryptedData: Uint8Array
|
|
120
|
-
}
|
|
125
|
+
encryptedData: Uint8Array;
|
|
126
|
+
}>;
|
|
121
127
|
|
|
122
128
|
encryptAndSignArmored: (
|
|
123
129
|
data: Uint8Array,
|
|
@@ -125,8 +131,8 @@ export interface OpenPGPCrypto {
|
|
|
125
131
|
encryptionKeys: PrivateKey[],
|
|
126
132
|
signingKey: PrivateKey,
|
|
127
133
|
) => Promise<{
|
|
128
|
-
armoredData: string
|
|
129
|
-
}
|
|
134
|
+
armoredData: string;
|
|
135
|
+
}>;
|
|
130
136
|
|
|
131
137
|
encryptAndSignDetached: (
|
|
132
138
|
data: Uint8Array,
|
|
@@ -134,9 +140,9 @@ export interface OpenPGPCrypto {
|
|
|
134
140
|
encryptionKeys: PrivateKey[],
|
|
135
141
|
signingKey: PrivateKey,
|
|
136
142
|
) => Promise<{
|
|
137
|
-
encryptedData: Uint8Array
|
|
138
|
-
signature: Uint8Array
|
|
139
|
-
}
|
|
143
|
+
encryptedData: Uint8Array;
|
|
144
|
+
signature: Uint8Array;
|
|
145
|
+
}>;
|
|
140
146
|
|
|
141
147
|
encryptAndSignDetachedArmored: (
|
|
142
148
|
data: Uint8Array,
|
|
@@ -144,56 +150,47 @@ export interface OpenPGPCrypto {
|
|
|
144
150
|
encryptionKeys: PrivateKey[],
|
|
145
151
|
signingKey: PrivateKey,
|
|
146
152
|
) => Promise<{
|
|
147
|
-
armoredData: string
|
|
148
|
-
armoredSignature: string
|
|
149
|
-
}
|
|
153
|
+
armoredData: string;
|
|
154
|
+
armoredSignature: string;
|
|
155
|
+
}>;
|
|
150
156
|
|
|
151
157
|
sign: (
|
|
152
158
|
data: Uint8Array,
|
|
153
159
|
signingKey: PrivateKey,
|
|
154
160
|
signatureContext: string,
|
|
155
161
|
) => Promise<{
|
|
156
|
-
signature: Uint8Array
|
|
157
|
-
}
|
|
162
|
+
signature: Uint8Array;
|
|
163
|
+
}>;
|
|
158
164
|
|
|
159
165
|
signArmored: (
|
|
160
166
|
data: Uint8Array,
|
|
161
167
|
signingKey: PrivateKey | PrivateKey[],
|
|
162
168
|
) => Promise<{
|
|
163
|
-
signature: string
|
|
164
|
-
}
|
|
169
|
+
signature: string;
|
|
170
|
+
}>;
|
|
165
171
|
|
|
166
172
|
verify: (
|
|
167
173
|
data: Uint8Array,
|
|
168
174
|
armoredSignature: string,
|
|
169
175
|
verificationKeys: PublicKey | PublicKey[],
|
|
170
176
|
) => Promise<{
|
|
171
|
-
verified: VERIFICATION_STATUS
|
|
172
|
-
}
|
|
177
|
+
verified: VERIFICATION_STATUS;
|
|
178
|
+
}>;
|
|
173
179
|
|
|
174
|
-
decryptSessionKey: (
|
|
175
|
-
data: Uint8Array,
|
|
176
|
-
decryptionKeys: PrivateKey | PrivateKey[],
|
|
177
|
-
) => Promise<SessionKey>,
|
|
180
|
+
decryptSessionKey: (data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
|
|
178
181
|
|
|
179
|
-
decryptArmoredSessionKey: (
|
|
180
|
-
armoredData: string,
|
|
181
|
-
decryptionKeys: PrivateKey | PrivateKey[],
|
|
182
|
-
) => Promise<SessionKey>,
|
|
182
|
+
decryptArmoredSessionKey: (armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
|
|
183
183
|
|
|
184
|
-
decryptKey: (
|
|
185
|
-
armoredKey: string,
|
|
186
|
-
passphrase: string,
|
|
187
|
-
) => Promise<PrivateKey>,
|
|
184
|
+
decryptKey: (armoredKey: string, passphrase: string) => Promise<PrivateKey>;
|
|
188
185
|
|
|
189
186
|
decryptAndVerify(
|
|
190
187
|
data: Uint8Array,
|
|
191
188
|
sessionKey: SessionKey,
|
|
192
189
|
verificationKeys: PublicKey | PublicKey[],
|
|
193
190
|
): Promise<{
|
|
194
|
-
data: Uint8Array
|
|
195
|
-
verified: VERIFICATION_STATUS
|
|
196
|
-
}
|
|
191
|
+
data: Uint8Array;
|
|
192
|
+
verified: VERIFICATION_STATUS;
|
|
193
|
+
}>;
|
|
197
194
|
|
|
198
195
|
decryptAndVerifyDetached(
|
|
199
196
|
data: Uint8Array,
|
|
@@ -201,23 +198,20 @@ export interface OpenPGPCrypto {
|
|
|
201
198
|
sessionKey: SessionKey,
|
|
202
199
|
verificationKeys?: PublicKey | PublicKey[],
|
|
203
200
|
): Promise<{
|
|
204
|
-
data: Uint8Array
|
|
205
|
-
verified: VERIFICATION_STATUS
|
|
206
|
-
}
|
|
201
|
+
data: Uint8Array;
|
|
202
|
+
verified: VERIFICATION_STATUS;
|
|
203
|
+
}>;
|
|
207
204
|
|
|
208
|
-
decryptArmored(
|
|
209
|
-
armoredData: string,
|
|
210
|
-
decryptionKeys: PrivateKey | PrivateKey[],
|
|
211
|
-
): Promise<Uint8Array>,
|
|
205
|
+
decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<Uint8Array>;
|
|
212
206
|
|
|
213
207
|
decryptArmoredAndVerify: (
|
|
214
208
|
armoredData: string,
|
|
215
209
|
decryptionKeys: PrivateKey | PrivateKey[],
|
|
216
210
|
verificationKeys: PublicKey | PublicKey[],
|
|
217
211
|
) => Promise<{
|
|
218
|
-
data: Uint8Array
|
|
219
|
-
verified: VERIFICATION_STATUS
|
|
220
|
-
}
|
|
212
|
+
data: Uint8Array;
|
|
213
|
+
verified: VERIFICATION_STATUS;
|
|
214
|
+
}>;
|
|
221
215
|
|
|
222
216
|
decryptArmoredAndVerifyDetached: (
|
|
223
217
|
armoredData: string,
|
|
@@ -225,12 +219,9 @@ export interface OpenPGPCrypto {
|
|
|
225
219
|
sessionKey: SessionKey,
|
|
226
220
|
verificationKeys: PublicKey | PublicKey[],
|
|
227
221
|
) => Promise<{
|
|
228
|
-
data: Uint8Array
|
|
229
|
-
verified: VERIFICATION_STATUS
|
|
230
|
-
}
|
|
222
|
+
data: Uint8Array;
|
|
223
|
+
verified: VERIFICATION_STATUS;
|
|
224
|
+
}>;
|
|
231
225
|
|
|
232
|
-
decryptArmoredWithPassword(
|
|
233
|
-
armoredData: string,
|
|
234
|
-
password: string,
|
|
235
|
-
): Promise<Uint8Array>,
|
|
226
|
+
decryptArmoredWithPassword(armoredData: string, password: string): Promise<Uint8Array>;
|
|
236
227
|
}
|
|
@@ -6,57 +6,63 @@ import { uint8ArrayToBase64String } from './utils';
|
|
|
6
6
|
* clients/packages/crypto/lib/proxy/proxy.ts.
|
|
7
7
|
*/
|
|
8
8
|
export interface OpenPGPCryptoProxy {
|
|
9
|
-
generateKey: (options: { userIDs: { name: string }[]
|
|
10
|
-
exportPrivateKey: (options: { privateKey: PrivateKey
|
|
11
|
-
importPrivateKey: (options: { armoredKey: string
|
|
12
|
-
generateSessionKey: (options: { recipientKeys: PrivateKey[] }) => Promise<SessionKey
|
|
13
|
-
encryptSessionKey: (
|
|
14
|
-
|
|
9
|
+
generateKey: (options: { userIDs: { name: string }[]; type: 'ecc'; curve: 'ed25519Legacy' }) => Promise<PrivateKey>;
|
|
10
|
+
exportPrivateKey: (options: { privateKey: PrivateKey; passphrase: string | null }) => Promise<string>;
|
|
11
|
+
importPrivateKey: (options: { armoredKey: string; passphrase: string | null }) => Promise<PrivateKey>;
|
|
12
|
+
generateSessionKey: (options: { recipientKeys: PrivateKey[] }) => Promise<SessionKey>;
|
|
13
|
+
encryptSessionKey: (
|
|
14
|
+
options: SessionKey & { format: 'binary'; encryptionKeys?: PublicKey | PublicKey[]; passwords?: string[] },
|
|
15
|
+
) => Promise<Uint8Array>;
|
|
16
|
+
decryptSessionKey: (options: {
|
|
17
|
+
armoredMessage?: string;
|
|
18
|
+
binaryMessage?: Uint8Array;
|
|
19
|
+
decryptionKeys: PrivateKey | PrivateKey[];
|
|
20
|
+
}) => Promise<SessionKey | undefined>;
|
|
15
21
|
encryptMessage: (options: {
|
|
16
|
-
format?: 'armored' | 'binary'
|
|
17
|
-
binaryData: Uint8Array
|
|
18
|
-
sessionKey?: SessionKey
|
|
19
|
-
encryptionKeys: PrivateKey[]
|
|
20
|
-
signingKeys?: PrivateKey
|
|
21
|
-
detached?: boolean
|
|
22
|
+
format?: 'armored' | 'binary';
|
|
23
|
+
binaryData: Uint8Array;
|
|
24
|
+
sessionKey?: SessionKey;
|
|
25
|
+
encryptionKeys: PrivateKey[];
|
|
26
|
+
signingKeys?: PrivateKey;
|
|
27
|
+
detached?: boolean;
|
|
22
28
|
}) => Promise<{
|
|
23
|
-
message: string | Uint8Array
|
|
24
|
-
signature?: string | Uint8Array
|
|
25
|
-
}
|
|
29
|
+
message: string | Uint8Array;
|
|
30
|
+
signature?: string | Uint8Array;
|
|
31
|
+
}>;
|
|
26
32
|
decryptMessage: (options: {
|
|
27
|
-
format: 'utf8' | 'binary'
|
|
28
|
-
armoredMessage?: string
|
|
29
|
-
binaryMessage?: Uint8Array
|
|
30
|
-
armoredSignature?: string
|
|
31
|
-
binarySignature?: Uint8Array
|
|
32
|
-
sessionKeys?: SessionKey
|
|
33
|
-
passwords?: string[]
|
|
34
|
-
decryptionKeys?: PrivateKey | PrivateKey[]
|
|
35
|
-
verificationKeys?: PublicKey | PublicKey[]
|
|
33
|
+
format: 'utf8' | 'binary';
|
|
34
|
+
armoredMessage?: string;
|
|
35
|
+
binaryMessage?: Uint8Array;
|
|
36
|
+
armoredSignature?: string;
|
|
37
|
+
binarySignature?: Uint8Array;
|
|
38
|
+
sessionKeys?: SessionKey;
|
|
39
|
+
passwords?: string[];
|
|
40
|
+
decryptionKeys?: PrivateKey | PrivateKey[];
|
|
41
|
+
verificationKeys?: PublicKey | PublicKey[];
|
|
36
42
|
}) => Promise<{
|
|
37
|
-
data: Uint8Array | string
|
|
43
|
+
data: Uint8Array | string;
|
|
38
44
|
// pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
|
|
39
45
|
// Web clients are using newer pmcrypto, but CLI is using older version due to build issues with Bun.
|
|
40
|
-
verified?: VERIFICATION_STATUS
|
|
41
|
-
verificationStatus?: VERIFICATION_STATUS
|
|
42
|
-
}
|
|
46
|
+
verified?: VERIFICATION_STATUS;
|
|
47
|
+
verificationStatus?: VERIFICATION_STATUS;
|
|
48
|
+
}>;
|
|
43
49
|
signMessage: (options: {
|
|
44
|
-
format: 'binary' | 'armored'
|
|
45
|
-
binaryData: Uint8Array
|
|
46
|
-
signingKeys: PrivateKey | PrivateKey[]
|
|
47
|
-
detached: boolean
|
|
48
|
-
signatureContext?: { critical: boolean
|
|
49
|
-
}) => Promise<Uint8Array | string
|
|
50
|
+
format: 'binary' | 'armored';
|
|
51
|
+
binaryData: Uint8Array;
|
|
52
|
+
signingKeys: PrivateKey | PrivateKey[];
|
|
53
|
+
detached: boolean;
|
|
54
|
+
signatureContext?: { critical: boolean; value: string };
|
|
55
|
+
}) => Promise<Uint8Array | string>;
|
|
50
56
|
verifyMessage: (options: {
|
|
51
|
-
binaryData: Uint8Array
|
|
52
|
-
armoredSignature: string
|
|
53
|
-
verificationKeys: PublicKey | PublicKey[]
|
|
57
|
+
binaryData: Uint8Array;
|
|
58
|
+
armoredSignature: string;
|
|
59
|
+
verificationKeys: PublicKey | PublicKey[];
|
|
54
60
|
}) => Promise<{
|
|
55
61
|
// pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
|
|
56
62
|
// Web clients are using newer pmcrypto, but CLI is using older version due to build issues with Bun.
|
|
57
|
-
verified?: VERIFICATION_STATUS
|
|
58
|
-
verificationStatus?: VERIFICATION_STATUS
|
|
59
|
-
}
|
|
63
|
+
verified?: VERIFICATION_STATUS;
|
|
64
|
+
verificationStatus?: VERIFICATION_STATUS;
|
|
65
|
+
}>;
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
/**
|
|
@@ -71,6 +77,8 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
71
77
|
|
|
72
78
|
generatePassphrase(): string {
|
|
73
79
|
const value = crypto.getRandomValues(new Uint8Array(32));
|
|
80
|
+
// TODO: Once all clients can use non-ascii bytes, switch to simple
|
|
81
|
+
// generating of random bytes without encoding it into base64.
|
|
74
82
|
return uint8ArrayToBase64String(value);
|
|
75
83
|
}
|
|
76
84
|
|
|
@@ -85,7 +93,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
85
93
|
encryptionKeys,
|
|
86
94
|
});
|
|
87
95
|
return {
|
|
88
|
-
keyPacket
|
|
96
|
+
keyPacket,
|
|
89
97
|
};
|
|
90
98
|
}
|
|
91
99
|
|
|
@@ -118,11 +126,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
118
126
|
};
|
|
119
127
|
}
|
|
120
128
|
|
|
121
|
-
async encryptArmored(
|
|
122
|
-
data: Uint8Array,
|
|
123
|
-
encryptionKeys: PrivateKey[],
|
|
124
|
-
sessionKey?: SessionKey,
|
|
125
|
-
) {
|
|
129
|
+
async encryptArmored(data: Uint8Array, encryptionKeys: PrivateKey[], sessionKey?: SessionKey) {
|
|
126
130
|
const { message: armoredData } = await this.cryptoProxy.encryptMessage({
|
|
127
131
|
binaryData: data,
|
|
128
132
|
sessionKey,
|
|
@@ -130,7 +134,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
130
134
|
});
|
|
131
135
|
return {
|
|
132
136
|
armoredData: armoredData as string,
|
|
133
|
-
}
|
|
137
|
+
};
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
async encryptAndSign(
|
|
@@ -187,7 +191,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
187
191
|
return {
|
|
188
192
|
encryptedData: encryptedData as Uint8Array,
|
|
189
193
|
signature: signature as Uint8Array,
|
|
190
|
-
}
|
|
194
|
+
};
|
|
191
195
|
}
|
|
192
196
|
|
|
193
197
|
async encryptAndSignDetachedArmored(
|
|
@@ -206,14 +210,10 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
206
210
|
return {
|
|
207
211
|
armoredData: armoredData as string,
|
|
208
212
|
armoredSignature: armoredSignature as string,
|
|
209
|
-
}
|
|
213
|
+
};
|
|
210
214
|
}
|
|
211
215
|
|
|
212
|
-
async sign(
|
|
213
|
-
data: Uint8Array,
|
|
214
|
-
signingKeys: PrivateKey | PrivateKey[],
|
|
215
|
-
signatureContext: string,
|
|
216
|
-
) {
|
|
216
|
+
async sign(data: Uint8Array, signingKeys: PrivateKey | PrivateKey[], signatureContext: string) {
|
|
217
217
|
const signature = await this.cryptoProxy.signMessage({
|
|
218
218
|
binaryData: data,
|
|
219
219
|
signingKeys,
|
|
@@ -226,10 +226,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
async signArmored(
|
|
230
|
-
data: Uint8Array,
|
|
231
|
-
signingKeys: PrivateKey | PrivateKey[],
|
|
232
|
-
) {
|
|
229
|
+
async signArmored(data: Uint8Array, signingKeys: PrivateKey | PrivateKey[]) {
|
|
233
230
|
const signature = await this.cryptoProxy.signMessage({
|
|
234
231
|
binaryData: data,
|
|
235
232
|
signingKeys,
|
|
@@ -241,11 +238,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
241
238
|
};
|
|
242
239
|
}
|
|
243
240
|
|
|
244
|
-
async verify(
|
|
245
|
-
data: Uint8Array,
|
|
246
|
-
armoredSignature: string,
|
|
247
|
-
verificationKeys: PublicKey | PublicKey[],
|
|
248
|
-
) {
|
|
241
|
+
async verify(data: Uint8Array, armoredSignature: string, verificationKeys: PublicKey | PublicKey[]) {
|
|
249
242
|
const { verified, verificationStatus } = await this.cryptoProxy.verifyMessage({
|
|
250
243
|
binaryData: data,
|
|
251
244
|
armoredSignature,
|
|
@@ -258,10 +251,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
258
251
|
};
|
|
259
252
|
}
|
|
260
253
|
|
|
261
|
-
async decryptSessionKey(
|
|
262
|
-
data: Uint8Array,
|
|
263
|
-
decryptionKeys: PrivateKey | PrivateKey[],
|
|
264
|
-
) {
|
|
254
|
+
async decryptSessionKey(data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) {
|
|
265
255
|
const sessionKey = await this.cryptoProxy.decryptSessionKey({
|
|
266
256
|
binaryMessage: data,
|
|
267
257
|
decryptionKeys,
|
|
@@ -274,10 +264,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
274
264
|
return sessionKey;
|
|
275
265
|
}
|
|
276
266
|
|
|
277
|
-
async decryptArmoredSessionKey(
|
|
278
|
-
armoredData: string,
|
|
279
|
-
decryptionKeys: PrivateKey | PrivateKey[],
|
|
280
|
-
) {
|
|
267
|
+
async decryptArmoredSessionKey(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) {
|
|
281
268
|
const sessionKey = await this.cryptoProxy.decryptSessionKey({
|
|
282
269
|
armoredMessage: armoredData,
|
|
283
270
|
decryptionKeys,
|
|
@@ -290,10 +277,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
290
277
|
return sessionKey;
|
|
291
278
|
}
|
|
292
279
|
|
|
293
|
-
async decryptKey(
|
|
294
|
-
armoredKey: string,
|
|
295
|
-
passphrase: string,
|
|
296
|
-
) {
|
|
280
|
+
async decryptKey(armoredKey: string, passphrase: string) {
|
|
297
281
|
const key = await this.cryptoProxy.importPrivateKey({
|
|
298
282
|
armoredKey,
|
|
299
283
|
passphrase,
|
|
@@ -301,12 +285,12 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
301
285
|
return key;
|
|
302
286
|
}
|
|
303
287
|
|
|
304
|
-
async decryptAndVerify(
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
288
|
+
async decryptAndVerify(data: Uint8Array, sessionKey: SessionKey, verificationKeys: PublicKey[]) {
|
|
289
|
+
const {
|
|
290
|
+
data: decryptedData,
|
|
291
|
+
verified,
|
|
292
|
+
verificationStatus,
|
|
293
|
+
} = await this.cryptoProxy.decryptMessage({
|
|
310
294
|
binaryMessage: data,
|
|
311
295
|
sessionKeys: sessionKey,
|
|
312
296
|
verificationKeys,
|
|
@@ -318,7 +302,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
318
302
|
// pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
|
|
319
303
|
// Proper typing is too complex, it will be removed to support only newer pmcrypto.
|
|
320
304
|
verified: verified || verificationStatus!,
|
|
321
|
-
}
|
|
305
|
+
};
|
|
322
306
|
}
|
|
323
307
|
|
|
324
308
|
async decryptAndVerifyDetached(
|
|
@@ -327,7 +311,11 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
327
311
|
sessionKey: SessionKey,
|
|
328
312
|
verificationKeys?: PublicKey[],
|
|
329
313
|
) {
|
|
330
|
-
const {
|
|
314
|
+
const {
|
|
315
|
+
data: decryptedData,
|
|
316
|
+
verified,
|
|
317
|
+
verificationStatus,
|
|
318
|
+
} = await this.cryptoProxy.decryptMessage({
|
|
331
319
|
binaryMessage: data,
|
|
332
320
|
binarySignature: signature,
|
|
333
321
|
sessionKeys: sessionKey,
|
|
@@ -340,13 +328,10 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
340
328
|
// pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
|
|
341
329
|
// Proper typing is too complex, it will be removed to support only newer pmcrypto.
|
|
342
330
|
verified: verified || verificationStatus!,
|
|
343
|
-
}
|
|
331
|
+
};
|
|
344
332
|
}
|
|
345
333
|
|
|
346
|
-
async decryptArmored(
|
|
347
|
-
armoredData: string,
|
|
348
|
-
decryptionKeys: PrivateKey | PrivateKey[],
|
|
349
|
-
) {
|
|
334
|
+
async decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) {
|
|
350
335
|
const { data } = await this.cryptoProxy.decryptMessage({
|
|
351
336
|
armoredMessage: armoredData,
|
|
352
337
|
decryptionKeys,
|
|
@@ -372,7 +357,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
372
357
|
// pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
|
|
373
358
|
// Proper typing is too complex, it will be removed to support only newer pmcrypto.
|
|
374
359
|
verified: verified || verificationStatus!,
|
|
375
|
-
}
|
|
360
|
+
};
|
|
376
361
|
}
|
|
377
362
|
|
|
378
363
|
async decryptArmoredAndVerifyDetached(
|
|
@@ -394,13 +379,10 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
|
|
|
394
379
|
// pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
|
|
395
380
|
// Proper typing is too complex, it will be removed to support only newer pmcrypto.
|
|
396
381
|
verified: verified || verificationStatus!,
|
|
397
|
-
}
|
|
382
|
+
};
|
|
398
383
|
}
|
|
399
384
|
|
|
400
|
-
async decryptArmoredWithPassword(
|
|
401
|
-
armoredData: string,
|
|
402
|
-
password: string,
|
|
403
|
-
) {
|
|
385
|
+
async decryptArmoredWithPassword(armoredData: string, password: string) {
|
|
404
386
|
const { data } = await this.cryptoProxy.decryptMessage({
|
|
405
387
|
armoredMessage: armoredData,
|
|
406
388
|
passwords: [password],
|
package/src/crypto/utils.ts
CHANGED
|
@@ -4,7 +4,7 @@ export function uint8ArrayToBase64String(array: Uint8Array) {
|
|
|
4
4
|
return encodeBase64(arrayToBinaryString(array));
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
export function base64StringToUint8Array(string: string){
|
|
7
|
+
export function base64StringToUint8Array(string: string) {
|
|
8
8
|
return binaryStringToArray(decodeBase64(string) || '');
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { DiagnosticResult } from './interface';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A base class for class that should provide diagnostic events
|
|
5
|
+
* as a separate generator. Simply inherit from this class and use
|
|
6
|
+
* `enqueueEvent` to enqueue the observed events. The events will be
|
|
7
|
+
* available via `iterateEvents` generator.
|
|
8
|
+
*/
|
|
9
|
+
export class EventsGenerator {
|
|
10
|
+
private eventQueue: DiagnosticResult[] = [];
|
|
11
|
+
private waitingResolvers: Array<() => void> = [];
|
|
12
|
+
|
|
13
|
+
protected enqueueEvent(event: DiagnosticResult): void {
|
|
14
|
+
this.eventQueue.push(event);
|
|
15
|
+
// Notify all waiting generators
|
|
16
|
+
const resolvers = this.waitingResolvers.splice(0);
|
|
17
|
+
resolvers.forEach((resolve) => resolve());
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async *iterateEvents(): AsyncGenerator<DiagnosticResult> {
|
|
21
|
+
try {
|
|
22
|
+
while (true) {
|
|
23
|
+
if (this.eventQueue.length === 0) {
|
|
24
|
+
await this.waitForEvent();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
while (this.eventQueue.length > 0) {
|
|
28
|
+
const event = this.eventQueue.shift();
|
|
29
|
+
if (event) {
|
|
30
|
+
yield event;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
} finally {
|
|
35
|
+
this.waitingResolvers.splice(0);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private waitForEvent(): Promise<void> {
|
|
40
|
+
return new Promise<void>((resolve) => {
|
|
41
|
+
if (this.eventQueue.length > 0) {
|
|
42
|
+
resolve();
|
|
43
|
+
} else {
|
|
44
|
+
this.waitingResolvers.push(resolve);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|