@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.
Files changed (496) hide show
  1. package/dist/cache/index.d.ts +1 -0
  2. package/dist/cache/index.js +3 -1
  3. package/dist/cache/index.js.map +1 -1
  4. package/dist/cache/memoryCache.d.ts +1 -1
  5. package/dist/cache/memoryCache.js +0 -1
  6. package/dist/cache/memoryCache.js.map +1 -1
  7. package/dist/cache/memoryCache.test.js +2 -4
  8. package/dist/cache/memoryCache.test.js.map +1 -1
  9. package/dist/cache/nullCache.d.ts +14 -0
  10. package/dist/cache/nullCache.js +36 -0
  11. package/dist/cache/nullCache.js.map +1 -0
  12. package/dist/config.d.ts +16 -1
  13. package/dist/config.js +1 -1
  14. package/dist/config.js.map +1 -1
  15. package/dist/crypto/driveCrypto.d.ts +2 -5
  16. package/dist/crypto/driveCrypto.js +7 -12
  17. package/dist/crypto/driveCrypto.js.map +1 -1
  18. package/dist/crypto/driveCrypto.test.js +14 -14
  19. package/dist/crypto/openPGPCrypto.js +5 -3
  20. package/dist/crypto/openPGPCrypto.js.map +1 -1
  21. package/dist/diagnostic/eventsGenerator.d.ts +14 -0
  22. package/dist/diagnostic/eventsGenerator.js +49 -0
  23. package/dist/diagnostic/eventsGenerator.js.map +1 -0
  24. package/dist/diagnostic/httpClient.d.ts +16 -0
  25. package/dist/diagnostic/httpClient.js +81 -0
  26. package/dist/diagnostic/httpClient.js.map +1 -0
  27. package/dist/diagnostic/index.d.ts +10 -0
  28. package/dist/diagnostic/index.js +35 -0
  29. package/dist/diagnostic/index.js.map +1 -0
  30. package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
  31. package/dist/diagnostic/integrityVerificationStream.js +56 -0
  32. package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
  33. package/dist/diagnostic/interface.d.ts +102 -0
  34. package/dist/diagnostic/interface.js +3 -0
  35. package/dist/diagnostic/interface.js.map +1 -0
  36. package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
  37. package/dist/diagnostic/sdkDiagnostic.js +222 -0
  38. package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
  39. package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
  40. package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
  41. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
  42. package/dist/diagnostic/telemetry.d.ts +25 -0
  43. package/dist/diagnostic/telemetry.js +70 -0
  44. package/dist/diagnostic/telemetry.js.map +1 -0
  45. package/dist/diagnostic/zipGenerators.d.ts +9 -0
  46. package/dist/diagnostic/zipGenerators.js +64 -0
  47. package/dist/diagnostic/zipGenerators.js.map +1 -0
  48. package/dist/diagnostic/zipGenerators.test.js +144 -0
  49. package/dist/diagnostic/zipGenerators.test.js.map +1 -0
  50. package/dist/errors.d.ts +2 -1
  51. package/dist/errors.js +3 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/interface/config.d.ts +26 -0
  54. package/dist/interface/config.js +3 -0
  55. package/dist/interface/config.js.map +1 -0
  56. package/dist/interface/download.d.ts +2 -2
  57. package/dist/interface/events.d.ts +58 -20
  58. package/dist/interface/events.js +11 -1
  59. package/dist/interface/events.js.map +1 -1
  60. package/dist/interface/httpClient.d.ts +0 -14
  61. package/dist/interface/index.d.ts +11 -7
  62. package/dist/interface/index.js +2 -2
  63. package/dist/interface/index.js.map +1 -1
  64. package/dist/interface/nodes.d.ts +9 -0
  65. package/dist/interface/nodes.js.map +1 -1
  66. package/dist/interface/result.js.map +1 -1
  67. package/dist/interface/sharing.d.ts +2 -0
  68. package/dist/interface/sharing.js.map +1 -1
  69. package/dist/interface/telemetry.js +0 -8
  70. package/dist/interface/telemetry.js.map +1 -1
  71. package/dist/interface/thumbnail.js.map +1 -1
  72. package/dist/interface/upload.d.ts +7 -1
  73. package/dist/internal/apiService/apiService.d.ts +1 -1
  74. package/dist/internal/apiService/apiService.js +7 -11
  75. package/dist/internal/apiService/apiService.js.map +1 -1
  76. package/dist/internal/apiService/apiService.test.js +55 -48
  77. package/dist/internal/apiService/apiService.test.js.map +1 -1
  78. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  79. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  80. package/dist/internal/apiService/errors.js +14 -8
  81. package/dist/internal/apiService/errors.js.map +1 -1
  82. package/dist/internal/apiService/errors.test.js +17 -12
  83. package/dist/internal/apiService/errors.test.js.map +1 -1
  84. package/dist/internal/apiService/transformers.d.ts +1 -1
  85. package/dist/internal/apiService/transformers.js +1 -1
  86. package/dist/internal/asyncIteratorMap.test.js +2 -2
  87. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  88. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  89. package/dist/internal/asyncIteratorRace.js +59 -0
  90. package/dist/internal/asyncIteratorRace.js.map +1 -0
  91. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  92. package/dist/internal/asyncIteratorRace.test.js +119 -0
  93. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  94. package/dist/internal/batch.d.ts +1 -0
  95. package/dist/internal/batch.js +12 -0
  96. package/dist/internal/batch.js.map +1 -0
  97. package/dist/internal/batch.test.d.ts +1 -0
  98. package/dist/internal/batch.test.js +41 -0
  99. package/dist/internal/batch.test.js.map +1 -0
  100. package/dist/internal/batchLoading.js.map +1 -1
  101. package/dist/internal/batchLoading.test.js +13 -13
  102. package/dist/internal/batchLoading.test.js.map +1 -1
  103. package/dist/internal/devices/apiService.d.ts +3 -3
  104. package/dist/internal/devices/apiService.js +2 -2
  105. package/dist/internal/devices/apiService.js.map +1 -1
  106. package/dist/internal/devices/cryptoService.js +1 -2
  107. package/dist/internal/devices/cryptoService.js.map +1 -1
  108. package/dist/internal/devices/index.d.ts +5 -5
  109. package/dist/internal/devices/index.js.map +1 -1
  110. package/dist/internal/devices/interface.d.ts +3 -3
  111. package/dist/internal/devices/manager.js +2 -2
  112. package/dist/internal/devices/manager.js.map +1 -1
  113. package/dist/internal/devices/manager.test.js +38 -7
  114. package/dist/internal/devices/manager.test.js.map +1 -1
  115. package/dist/internal/download/apiService.d.ts +4 -4
  116. package/dist/internal/download/apiService.js +32 -32
  117. package/dist/internal/download/apiService.js.map +1 -1
  118. package/dist/internal/download/cryptoService.d.ts +4 -4
  119. package/dist/internal/download/cryptoService.js +6 -5
  120. package/dist/internal/download/cryptoService.js.map +1 -1
  121. package/dist/internal/download/fileDownloader.d.ts +6 -6
  122. package/dist/internal/download/fileDownloader.js +3 -2
  123. package/dist/internal/download/fileDownloader.js.map +1 -1
  124. package/dist/internal/download/fileDownloader.test.js +1 -1
  125. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  126. package/dist/internal/download/index.d.ts +5 -5
  127. package/dist/internal/download/index.js +5 -5
  128. package/dist/internal/download/index.js.map +1 -1
  129. package/dist/internal/download/interface.d.ts +3 -4
  130. package/dist/internal/download/telemetry.d.ts +3 -3
  131. package/dist/internal/download/telemetry.js +4 -2
  132. package/dist/internal/download/telemetry.js.map +1 -1
  133. package/dist/internal/download/telemetry.test.js +8 -8
  134. package/dist/internal/download/telemetry.test.js.map +1 -1
  135. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  136. package/dist/internal/download/thumbnailDownloader.js +6 -6
  137. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  138. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  139. package/dist/internal/errors.d.ts +1 -1
  140. package/dist/internal/errors.js +1 -3
  141. package/dist/internal/errors.js.map +1 -1
  142. package/dist/internal/events/apiService.d.ts +5 -7
  143. package/dist/internal/events/apiService.js +19 -22
  144. package/dist/internal/events/apiService.js.map +1 -1
  145. package/dist/internal/events/coreEventManager.d.ts +9 -12
  146. package/dist/internal/events/coreEventManager.js +19 -36
  147. package/dist/internal/events/coreEventManager.js.map +1 -1
  148. package/dist/internal/events/coreEventManager.test.d.ts +1 -0
  149. package/dist/internal/events/coreEventManager.test.js +87 -0
  150. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  151. package/dist/internal/events/eventManager.d.ts +11 -36
  152. package/dist/internal/events/eventManager.js +59 -106
  153. package/dist/internal/events/eventManager.js.map +1 -1
  154. package/dist/internal/events/eventManager.test.js +177 -83
  155. package/dist/internal/events/eventManager.test.js.map +1 -1
  156. package/dist/internal/events/index.d.ts +16 -36
  157. package/dist/internal/events/index.js +56 -72
  158. package/dist/internal/events/index.js.map +1 -1
  159. package/dist/internal/events/interface.d.ts +59 -14
  160. package/dist/internal/events/interface.js +12 -3
  161. package/dist/internal/events/interface.js.map +1 -1
  162. package/dist/internal/events/volumeEventManager.d.ts +9 -19
  163. package/dist/internal/events/volumeEventManager.js +58 -45
  164. package/dist/internal/events/volumeEventManager.js.map +1 -1
  165. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  166. package/dist/internal/events/volumeEventManager.test.js +203 -0
  167. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  168. package/dist/internal/nodes/apiService.d.ts +4 -3
  169. package/dist/internal/nodes/apiService.js +36 -15
  170. package/dist/internal/nodes/apiService.js.map +1 -1
  171. package/dist/internal/nodes/apiService.test.js +60 -41
  172. package/dist/internal/nodes/apiService.test.js.map +1 -1
  173. package/dist/internal/nodes/cache.d.ts +14 -5
  174. package/dist/internal/nodes/cache.js +31 -7
  175. package/dist/internal/nodes/cache.js.map +1 -1
  176. package/dist/internal/nodes/cache.test.js +31 -9
  177. package/dist/internal/nodes/cache.test.js.map +1 -1
  178. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  179. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  180. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  181. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  182. package/dist/internal/nodes/cryptoService.d.ts +4 -4
  183. package/dist/internal/nodes/cryptoService.js +11 -17
  184. package/dist/internal/nodes/cryptoService.js.map +1 -1
  185. package/dist/internal/nodes/cryptoService.test.js +320 -241
  186. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  187. package/dist/internal/nodes/events.d.ts +8 -84
  188. package/dist/internal/nodes/events.js +43 -217
  189. package/dist/internal/nodes/events.js.map +1 -1
  190. package/dist/internal/nodes/events.test.js +35 -279
  191. package/dist/internal/nodes/events.test.js.map +1 -1
  192. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  193. package/dist/internal/nodes/extendedAttributes.js +3 -1
  194. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  195. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  196. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  197. package/dist/internal/nodes/index.d.ts +12 -13
  198. package/dist/internal/nodes/index.js +5 -5
  199. package/dist/internal/nodes/index.js.map +1 -1
  200. package/dist/internal/nodes/index.test.js +24 -32
  201. package/dist/internal/nodes/index.test.js.map +1 -1
  202. package/dist/internal/nodes/interface.d.ts +2 -2
  203. package/dist/internal/nodes/nodesAccess.d.ts +22 -7
  204. package/dist/internal/nodes/nodesAccess.js +65 -16
  205. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  206. package/dist/internal/nodes/nodesAccess.test.js +165 -101
  207. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  208. package/dist/internal/nodes/nodesManagement.d.ts +7 -9
  209. package/dist/internal/nodes/nodesManagement.js +21 -33
  210. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  211. package/dist/internal/nodes/nodesManagement.test.js +42 -21
  212. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  213. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  214. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  215. package/dist/internal/photos/albums.d.ts +3 -3
  216. package/dist/internal/photos/albums.js.map +1 -1
  217. package/dist/internal/photos/apiService.d.ts +1 -1
  218. package/dist/internal/photos/apiService.js +3 -6
  219. package/dist/internal/photos/apiService.js.map +1 -1
  220. package/dist/internal/photos/cache.d.ts +1 -1
  221. package/dist/internal/photos/index.d.ts +5 -5
  222. package/dist/internal/photos/index.js.map +1 -1
  223. package/dist/internal/photos/interface.d.ts +2 -2
  224. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  225. package/dist/internal/photos/photosTimeline.js +1 -2
  226. package/dist/internal/photos/photosTimeline.js.map +1 -1
  227. package/dist/internal/sdkEvents.d.ts +1 -1
  228. package/dist/internal/sdkEvents.js +2 -7
  229. package/dist/internal/sdkEvents.js.map +1 -1
  230. package/dist/internal/sdkEvents.test.js +8 -8
  231. package/dist/internal/shares/apiService.d.ts +2 -2
  232. package/dist/internal/shares/apiService.js +5 -3
  233. package/dist/internal/shares/apiService.js.map +1 -1
  234. package/dist/internal/shares/cache.d.ts +4 -2
  235. package/dist/internal/shares/cache.js +14 -6
  236. package/dist/internal/shares/cache.js.map +1 -1
  237. package/dist/internal/shares/cache.test.js.map +1 -1
  238. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  239. package/dist/internal/shares/cryptoCache.test.js +8 -2
  240. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  241. package/dist/internal/shares/cryptoService.d.ts +3 -3
  242. package/dist/internal/shares/cryptoService.js.map +1 -1
  243. package/dist/internal/shares/cryptoService.test.js +42 -42
  244. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  245. package/dist/internal/shares/index.d.ts +4 -4
  246. package/dist/internal/shares/index.js.map +1 -1
  247. package/dist/internal/shares/interface.d.ts +2 -2
  248. package/dist/internal/shares/manager.d.ts +8 -7
  249. package/dist/internal/shares/manager.js +3 -0
  250. package/dist/internal/shares/manager.js.map +1 -1
  251. package/dist/internal/shares/manager.test.js +71 -63
  252. package/dist/internal/shares/manager.test.js.map +1 -1
  253. package/dist/internal/sharing/apiService.d.ts +4 -4
  254. package/dist/internal/sharing/apiService.js +5 -3
  255. package/dist/internal/sharing/apiService.js.map +1 -1
  256. package/dist/internal/sharing/cache.d.ts +1 -1
  257. package/dist/internal/sharing/cache.test.js +33 -33
  258. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  259. package/dist/internal/sharing/cryptoService.js +3 -4
  260. package/dist/internal/sharing/cryptoService.js.map +1 -1
  261. package/dist/internal/sharing/cryptoService.test.js +39 -39
  262. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  263. package/dist/internal/sharing/events.d.ts +24 -56
  264. package/dist/internal/sharing/events.js +45 -138
  265. package/dist/internal/sharing/events.js.map +1 -1
  266. package/dist/internal/sharing/events.test.js +85 -189
  267. package/dist/internal/sharing/events.test.js.map +1 -1
  268. package/dist/internal/sharing/index.d.ts +8 -9
  269. package/dist/internal/sharing/index.js +5 -5
  270. package/dist/internal/sharing/index.js.map +1 -1
  271. package/dist/internal/sharing/interface.d.ts +8 -4
  272. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  273. package/dist/internal/sharing/sharingAccess.js +8 -4
  274. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  275. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  276. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  277. package/dist/internal/sharing/sharingManagement.d.ts +5 -6
  278. package/dist/internal/sharing/sharingManagement.js +12 -16
  279. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  280. package/dist/internal/sharing/sharingManagement.test.js +305 -286
  281. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  282. package/dist/internal/uids.js.map +1 -1
  283. package/dist/internal/upload/apiService.d.ts +5 -6
  284. package/dist/internal/upload/apiService.js +8 -5
  285. package/dist/internal/upload/apiService.js.map +1 -1
  286. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  287. package/dist/internal/upload/blockVerifier.js +1 -1
  288. package/dist/internal/upload/blockVerifier.js.map +1 -1
  289. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  290. package/dist/internal/upload/cryptoService.d.ts +4 -4
  291. package/dist/internal/upload/cryptoService.js +4 -4
  292. package/dist/internal/upload/cryptoService.js.map +1 -1
  293. package/dist/internal/upload/digests.js.map +1 -1
  294. package/dist/internal/upload/fileUploader.d.ts +6 -6
  295. package/dist/internal/upload/fileUploader.js.map +1 -1
  296. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  297. package/dist/internal/upload/index.d.ts +6 -6
  298. package/dist/internal/upload/index.js +3 -3
  299. package/dist/internal/upload/index.js.map +1 -1
  300. package/dist/internal/upload/interface.d.ts +5 -3
  301. package/dist/internal/upload/manager.d.ts +8 -8
  302. package/dist/internal/upload/manager.js +23 -52
  303. package/dist/internal/upload/manager.js.map +1 -1
  304. package/dist/internal/upload/manager.test.js +185 -147
  305. package/dist/internal/upload/manager.test.js.map +1 -1
  306. package/dist/internal/upload/streamUploader.d.ts +6 -6
  307. package/dist/internal/upload/streamUploader.js +9 -8
  308. package/dist/internal/upload/streamUploader.js.map +1 -1
  309. package/dist/internal/upload/streamUploader.test.js +17 -12
  310. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  311. package/dist/internal/upload/telemetry.d.ts +3 -3
  312. package/dist/internal/upload/telemetry.js +5 -3
  313. package/dist/internal/upload/telemetry.js.map +1 -1
  314. package/dist/internal/upload/telemetry.test.js +8 -8
  315. package/dist/internal/upload/telemetry.test.js.map +1 -1
  316. package/dist/protonDriveClient.d.ts +27 -170
  317. package/dist/protonDriveClient.js +37 -198
  318. package/dist/protonDriveClient.js.map +1 -1
  319. package/dist/protonDrivePhotosClient.js +3 -2
  320. package/dist/protonDrivePhotosClient.js.map +1 -1
  321. package/dist/telemetry.js +18 -15
  322. package/dist/telemetry.js.map +1 -1
  323. package/dist/tests/logger.js.map +1 -1
  324. package/dist/tests/telemetry.d.ts +1 -1
  325. package/dist/transformers.js +4 -2
  326. package/dist/transformers.js.map +1 -1
  327. package/package.json +3 -3
  328. package/src/cache/index.ts +1 -0
  329. package/src/cache/interface.ts +22 -22
  330. package/src/cache/memoryCache.test.ts +7 -7
  331. package/src/cache/memoryCache.ts +5 -5
  332. package/src/cache/nullCache.ts +38 -0
  333. package/src/config.ts +17 -2
  334. package/src/crypto/driveCrypto.test.ts +15 -15
  335. package/src/crypto/driveCrypto.ts +120 -156
  336. package/src/crypto/hmac.ts +1 -1
  337. package/src/crypto/interface.ts +63 -72
  338. package/src/crypto/openPGPCrypto.ts +76 -94
  339. package/src/crypto/utils.ts +1 -1
  340. package/src/diagnostic/eventsGenerator.ts +48 -0
  341. package/src/diagnostic/httpClient.ts +84 -0
  342. package/src/diagnostic/index.ts +40 -0
  343. package/src/diagnostic/integrityVerificationStream.ts +55 -0
  344. package/src/diagnostic/interface.ts +158 -0
  345. package/src/diagnostic/sdkDiagnostic.ts +249 -0
  346. package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
  347. package/src/diagnostic/telemetry.ts +74 -0
  348. package/src/diagnostic/zipGenerators.test.ts +177 -0
  349. package/src/diagnostic/zipGenerators.ts +70 -0
  350. package/src/errors.ts +25 -22
  351. package/src/index.ts +3 -3
  352. package/src/interface/account.ts +10 -10
  353. package/src/interface/author.ts +6 -6
  354. package/src/interface/config.ts +28 -0
  355. package/src/interface/devices.ts +6 -6
  356. package/src/interface/download.ts +12 -9
  357. package/src/interface/events.ts +76 -25
  358. package/src/interface/httpClient.ts +11 -27
  359. package/src/interface/index.ts +81 -20
  360. package/src/interface/nodes.ts +67 -60
  361. package/src/interface/result.ts +1 -3
  362. package/src/interface/sharing.ts +60 -56
  363. package/src/interface/telemetry.ts +74 -74
  364. package/src/interface/thumbnail.ts +5 -6
  365. package/src/interface/upload.ts +25 -11
  366. package/src/internal/apiService/apiService.test.ts +109 -76
  367. package/src/internal/apiService/apiService.ts +40 -26
  368. package/src/internal/apiService/coreTypes.ts +2474 -2463
  369. package/src/internal/apiService/driveTypes.ts +1868 -1822
  370. package/src/internal/apiService/errorCodes.ts +4 -4
  371. package/src/internal/apiService/errors.test.ts +25 -23
  372. package/src/internal/apiService/errors.ts +15 -9
  373. package/src/internal/apiService/index.ts +1 -1
  374. package/src/internal/apiService/transformers.ts +2 -2
  375. package/src/internal/asyncIteratorMap.test.ts +4 -4
  376. package/src/internal/asyncIteratorMap.ts +1 -1
  377. package/src/internal/asyncIteratorRace.test.ts +149 -0
  378. package/src/internal/asyncIteratorRace.ts +79 -0
  379. package/src/internal/batch.test.ts +50 -0
  380. package/src/internal/batch.ts +9 -0
  381. package/src/internal/batchLoading.test.ts +13 -14
  382. package/src/internal/batchLoading.ts +8 -8
  383. package/src/internal/devices/apiService.ts +58 -51
  384. package/src/internal/devices/cryptoService.ts +22 -17
  385. package/src/internal/devices/index.ts +17 -10
  386. package/src/internal/devices/interface.ts +21 -12
  387. package/src/internal/devices/manager.test.ts +40 -9
  388. package/src/internal/devices/manager.ts +3 -3
  389. package/src/internal/download/apiService.ts +72 -52
  390. package/src/internal/download/cryptoService.ts +34 -18
  391. package/src/internal/download/fileDownloader.test.ts +25 -9
  392. package/src/internal/download/fileDownloader.ts +38 -20
  393. package/src/internal/download/index.ts +19 -19
  394. package/src/internal/download/interface.ts +19 -20
  395. package/src/internal/download/queue.ts +3 -3
  396. package/src/internal/download/telemetry.test.ts +11 -11
  397. package/src/internal/download/telemetry.ts +24 -14
  398. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  399. package/src/internal/download/thumbnailDownloader.ts +43 -32
  400. package/src/internal/errors.ts +7 -5
  401. package/src/internal/events/apiService.ts +46 -36
  402. package/src/internal/events/coreEventManager.test.ts +101 -0
  403. package/src/internal/events/coreEventManager.ts +26 -48
  404. package/src/internal/events/eventManager.test.ts +211 -93
  405. package/src/internal/events/eventManager.ts +72 -117
  406. package/src/internal/events/index.ts +71 -91
  407. package/src/internal/events/interface.ts +92 -29
  408. package/src/internal/events/volumeEventManager.test.ts +239 -0
  409. package/src/internal/events/volumeEventManager.ts +68 -57
  410. package/src/internal/nodes/apiService.test.ts +197 -147
  411. package/src/internal/nodes/apiService.ts +288 -174
  412. package/src/internal/nodes/cache.test.ts +48 -20
  413. package/src/internal/nodes/cache.ts +79 -45
  414. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  415. package/src/internal/nodes/cryptoCache.ts +10 -5
  416. package/src/internal/nodes/cryptoService.test.ts +492 -351
  417. package/src/internal/nodes/cryptoService.ts +171 -89
  418. package/src/internal/nodes/events.test.ts +48 -344
  419. package/src/internal/nodes/events.ts +48 -254
  420. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  421. package/src/internal/nodes/extendedAttributes.ts +20 -15
  422. package/src/internal/nodes/index.test.ts +51 -55
  423. package/src/internal/nodes/index.ts +32 -22
  424. package/src/internal/nodes/interface.ts +44 -31
  425. package/src/internal/nodes/nodesAccess.test.ts +237 -130
  426. package/src/internal/nodes/nodesAccess.ts +113 -50
  427. package/src/internal/nodes/nodesManagement.test.ts +64 -39
  428. package/src/internal/nodes/nodesManagement.ts +51 -62
  429. package/src/internal/nodes/nodesRevisions.ts +7 -7
  430. package/src/internal/nodes/validations.ts +2 -2
  431. package/src/internal/photos/albums.ts +5 -5
  432. package/src/internal/photos/apiService.ts +4 -7
  433. package/src/internal/photos/cache.ts +1 -1
  434. package/src/internal/photos/index.ts +8 -8
  435. package/src/internal/photos/interface.ts +2 -2
  436. package/src/internal/photos/photosTimeline.ts +4 -5
  437. package/src/internal/sdkEvents.test.ts +10 -10
  438. package/src/internal/sdkEvents.ts +5 -13
  439. package/src/internal/shares/apiService.ts +44 -33
  440. package/src/internal/shares/cache.test.ts +6 -4
  441. package/src/internal/shares/cache.ts +25 -14
  442. package/src/internal/shares/cryptoCache.test.ts +17 -11
  443. package/src/internal/shares/cryptoCache.ts +4 -4
  444. package/src/internal/shares/cryptoService.test.ts +72 -74
  445. package/src/internal/shares/cryptoService.ts +48 -23
  446. package/src/internal/shares/index.ts +23 -11
  447. package/src/internal/shares/interface.ts +8 -8
  448. package/src/internal/shares/manager.test.ts +88 -80
  449. package/src/internal/shares/manager.ts +27 -23
  450. package/src/internal/sharing/apiService.ts +283 -175
  451. package/src/internal/sharing/cache.test.ts +35 -35
  452. package/src/internal/sharing/cache.ts +3 -3
  453. package/src/internal/sharing/cryptoService.test.ts +58 -46
  454. package/src/internal/sharing/cryptoService.ts +121 -83
  455. package/src/internal/sharing/events.test.ts +97 -207
  456. package/src/internal/sharing/events.ts +46 -157
  457. package/src/internal/sharing/index.ts +24 -16
  458. package/src/internal/sharing/interface.ts +46 -42
  459. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  460. package/src/internal/sharing/sharingAccess.ts +39 -21
  461. package/src/internal/sharing/sharingManagement.test.ts +405 -335
  462. package/src/internal/sharing/sharingManagement.ts +144 -75
  463. package/src/internal/uids.ts +1 -1
  464. package/src/internal/upload/apiService.ts +168 -119
  465. package/src/internal/upload/blockVerifier.ts +8 -6
  466. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  467. package/src/internal/upload/cryptoService.ts +42 -36
  468. package/src/internal/upload/digests.ts +2 -2
  469. package/src/internal/upload/fileUploader.test.ts +15 -3
  470. package/src/internal/upload/fileUploader.ts +39 -17
  471. package/src/internal/upload/index.ts +17 -18
  472. package/src/internal/upload/interface.ts +79 -77
  473. package/src/internal/upload/manager.test.ts +222 -175
  474. package/src/internal/upload/manager.ts +74 -80
  475. package/src/internal/upload/queue.ts +3 -3
  476. package/src/internal/upload/streamUploader.test.ts +40 -27
  477. package/src/internal/upload/streamUploader.ts +87 -71
  478. package/src/internal/upload/telemetry.test.ts +11 -11
  479. package/src/internal/upload/telemetry.ts +25 -15
  480. package/src/internal/wait.test.ts +1 -1
  481. package/src/internal/wait.ts +3 -3
  482. package/src/protonDriveClient.ts +189 -276
  483. package/src/protonDrivePhotosClient.ts +20 -13
  484. package/src/telemetry.ts +60 -52
  485. package/src/tests/logger.ts +1 -1
  486. package/src/tests/telemetry.ts +2 -2
  487. package/src/transformers.ts +27 -21
  488. package/src/version.ts +0 -1
  489. package/dist/internal/events/cache.d.ts +0 -28
  490. package/dist/internal/events/cache.js +0 -67
  491. package/dist/internal/events/cache.js.map +0 -1
  492. package/dist/internal/events/cache.test.js +0 -43
  493. package/dist/internal/events/cache.test.js.map +0 -1
  494. package/src/internal/events/cache.test.ts +0 -47
  495. package/src/internal/events/cache.ts +0 -80
  496. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
@@ -1,7 +1,15 @@
1
- import { OpenPGPCrypto, PrivateKey, PublicKey, SessionKey, SRPModule, SRPVerifier, VERIFICATION_STATUS } from './interface';
1
+ import {
2
+ OpenPGPCrypto,
3
+ PrivateKey,
4
+ PublicKey,
5
+ SessionKey,
6
+ SRPModule,
7
+ SRPVerifier,
8
+ VERIFICATION_STATUS,
9
+ } from './interface';
2
10
  import { uint8ArrayToBase64String, base64StringToUint8Array } from './utils';
3
11
  // TODO: Switch to CryptoProxy module once available.
4
- import { importHmacKey, computeHmacSignature } from "./hmac";
12
+ import { importHmacKey, computeHmacSignature } from './hmac';
5
13
 
6
14
  enum SIGNING_CONTEXTS {
7
15
  SHARING_INVITER = 'drive.share-member.inviter',
@@ -11,7 +19,7 @@ enum SIGNING_CONTEXTS {
11
19
 
12
20
  /**
13
21
  * Drive crypto layer to provide general operations for Drive crypto.
14
- *
22
+ *
15
23
  * This layer focuses on providing general Drive crypto functions. Only
16
24
  * high-level functions that are required on multiple places should be
17
25
  * peresent. E.g., no specific implementation how keys are encrypted,
@@ -20,7 +28,10 @@ enum SIGNING_CONTEXTS {
20
28
  * call with specific arguments.
21
29
  */
22
30
  export class DriveCrypto {
23
- constructor(private openPGPCrypto: OpenPGPCrypto, private srpModule: SRPModule) {
31
+ constructor(
32
+ private openPGPCrypto: OpenPGPCrypto,
33
+ private srpModule: SRPModule,
34
+ ) {
24
35
  this.openPGPCrypto = openPGPCrypto;
25
36
  this.srpModule = srpModule;
26
37
  }
@@ -28,11 +39,11 @@ export class DriveCrypto {
28
39
  /**
29
40
  * It generates passphrase and key that is encrypted with the
30
41
  * generated passphrase.
31
- *
42
+ *
32
43
  * `encrpytionKeys` are used to generate session key, which is
33
44
  * also used to encrypt the passphrase. The encrypted passphrase
34
45
  * is signed with `signingKey`.
35
- *
46
+ *
36
47
  * @returns Object with:
37
48
  * - encrypted (armored) data (key, passphrase and passphrase
38
49
  * signature) for sending to the server
@@ -43,15 +54,15 @@ export class DriveCrypto {
43
54
  signingKey: PrivateKey,
44
55
  ): Promise<{
45
56
  encrypted: {
46
- armoredKey: string,
47
- armoredPassphrase: string,
48
- armoredPassphraseSignature: string,
49
- },
57
+ armoredKey: string;
58
+ armoredPassphrase: string;
59
+ armoredPassphraseSignature: string;
60
+ };
50
61
  decrypted: {
51
- passphrase: string,
52
- key: PrivateKey,
53
- passphraseSessionKey: SessionKey,
54
- },
62
+ passphrase: string;
63
+ key: PrivateKey;
64
+ passphraseSessionKey: SessionKey;
65
+ };
55
66
  }> {
56
67
  const passphrase = this.openPGPCrypto.generatePassphrase();
57
68
  const [{ privateKey, armoredKey }, passphraseSessionKey] = await Promise.all([
@@ -78,7 +89,7 @@ export class DriveCrypto {
78
89
  passphraseSessionKey,
79
90
  },
80
91
  };
81
- };
92
+ }
82
93
 
83
94
  /**
84
95
  * It generates content key from node key for encrypting file blocks.
@@ -86,19 +97,20 @@ export class DriveCrypto {
86
97
  * @param encryptionKey - Its own node key.
87
98
  * @returns Object with serialised key packet and decrypted session key.
88
99
  */
89
- async generateContentKey(
90
- encryptionKey: PrivateKey,
91
- ): Promise<{
100
+ async generateContentKey(encryptionKey: PrivateKey): Promise<{
92
101
  encrypted: {
93
- base64ContentKeyPacket: string,
94
- armoredContentKeyPacketSignature: string,
95
- },
102
+ base64ContentKeyPacket: string;
103
+ armoredContentKeyPacketSignature: string;
104
+ };
96
105
  decrypted: {
97
- contentKeyPacketSessionKey: SessionKey,
98
- },
106
+ contentKeyPacketSessionKey: SessionKey;
107
+ };
99
108
  }> {
100
109
  const contentKeyPacketSessionKey = await this.openPGPCrypto.generateSessionKey([encryptionKey]);
101
- const { signature: armoredContentKeyPacketSignature } = await this.openPGPCrypto.signArmored(contentKeyPacketSessionKey.data, [encryptionKey]);
110
+ const { signature: armoredContentKeyPacketSignature } = await this.openPGPCrypto.signArmored(
111
+ contentKeyPacketSessionKey.data,
112
+ [encryptionKey],
113
+ );
102
114
  const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(contentKeyPacketSessionKey, [encryptionKey]);
103
115
 
104
116
  return {
@@ -108,7 +120,7 @@ export class DriveCrypto {
108
120
  },
109
121
  decrypted: {
110
122
  contentKeyPacketSessionKey,
111
- }
123
+ },
112
124
  };
113
125
  }
114
126
 
@@ -116,7 +128,7 @@ export class DriveCrypto {
116
128
  * It encrypts passphrase with provided session and encryption keys.
117
129
  * This should be used only for re-encrypting the passphrase with
118
130
  * different key (e.g., moving the node to different parent).
119
- *
131
+ *
120
132
  * @returns Object with armored passphrase and passphrase signature.
121
133
  */
122
134
  async encryptPassphrase(
@@ -125,15 +137,16 @@ export class DriveCrypto {
125
137
  encryptionKeys: PrivateKey[],
126
138
  signingKey: PrivateKey,
127
139
  ): Promise<{
128
- armoredPassphrase: string,
129
- armoredPassphraseSignature: string,
140
+ armoredPassphrase: string;
141
+ armoredPassphraseSignature: string;
130
142
  }> {
131
- const { armoredData: armoredPassphrase, armoredSignature: armoredPassphraseSignature } = await this.openPGPCrypto.encryptAndSignDetachedArmored(
132
- new TextEncoder().encode(passphrase),
133
- sessionKey,
134
- encryptionKeys,
135
- signingKey,
136
- );
143
+ const { armoredData: armoredPassphrase, armoredSignature: armoredPassphraseSignature } =
144
+ await this.openPGPCrypto.encryptAndSignDetachedArmored(
145
+ new TextEncoder().encode(passphrase),
146
+ sessionKey,
147
+ encryptionKeys,
148
+ signingKey,
149
+ );
137
150
 
138
151
  return {
139
152
  armoredPassphrase,
@@ -143,15 +156,15 @@ export class DriveCrypto {
143
156
 
144
157
  /**
145
158
  * It decrypts key generated via `generateKey`.
146
- *
159
+ *
147
160
  * Armored data are passed from the server. `decryptionKeys` are used
148
161
  * to decrypt the session key from the `armoredPassphrase`. Then the
149
162
  * session key is used with `verificationKeys` to decrypt and verify
150
163
  * the passphrase. Finally, the armored key is decrypted.
151
- *
164
+ *
152
165
  * Note: The function doesn't throw in case of verification issue.
153
166
  * You have to read `verified` result and act based on that.
154
- *
167
+ *
155
168
  * @returns key and sessionKey for crypto usage, and verification status
156
169
  */
157
170
  async decryptKey(
@@ -161,12 +174,12 @@ export class DriveCrypto {
161
174
  decryptionKeys: PrivateKey[],
162
175
  verificationKeys: PublicKey[],
163
176
  ): Promise<{
164
- passphrase: string,
165
- key: PrivateKey,
166
- passphraseSessionKey: SessionKey,
167
- verified: VERIFICATION_STATUS,
177
+ passphrase: string;
178
+ key: PrivateKey;
179
+ passphraseSessionKey: SessionKey;
180
+ verified: VERIFICATION_STATUS;
168
181
  }> {
169
- const passphraseSessionKey = await this.decryptSessionKey(armoredPassphrase, decryptionKeys);
182
+ const passphraseSessionKey = await this.openPGPCrypto.decryptArmoredSessionKey(armoredPassphrase, decryptionKeys);
170
183
 
171
184
  const { data: decryptedPassphrase, verified } = await this.openPGPCrypto.decryptArmoredAndVerifyDetached(
172
185
  armoredPassphrase,
@@ -177,10 +190,7 @@ export class DriveCrypto {
177
190
 
178
191
  const passphrase = uint8ArrayToUtf8(decryptedPassphrase);
179
192
 
180
- const key = await this.openPGPCrypto.decryptKey(
181
- armoredKey,
182
- passphrase,
183
- );
193
+ const key = await this.openPGPCrypto.decryptKey(armoredKey, passphrase);
184
194
  return {
185
195
  passphrase,
186
196
  key,
@@ -196,12 +206,12 @@ export class DriveCrypto {
196
206
  sessionKey: SessionKey,
197
207
  encryptionKey: PublicKey,
198
208
  ): Promise<{
199
- base64KeyPacket: string,
209
+ base64KeyPacket: string;
200
210
  }> {
201
211
  const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(sessionKey, [encryptionKey]);
202
212
  return {
203
213
  base64KeyPacket: uint8ArrayToBase64String(keyPacket),
204
- }
214
+ };
205
215
  }
206
216
 
207
217
  /**
@@ -215,9 +225,9 @@ export class DriveCrypto {
215
225
  bcryptPassphrase: string,
216
226
  sharePassphraseSessionKey: SessionKey,
217
227
  ): Promise<{
218
- armoredPassword: string,
219
- base64SharePassphraseKeyPacket: string,
220
- srp: SRPVerifier,
228
+ armoredPassword: string;
229
+ base64SharePassphraseKeyPacket: string;
230
+ srp: SRPVerifier;
221
231
  }> {
222
232
  const [{ armoredData: armoredPassword }, { keyPacket }, srp] = await Promise.all([
223
233
  this.openPGPCrypto.encryptArmored(new TextEncoder().encode(password), [addressKey]),
@@ -234,28 +244,25 @@ export class DriveCrypto {
234
244
 
235
245
  /**
236
246
  * It decrypts the key using the password via SRP protocol.
237
- *
247
+ *
238
248
  * The function follows the same functionality as `decryptKey` but uses SRP
239
249
  * protocol to decrypt the passphrase of the key. It is used for saved
240
250
  * public links where user saved the link with password and is not direct
241
- * member of the share.
242
- */
251
+ * member of the share.
252
+ */
243
253
  async decryptKeyWithSrpPassword(
244
254
  password: string,
245
255
  salt: string,
246
256
  armoredKey: string,
247
257
  armoredPassphrase: string,
248
258
  ): Promise<{
249
- key: PrivateKey,
259
+ key: PrivateKey;
250
260
  }> {
251
261
  const keyPassword = await this.srpModule.computeKeyPassword(password, salt);
252
262
 
253
263
  const passphrase = await this.openPGPCrypto.decryptArmoredWithPassword(armoredPassphrase, keyPassword);
254
264
 
255
- const key = await this.openPGPCrypto.decryptKey(
256
- armoredKey,
257
- new TextDecoder().decode(passphrase),
258
- );
265
+ const key = await this.openPGPCrypto.decryptKey(armoredKey, new TextDecoder().decode(passphrase));
259
266
 
260
267
  return {
261
268
  key,
@@ -264,17 +271,11 @@ export class DriveCrypto {
264
271
 
265
272
  /**
266
273
  * It decrypts session key from armored data.
267
- *
274
+ *
268
275
  * `decryptionKeys` are used to decrypt the session key from the `armoredData`.
269
276
  */
270
- async decryptSessionKey(
271
- armoredData: string,
272
- decryptionKeys: PrivateKey | PrivateKey[],
273
- ): Promise<SessionKey> {
274
- const sessionKey = await this.openPGPCrypto.decryptArmoredSessionKey(
275
- armoredData,
276
- decryptionKeys,
277
- );
277
+ async decryptSessionKey(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<SessionKey> {
278
+ const sessionKey = await this.openPGPCrypto.decryptArmoredSessionKey(armoredData, decryptionKeys);
278
279
  return sessionKey;
279
280
  }
280
281
 
@@ -284,16 +285,12 @@ export class DriveCrypto {
284
285
  decryptionKeys: PrivateKey | PrivateKey[],
285
286
  verificationKeys: PublicKey[],
286
287
  ): Promise<{
287
- sessionKey: SessionKey,
288
- verified?: VERIFICATION_STATUS,
288
+ sessionKey: SessionKey;
289
+ verified?: VERIFICATION_STATUS;
289
290
  }> {
290
-
291
291
  const data = base64StringToUint8Array(base64data);
292
292
 
293
- const sessionKey = await this.openPGPCrypto.decryptSessionKey(
294
- data,
295
- decryptionKeys,
296
- );
293
+ const sessionKey = await this.openPGPCrypto.decryptSessionKey(data, decryptionKeys);
297
294
 
298
295
  let verified;
299
296
  if (armoredSignature) {
@@ -304,7 +301,7 @@ export class DriveCrypto {
304
301
  return {
305
302
  sessionKey,
306
303
  verified,
307
- }
304
+ };
308
305
  }
309
306
 
310
307
  /**
@@ -324,10 +321,7 @@ export class DriveCrypto {
324
321
 
325
322
  const passphrase = uint8ArrayToUtf8(decryptedPassphrase);
326
323
 
327
- const key = await this.openPGPCrypto.decryptKey(
328
- armoredKey,
329
- passphrase,
330
- );
324
+ const key = await this.openPGPCrypto.decryptKey(armoredKey, passphrase);
331
325
 
332
326
  return key;
333
327
  }
@@ -340,7 +334,7 @@ export class DriveCrypto {
340
334
  encryptionKey: PrivateKey,
341
335
  sessionKey: SessionKey,
342
336
  ): Promise<{
343
- armoredSignature: string,
337
+ armoredSignature: string;
344
338
  }> {
345
339
  const { armoredData: armoredSignature } = await this.openPGPCrypto.encryptArmored(
346
340
  signature,
@@ -349,18 +343,16 @@ export class DriveCrypto {
349
343
  );
350
344
  return {
351
345
  armoredSignature,
352
- }
346
+ };
353
347
  }
354
348
 
355
349
  /**
356
350
  * It generates random 32 bytes that are encrypted and signed with
357
351
  * the provided key.
358
352
  */
359
- async generateHashKey(
360
- encryptionAndSigningKey: PrivateKey,
361
- ): Promise<{
362
- armoredHashKey: string,
363
- hashKey: Uint8Array,
353
+ async generateHashKey(encryptionAndSigningKey: PrivateKey): Promise<{
354
+ armoredHashKey: string;
355
+ hashKey: Uint8Array;
364
356
  }> {
365
357
  // Once all clients can use non-ascii bytes, switch to simple
366
358
  // generating of random bytes without encoding it into base64:
@@ -377,7 +369,7 @@ export class DriveCrypto {
377
369
  return {
378
370
  armoredHashKey,
379
371
  hashKey,
380
- }
372
+ };
381
373
  }
382
374
 
383
375
  async generateLookupHash(newName: string, parentHashKey: Uint8Array): Promise<string> {
@@ -401,7 +393,7 @@ export class DriveCrypto {
401
393
  encryptionKey: PrivateKey | undefined,
402
394
  signingKey: PrivateKey,
403
395
  ): Promise<{
404
- armoredNodeName: string,
396
+ armoredNodeName: string;
405
397
  }> {
406
398
  if (!sessionKey && !encryptionKey) {
407
399
  throw new Error('Neither session nor encryption key provided for encrypting node name');
@@ -415,12 +407,12 @@ export class DriveCrypto {
415
407
  );
416
408
  return {
417
409
  armoredNodeName,
418
- }
410
+ };
419
411
  }
420
412
 
421
413
  /**
422
414
  * It decrypts armored node name and verifies embeded signature.
423
- *
415
+ *
424
416
  * Note: The function doesn't throw in case of verification issue.
425
417
  * You have to read `verified` result and act based on that.
426
418
  */
@@ -429,8 +421,8 @@ export class DriveCrypto {
429
421
  decryptionKey: PrivateKey,
430
422
  verificationKeys: PublicKey[],
431
423
  ): Promise<{
432
- name: string,
433
- verified: VERIFICATION_STATUS,
424
+ name: string;
425
+ verified: VERIFICATION_STATUS;
434
426
  }> {
435
427
  const { data: name, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(
436
428
  armoredNodeName,
@@ -440,12 +432,12 @@ export class DriveCrypto {
440
432
  return {
441
433
  name: uint8ArrayToUtf8(name),
442
434
  verified,
443
- }
435
+ };
444
436
  }
445
437
 
446
438
  /**
447
439
  * It decrypts armored node hash key and verifies embeded signature.
448
- *
440
+ *
449
441
  * Note: The function doesn't throw in case of verification issue.
450
442
  * You have to read `verified` result and act based on that.
451
443
  */
@@ -454,8 +446,8 @@ export class DriveCrypto {
454
446
  decryptionAndVerificationKey: PrivateKey,
455
447
  extraVerificationKeys: PublicKey[],
456
448
  ): Promise<{
457
- hashKey: Uint8Array,
458
- verified: VERIFICATION_STATUS,
449
+ hashKey: Uint8Array;
450
+ verified: VERIFICATION_STATUS;
459
451
  }> {
460
452
  // In the past, we had misunderstanding what key is used to sign hash
461
453
  // key. Originally, it meant to be the node key, which web used for all
@@ -479,7 +471,7 @@ export class DriveCrypto {
479
471
  encryptionKey: PrivateKey,
480
472
  signingKey: PrivateKey,
481
473
  ): Promise<{
482
- armoredExtendedAttributes: string,
474
+ armoredExtendedAttributes: string;
483
475
  }> {
484
476
  const { armoredData: armoredExtendedAttributes } = await this.openPGPCrypto.encryptAndSignArmored(
485
477
  new TextEncoder().encode(extendedAttributes),
@@ -497,8 +489,8 @@ export class DriveCrypto {
497
489
  decryptionKey: PrivateKey,
498
490
  verificationKeys: PublicKey[],
499
491
  ): Promise<{
500
- extendedAttributes: string,
501
- verified: VERIFICATION_STATUS,
492
+ extendedAttributes: string;
493
+ verified: VERIFICATION_STATUS;
502
494
  }> {
503
495
  const { data: decryptedExtendedAttributes, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(
504
496
  armoreExtendedAttributes,
@@ -517,29 +509,29 @@ export class DriveCrypto {
517
509
  encryptionKey: PublicKey,
518
510
  signingKey: PrivateKey,
519
511
  ): Promise<{
520
- base64KeyPacket: string,
521
- base64KeyPacketSignature: string,
512
+ base64KeyPacket: string;
513
+ base64KeyPacketSignature: string;
522
514
  }> {
523
515
  const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(shareSessionKey, encryptionKey);
524
516
  const { signature: keyPacketSignature } = await this.openPGPCrypto.sign(
525
517
  keyPacket,
526
518
  signingKey,
527
519
  SIGNING_CONTEXTS.SHARING_INVITER,
528
- )
520
+ );
529
521
  return {
530
522
  base64KeyPacket: uint8ArrayToBase64String(keyPacket),
531
523
  base64KeyPacketSignature: uint8ArrayToBase64String(keyPacketSignature),
532
- }
524
+ };
533
525
  }
534
526
 
535
527
  async acceptInvitation(
536
528
  base64KeyPacket: string,
537
529
  signingKey: PrivateKey,
538
530
  ): Promise<{
539
- base64SessionKeySignature: string,
531
+ base64SessionKeySignature: string;
540
532
  }> {
541
- const sessionKey = await this.decryptSessionKey(
542
- base64KeyPacket,
533
+ const sessionKey = await this.openPGPCrypto.decryptSessionKey(
534
+ base64StringToUint8Array(base64KeyPacket),
543
535
  signingKey,
544
536
  );
545
537
 
@@ -551,7 +543,7 @@ export class DriveCrypto {
551
543
 
552
544
  return {
553
545
  base64SessionKeySignature: uint8ArrayToBase64String(signature),
554
- }
546
+ };
555
547
  }
556
548
 
557
549
  async encryptExternalInvitation(
@@ -559,7 +551,7 @@ export class DriveCrypto {
559
551
  signingKey: PrivateKey,
560
552
  inviteeEmail: string,
561
553
  ): Promise<{
562
- base64ExternalInvitationSignature: string,
554
+ base64ExternalInvitationSignature: string;
563
555
  }> {
564
556
  const data = inviteeEmail.concat('|').concat(uint8ArrayToBase64String(shareSessionKey.data));
565
557
 
@@ -567,10 +559,10 @@ export class DriveCrypto {
567
559
  new TextEncoder().encode(data),
568
560
  signingKey,
569
561
  SIGNING_CONTEXTS.SHARING_INVITER_EXTERNAL_INVITATION,
570
- )
562
+ );
571
563
  return {
572
564
  base64ExternalInvitationSignature: uint8ArrayToBase64String(externalInviationSignature),
573
- }
565
+ };
574
566
  }
575
567
 
576
568
  async encryptThumbnailBlock(
@@ -578,7 +570,7 @@ export class DriveCrypto {
578
570
  sessionKey: SessionKey,
579
571
  signingKey: PrivateKey,
580
572
  ): Promise<{
581
- encryptedData: Uint8Array,
573
+ encryptedData: Uint8Array;
582
574
  }> {
583
575
  const { encryptedData } = await this.openPGPCrypto.encryptAndSign(
584
576
  thumbnailData,
@@ -597,8 +589,8 @@ export class DriveCrypto {
597
589
  sessionKey: SessionKey,
598
590
  verificationKeys: PublicKey[],
599
591
  ): Promise<{
600
- decryptedThumbnail: Uint8Array,
601
- verified: VERIFICATION_STATUS,
592
+ decryptedThumbnail: Uint8Array;
593
+ verified: VERIFICATION_STATUS;
602
594
  }> {
603
595
  const { data: decryptedThumbnail, verified } = await this.openPGPCrypto.decryptAndVerify(
604
596
  encryptedThumbnail,
@@ -617,8 +609,8 @@ export class DriveCrypto {
617
609
  sessionKey: SessionKey,
618
610
  signingKey: PrivateKey,
619
611
  ): Promise<{
620
- encryptedData: Uint8Array,
621
- armoredSignature: string,
612
+ encryptedData: Uint8Array;
613
+ armoredSignature: string;
622
614
  }> {
623
615
  const { encryptedData, signature } = await this.openPGPCrypto.encryptAndSignDetached(
624
616
  blockData,
@@ -637,45 +629,27 @@ export class DriveCrypto {
637
629
 
638
630
  async decryptBlock(
639
631
  encryptedBlock: Uint8Array,
640
- armoredSignature: string | undefined,
641
- decryptionKey: PrivateKey,
642
632
  sessionKey: SessionKey,
643
- verificationKeys?: PublicKey[],
644
- ): Promise<{
645
- decryptedBlock: Uint8Array,
646
- verified: VERIFICATION_STATUS,
647
- }> {
648
- const signature = armoredSignature ? await this.openPGPCrypto.decryptArmored(
649
- armoredSignature,
650
- [decryptionKey],
651
- ) : undefined;
652
-
653
- const { data: decryptedBlock, verified } = await this.openPGPCrypto.decryptAndVerifyDetached(
633
+ ): Promise<Uint8Array> {
634
+ const { data: decryptedBlock } = await this.openPGPCrypto.decryptAndVerify(
654
635
  encryptedBlock,
655
- signature,
656
636
  sessionKey,
657
- verificationKeys,
637
+ [],
658
638
  );
659
639
 
660
- return {
661
- decryptedBlock,
662
- verified,
663
- };
640
+ return decryptedBlock;
664
641
  }
665
642
 
666
643
  async signManifest(
667
644
  manifest: Uint8Array,
668
645
  signingKey: PrivateKey,
669
646
  ): Promise<{
670
- armoredManifestSignature: string,
647
+ armoredManifestSignature: string;
671
648
  }> {
672
- const { signature: armoredManifestSignature } = await this.openPGPCrypto.signArmored(
673
- manifest,
674
- signingKey,
675
- );
649
+ const { signature: armoredManifestSignature } = await this.openPGPCrypto.signArmored(manifest, signingKey);
676
650
  return {
677
651
  armoredManifestSignature,
678
- }
652
+ };
679
653
  }
680
654
 
681
655
  async verifyManifest(
@@ -683,26 +657,16 @@ export class DriveCrypto {
683
657
  armoredSignature: string,
684
658
  verificationKeys: PublicKey | PublicKey[],
685
659
  ): Promise<{
686
- verified: VERIFICATION_STATUS,
660
+ verified: VERIFICATION_STATUS;
687
661
  }> {
688
- const { verified } = await this.openPGPCrypto.verify(
689
- manifest,
690
- armoredSignature,
691
- verificationKeys,
692
- );
662
+ const { verified } = await this.openPGPCrypto.verify(manifest, armoredSignature, verificationKeys);
693
663
  return {
694
664
  verified,
695
- }
665
+ };
696
666
  }
697
667
 
698
- async decryptShareUrlPassword(
699
- armoredPassword: string,
700
- decryptionKeys: PrivateKey[],
701
- ): Promise<string> {
702
- const password = await this.openPGPCrypto.decryptArmored(
703
- armoredPassword,
704
- decryptionKeys,
705
- );
668
+ async decryptShareUrlPassword(armoredPassword: string, decryptionKeys: PrivateKey[]): Promise<string> {
669
+ const password = await this.openPGPCrypto.decryptArmored(armoredPassword, decryptionKeys);
706
670
  return uint8ArrayToUtf8(password);
707
671
  }
708
672
  }
@@ -9,7 +9,7 @@ type HmacKeyUsage = 'sign' | 'verify';
9
9
  */
10
10
  export const importHmacKey = async (
11
11
  key: Uint8Array,
12
- keyUsage: HmacKeyUsage[] = ['sign', 'verify']
12
+ keyUsage: HmacKeyUsage[] = ['sign', 'verify'],
13
13
  ): Promise<HmacCryptoKey> => {
14
14
  // From https://datatracker.ietf.org/doc/html/rfc2104:
15
15
  // The key for HMAC can be of any length (keys longer than B bytes are first hashed using H).