@protontech/drive-sdk 0.0.10

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 (594) hide show
  1. package/README.md +17 -0
  2. package/dist/cache/index.d.ts +2 -0
  3. package/dist/cache/index.js +6 -0
  4. package/dist/cache/index.js.map +1 -0
  5. package/dist/cache/interface.d.ts +105 -0
  6. package/dist/cache/interface.js +3 -0
  7. package/dist/cache/interface.js.map +1 -0
  8. package/dist/cache/memoryCache.d.ts +18 -0
  9. package/dist/cache/memoryCache.js +78 -0
  10. package/dist/cache/memoryCache.js.map +1 -0
  11. package/dist/cache/memoryCache.test.d.ts +1 -0
  12. package/dist/cache/memoryCache.test.js +121 -0
  13. package/dist/cache/memoryCache.test.js.map +1 -0
  14. package/dist/config.d.ts +2 -0
  15. package/dist/config.js +11 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/crypto/driveCrypto.d.ts +209 -0
  18. package/dist/crypto/driveCrypto.js +364 -0
  19. package/dist/crypto/driveCrypto.js.map +1 -0
  20. package/dist/crypto/driveCrypto.test.d.ts +1 -0
  21. package/dist/crypto/driveCrypto.test.js +42 -0
  22. package/dist/crypto/driveCrypto.test.js.map +1 -0
  23. package/dist/crypto/hmac.d.ts +22 -0
  24. package/dist/crypto/hmac.js +44 -0
  25. package/dist/crypto/hmac.js.map +1 -0
  26. package/dist/crypto/index.d.ts +6 -0
  27. package/dist/crypto/index.js +13 -0
  28. package/dist/crypto/index.js.map +1 -0
  29. package/dist/crypto/interface.d.ts +125 -0
  30. package/dist/crypto/interface.js +10 -0
  31. package/dist/crypto/interface.js.map +1 -0
  32. package/dist/crypto/openPGPCrypto.d.ts +145 -0
  33. package/dist/crypto/openPGPCrypto.js +250 -0
  34. package/dist/crypto/openPGPCrypto.js.map +1 -0
  35. package/dist/crypto/utils.d.ts +2 -0
  36. package/dist/crypto/utils.js +35 -0
  37. package/dist/crypto/utils.js.map +1 -0
  38. package/dist/errors.d.ts +138 -0
  39. package/dist/errors.js +163 -0
  40. package/dist/errors.js.map +1 -0
  41. package/dist/index.d.ts +24 -0
  42. package/dist/index.js +48 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/interface/account.d.ts +36 -0
  45. package/dist/interface/account.js +3 -0
  46. package/dist/interface/account.js.map +1 -0
  47. package/dist/interface/author.d.ts +26 -0
  48. package/dist/interface/author.js +3 -0
  49. package/dist/interface/author.js.map +1 -0
  50. package/dist/interface/devices.d.ts +18 -0
  51. package/dist/interface/devices.js +10 -0
  52. package/dist/interface/devices.js.map +1 -0
  53. package/dist/interface/download.d.ts +29 -0
  54. package/dist/interface/download.js +3 -0
  55. package/dist/interface/download.js.map +1 -0
  56. package/dist/interface/events.d.ts +26 -0
  57. package/dist/interface/events.js +11 -0
  58. package/dist/interface/events.js.map +1 -0
  59. package/dist/interface/httpClient.d.ts +38 -0
  60. package/dist/interface/httpClient.js +3 -0
  61. package/dist/interface/httpClient.js.map +1 -0
  62. package/dist/interface/index.d.ts +43 -0
  63. package/dist/interface/index.js +22 -0
  64. package/dist/interface/index.js.map +1 -0
  65. package/dist/interface/nodes.d.ts +161 -0
  66. package/dist/interface/nodes.js +21 -0
  67. package/dist/interface/nodes.js.map +1 -0
  68. package/dist/interface/result.d.ts +9 -0
  69. package/dist/interface/result.js +11 -0
  70. package/dist/interface/result.js.map +1 -0
  71. package/dist/interface/sharing.d.ts +73 -0
  72. package/dist/interface/sharing.js +9 -0
  73. package/dist/interface/sharing.js.map +1 -0
  74. package/dist/interface/telemetry.d.ts +61 -0
  75. package/dist/interface/telemetry.js +18 -0
  76. package/dist/interface/telemetry.js.map +1 -0
  77. package/dist/interface/thumbnail.d.ts +17 -0
  78. package/dist/interface/thumbnail.js +9 -0
  79. package/dist/interface/thumbnail.js.map +1 -0
  80. package/dist/interface/upload.d.ts +16 -0
  81. package/dist/interface/upload.js +3 -0
  82. package/dist/interface/upload.js.map +1 -0
  83. package/dist/internal/apiService/apiService.d.ts +51 -0
  84. package/dist/internal/apiService/apiService.js +305 -0
  85. package/dist/internal/apiService/apiService.js.map +1 -0
  86. package/dist/internal/apiService/apiService.test.d.ts +1 -0
  87. package/dist/internal/apiService/apiService.test.js +237 -0
  88. package/dist/internal/apiService/apiService.test.js.map +1 -0
  89. package/dist/internal/apiService/coreTypes.d.ts +24438 -0
  90. package/dist/internal/apiService/coreTypes.js +7 -0
  91. package/dist/internal/apiService/coreTypes.js.map +1 -0
  92. package/dist/internal/apiService/driveTypes.d.ts +11840 -0
  93. package/dist/internal/apiService/driveTypes.js +7 -0
  94. package/dist/internal/apiService/driveTypes.js.map +1 -0
  95. package/dist/internal/apiService/errorCodes.d.ts +30 -0
  96. package/dist/internal/apiService/errorCodes.js +11 -0
  97. package/dist/internal/apiService/errorCodes.js.map +1 -0
  98. package/dist/internal/apiService/errors.d.ts +19 -0
  99. package/dist/internal/apiService/errors.js +76 -0
  100. package/dist/internal/apiService/errors.js.map +1 -0
  101. package/dist/internal/apiService/errors.test.d.ts +1 -0
  102. package/dist/internal/apiService/errors.test.js +69 -0
  103. package/dist/internal/apiService/errors.test.js.map +1 -0
  104. package/dist/internal/apiService/index.d.ts +7 -0
  105. package/dist/internal/apiService/index.js +30 -0
  106. package/dist/internal/apiService/index.js.map +1 -0
  107. package/dist/internal/apiService/observerStream.d.ts +3 -0
  108. package/dist/internal/apiService/observerStream.js +15 -0
  109. package/dist/internal/apiService/observerStream.js.map +1 -0
  110. package/dist/internal/apiService/transformers.d.ts +4 -0
  111. package/dist/internal/apiService/transformers.js +48 -0
  112. package/dist/internal/apiService/transformers.js.map +1 -0
  113. package/dist/internal/batchLoading.d.ts +34 -0
  114. package/dist/internal/batchLoading.js +68 -0
  115. package/dist/internal/batchLoading.js.map +1 -0
  116. package/dist/internal/batchLoading.test.d.ts +1 -0
  117. package/dist/internal/batchLoading.test.js +50 -0
  118. package/dist/internal/batchLoading.test.js.map +1 -0
  119. package/dist/internal/devices/apiService.d.ts +38 -0
  120. package/dist/internal/devices/apiService.js +105 -0
  121. package/dist/internal/devices/apiService.js.map +1 -0
  122. package/dist/internal/devices/cryptoService.d.ts +30 -0
  123. package/dist/internal/devices/cryptoService.js +47 -0
  124. package/dist/internal/devices/cryptoService.js.map +1 -0
  125. package/dist/internal/devices/index.d.ts +15 -0
  126. package/dist/internal/devices/index.js +22 -0
  127. package/dist/internal/devices/index.js.map +1 -0
  128. package/dist/internal/devices/interface.d.ts +31 -0
  129. package/dist/internal/devices/interface.js +3 -0
  130. package/dist/internal/devices/interface.js.map +1 -0
  131. package/dist/internal/devices/manager.d.ts +18 -0
  132. package/dist/internal/devices/manager.js +103 -0
  133. package/dist/internal/devices/manager.js.map +1 -0
  134. package/dist/internal/devices/manager.test.d.ts +1 -0
  135. package/dist/internal/devices/manager.test.js +100 -0
  136. package/dist/internal/devices/manager.test.js.map +1 -0
  137. package/dist/internal/download/apiService.d.ts +27 -0
  138. package/dist/internal/download/apiService.js +110 -0
  139. package/dist/internal/download/apiService.js.map +1 -0
  140. package/dist/internal/download/controller.d.ts +8 -0
  141. package/dist/internal/download/controller.js +22 -0
  142. package/dist/internal/download/controller.js.map +1 -0
  143. package/dist/internal/download/cryptoService.d.ts +17 -0
  144. package/dist/internal/download/cryptoService.js +82 -0
  145. package/dist/internal/download/cryptoService.js.map +1 -0
  146. package/dist/internal/download/fileDownloader.d.ts +33 -0
  147. package/dist/internal/download/fileDownloader.js +226 -0
  148. package/dist/internal/download/fileDownloader.js.map +1 -0
  149. package/dist/internal/download/fileDownloader.test.d.ts +1 -0
  150. package/dist/internal/download/fileDownloader.test.js +324 -0
  151. package/dist/internal/download/fileDownloader.test.js.map +1 -0
  152. package/dist/internal/download/index.d.ts +10 -0
  153. package/dist/internal/download/index.js +82 -0
  154. package/dist/internal/download/index.js.map +1 -0
  155. package/dist/internal/download/interface.d.ts +35 -0
  156. package/dist/internal/download/interface.js +3 -0
  157. package/dist/internal/download/interface.js.map +1 -0
  158. package/dist/internal/download/queue.d.ts +5 -0
  159. package/dist/internal/download/queue.js +31 -0
  160. package/dist/internal/download/queue.js.map +1 -0
  161. package/dist/internal/download/telemetry.d.ts +14 -0
  162. package/dist/internal/download/telemetry.js +106 -0
  163. package/dist/internal/download/telemetry.js.map +1 -0
  164. package/dist/internal/download/telemetry.test.d.ts +1 -0
  165. package/dist/internal/download/telemetry.test.js +111 -0
  166. package/dist/internal/download/telemetry.test.js.map +1 -0
  167. package/dist/internal/download/thumbnailDownloader.d.ts +19 -0
  168. package/dist/internal/download/thumbnailDownloader.js +198 -0
  169. package/dist/internal/download/thumbnailDownloader.js.map +1 -0
  170. package/dist/internal/download/thumbnailDownloader.test.d.ts +1 -0
  171. package/dist/internal/download/thumbnailDownloader.test.js +179 -0
  172. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -0
  173. package/dist/internal/errors.d.ts +6 -0
  174. package/dist/internal/errors.js +28 -0
  175. package/dist/internal/errors.js.map +1 -0
  176. package/dist/internal/errors.test.d.ts +1 -0
  177. package/dist/internal/errors.test.js +22 -0
  178. package/dist/internal/errors.test.js.map +1 -0
  179. package/dist/internal/events/apiService.d.ts +18 -0
  180. package/dist/internal/events/apiService.js +81 -0
  181. package/dist/internal/events/apiService.js.map +1 -0
  182. package/dist/internal/events/cache.d.ts +28 -0
  183. package/dist/internal/events/cache.js +67 -0
  184. package/dist/internal/events/cache.js.map +1 -0
  185. package/dist/internal/events/cache.test.d.ts +1 -0
  186. package/dist/internal/events/cache.test.js +43 -0
  187. package/dist/internal/events/cache.test.js.map +1 -0
  188. package/dist/internal/events/coreEventManager.d.ts +25 -0
  189. package/dist/internal/events/coreEventManager.js +63 -0
  190. package/dist/internal/events/coreEventManager.js.map +1 -0
  191. package/dist/internal/events/eventManager.d.ts +62 -0
  192. package/dist/internal/events/eventManager.js +159 -0
  193. package/dist/internal/events/eventManager.js.map +1 -0
  194. package/dist/internal/events/eventManager.test.d.ts +1 -0
  195. package/dist/internal/events/eventManager.test.js +120 -0
  196. package/dist/internal/events/eventManager.test.js.map +1 -0
  197. package/dist/internal/events/index.d.ts +50 -0
  198. package/dist/internal/events/index.js +117 -0
  199. package/dist/internal/events/index.js.map +1 -0
  200. package/dist/internal/events/interface.d.ts +47 -0
  201. package/dist/internal/events/interface.js +12 -0
  202. package/dist/internal/events/interface.js.map +1 -0
  203. package/dist/internal/events/volumeEventManager.d.ts +27 -0
  204. package/dist/internal/events/volumeEventManager.js +69 -0
  205. package/dist/internal/events/volumeEventManager.js.map +1 -0
  206. package/dist/internal/nodes/apiService.d.ts +54 -0
  207. package/dist/internal/nodes/apiService.js +308 -0
  208. package/dist/internal/nodes/apiService.js.map +1 -0
  209. package/dist/internal/nodes/apiService.test.d.ts +1 -0
  210. package/dist/internal/nodes/apiService.test.js +344 -0
  211. package/dist/internal/nodes/apiService.test.js.map +1 -0
  212. package/dist/internal/nodes/cache.d.ts +57 -0
  213. package/dist/internal/nodes/cache.js +226 -0
  214. package/dist/internal/nodes/cache.js.map +1 -0
  215. package/dist/internal/nodes/cache.test.d.ts +1 -0
  216. package/dist/internal/nodes/cache.test.js +160 -0
  217. package/dist/internal/nodes/cache.test.js.map +1 -0
  218. package/dist/internal/nodes/cryptoCache.d.ts +16 -0
  219. package/dist/internal/nodes/cryptoCache.js +50 -0
  220. package/dist/internal/nodes/cryptoCache.js.map +1 -0
  221. package/dist/internal/nodes/cryptoCache.test.d.ts +1 -0
  222. package/dist/internal/nodes/cryptoCache.test.js +79 -0
  223. package/dist/internal/nodes/cryptoCache.test.js.map +1 -0
  224. package/dist/internal/nodes/cryptoService.d.ts +75 -0
  225. package/dist/internal/nodes/cryptoService.js +409 -0
  226. package/dist/internal/nodes/cryptoService.js.map +1 -0
  227. package/dist/internal/nodes/cryptoService.test.d.ts +1 -0
  228. package/dist/internal/nodes/cryptoService.test.js +698 -0
  229. package/dist/internal/nodes/cryptoService.test.js.map +1 -0
  230. package/dist/internal/nodes/events.d.ts +91 -0
  231. package/dist/internal/nodes/events.js +243 -0
  232. package/dist/internal/nodes/events.js.map +1 -0
  233. package/dist/internal/nodes/events.test.d.ts +1 -0
  234. package/dist/internal/nodes/events.test.js +318 -0
  235. package/dist/internal/nodes/events.test.js.map +1 -0
  236. package/dist/internal/nodes/extendedAttributes.d.ts +23 -0
  237. package/dist/internal/nodes/extendedAttributes.js +117 -0
  238. package/dist/internal/nodes/extendedAttributes.js.map +1 -0
  239. package/dist/internal/nodes/extendedAttributes.test.d.ts +1 -0
  240. package/dist/internal/nodes/extendedAttributes.test.js +176 -0
  241. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -0
  242. package/dist/internal/nodes/index.d.ts +26 -0
  243. package/dist/internal/nodes/index.js +40 -0
  244. package/dist/internal/nodes/index.js.map +1 -0
  245. package/dist/internal/nodes/index.test.d.ts +1 -0
  246. package/dist/internal/nodes/index.test.js +112 -0
  247. package/dist/internal/nodes/index.test.js.map +1 -0
  248. package/dist/internal/nodes/interface.d.ts +135 -0
  249. package/dist/internal/nodes/interface.js +3 -0
  250. package/dist/internal/nodes/interface.js.map +1 -0
  251. package/dist/internal/nodes/mediaTypes.d.ts +2 -0
  252. package/dist/internal/nodes/mediaTypes.js +13 -0
  253. package/dist/internal/nodes/mediaTypes.js.map +1 -0
  254. package/dist/internal/nodes/nodesAccess.d.ts +49 -0
  255. package/dist/internal/nodes/nodesAccess.js +332 -0
  256. package/dist/internal/nodes/nodesAccess.js.map +1 -0
  257. package/dist/internal/nodes/nodesAccess.test.d.ts +1 -0
  258. package/dist/internal/nodes/nodesAccess.test.js +487 -0
  259. package/dist/internal/nodes/nodesAccess.test.js.map +1 -0
  260. package/dist/internal/nodes/nodesManagement.d.ts +33 -0
  261. package/dist/internal/nodes/nodesManagement.js +222 -0
  262. package/dist/internal/nodes/nodesManagement.js.map +1 -0
  263. package/dist/internal/nodes/nodesManagement.test.d.ts +1 -0
  264. package/dist/internal/nodes/nodesManagement.test.js +178 -0
  265. package/dist/internal/nodes/nodesManagement.test.js.map +1 -0
  266. package/dist/internal/nodes/nodesRevisions.d.ts +18 -0
  267. package/dist/internal/nodes/nodesRevisions.js +55 -0
  268. package/dist/internal/nodes/nodesRevisions.js.map +1 -0
  269. package/dist/internal/nodes/validations.d.ts +4 -0
  270. package/dist/internal/nodes/validations.js +21 -0
  271. package/dist/internal/nodes/validations.js.map +1 -0
  272. package/dist/internal/photos/albums.d.ts +13 -0
  273. package/dist/internal/photos/albums.js +30 -0
  274. package/dist/internal/photos/albums.js.map +1 -0
  275. package/dist/internal/photos/apiService.d.ts +8 -0
  276. package/dist/internal/photos/apiService.js +18 -0
  277. package/dist/internal/photos/apiService.js.map +1 -0
  278. package/dist/internal/photos/cache.d.ts +6 -0
  279. package/dist/internal/photos/cache.js +15 -0
  280. package/dist/internal/photos/cache.js.map +1 -0
  281. package/dist/internal/photos/index.d.ts +9 -0
  282. package/dist/internal/photos/index.js +18 -0
  283. package/dist/internal/photos/index.js.map +1 -0
  284. package/dist/internal/photos/interface.d.ts +6 -0
  285. package/dist/internal/photos/interface.js +3 -0
  286. package/dist/internal/photos/interface.js.map +1 -0
  287. package/dist/internal/photos/photosTimeline.d.ts +10 -0
  288. package/dist/internal/photos/photosTimeline.js +20 -0
  289. package/dist/internal/photos/photosTimeline.js.map +1 -0
  290. package/dist/internal/sdkEvents.d.ts +12 -0
  291. package/dist/internal/sdkEvents.js +44 -0
  292. package/dist/internal/sdkEvents.js.map +1 -0
  293. package/dist/internal/sdkEvents.test.d.ts +1 -0
  294. package/dist/internal/sdkEvents.test.js +45 -0
  295. package/dist/internal/sdkEvents.test.js.map +1 -0
  296. package/dist/internal/shares/apiService.d.ts +51 -0
  297. package/dist/internal/shares/apiService.js +128 -0
  298. package/dist/internal/shares/apiService.js.map +1 -0
  299. package/dist/internal/shares/cache.d.ts +15 -0
  300. package/dist/internal/shares/cache.js +63 -0
  301. package/dist/internal/shares/cache.js.map +1 -0
  302. package/dist/internal/shares/cache.test.d.ts +1 -0
  303. package/dist/internal/shares/cache.test.js +54 -0
  304. package/dist/internal/shares/cache.test.js.map +1 -0
  305. package/dist/internal/shares/cryptoCache.d.ts +20 -0
  306. package/dist/internal/shares/cryptoCache.js +35 -0
  307. package/dist/internal/shares/cryptoCache.js.map +1 -0
  308. package/dist/internal/shares/cryptoCache.test.d.ts +1 -0
  309. package/dist/internal/shares/cryptoCache.test.js +58 -0
  310. package/dist/internal/shares/cryptoCache.test.js.map +1 -0
  311. package/dist/internal/shares/cryptoService.d.ts +42 -0
  312. package/dist/internal/shares/cryptoService.js +126 -0
  313. package/dist/internal/shares/cryptoService.js.map +1 -0
  314. package/dist/internal/shares/cryptoService.test.d.ts +1 -0
  315. package/dist/internal/shares/cryptoService.test.js +120 -0
  316. package/dist/internal/shares/cryptoService.test.js.map +1 -0
  317. package/dist/internal/shares/index.d.ts +15 -0
  318. package/dist/internal/shares/index.js +26 -0
  319. package/dist/internal/shares/index.js.map +1 -0
  320. package/dist/internal/shares/interface.d.ts +94 -0
  321. package/dist/internal/shares/interface.js +11 -0
  322. package/dist/internal/shares/interface.js.map +1 -0
  323. package/dist/internal/shares/manager.d.ts +68 -0
  324. package/dist/internal/shares/manager.js +186 -0
  325. package/dist/internal/shares/manager.js.map +1 -0
  326. package/dist/internal/shares/manager.test.d.ts +1 -0
  327. package/dist/internal/shares/manager.test.js +176 -0
  328. package/dist/internal/shares/manager.test.js.map +1 -0
  329. package/dist/internal/sharing/apiService.d.ts +80 -0
  330. package/dist/internal/sharing/apiService.js +325 -0
  331. package/dist/internal/sharing/apiService.js.map +1 -0
  332. package/dist/internal/sharing/cache.d.ts +37 -0
  333. package/dist/internal/sharing/cache.js +105 -0
  334. package/dist/internal/sharing/cache.js.map +1 -0
  335. package/dist/internal/sharing/cache.test.d.ts +1 -0
  336. package/dist/internal/sharing/cache.test.js +82 -0
  337. package/dist/internal/sharing/cache.test.js.map +1 -0
  338. package/dist/internal/sharing/cryptoService.d.ts +112 -0
  339. package/dist/internal/sharing/cryptoService.js +269 -0
  340. package/dist/internal/sharing/cryptoService.js.map +1 -0
  341. package/dist/internal/sharing/events.d.ts +57 -0
  342. package/dist/internal/sharing/events.js +153 -0
  343. package/dist/internal/sharing/events.js.map +1 -0
  344. package/dist/internal/sharing/events.test.d.ts +1 -0
  345. package/dist/internal/sharing/events.test.js +246 -0
  346. package/dist/internal/sharing/events.test.js.map +1 -0
  347. package/dist/internal/sharing/index.d.ts +20 -0
  348. package/dist/internal/sharing/index.js +30 -0
  349. package/dist/internal/sharing/index.js.map +1 -0
  350. package/dist/internal/sharing/interface.d.ts +169 -0
  351. package/dist/internal/sharing/interface.js +9 -0
  352. package/dist/internal/sharing/interface.js.map +1 -0
  353. package/dist/internal/sharing/sharingAccess.d.ts +32 -0
  354. package/dist/internal/sharing/sharingAccess.js +119 -0
  355. package/dist/internal/sharing/sharingAccess.js.map +1 -0
  356. package/dist/internal/sharing/sharingAccess.test.d.ts +1 -0
  357. package/dist/internal/sharing/sharingAccess.test.js +84 -0
  358. package/dist/internal/sharing/sharingAccess.test.js.map +1 -0
  359. package/dist/internal/sharing/sharingManagement.d.ts +43 -0
  360. package/dist/internal/sharing/sharingManagement.js +439 -0
  361. package/dist/internal/sharing/sharingManagement.js.map +1 -0
  362. package/dist/internal/sharing/sharingManagement.test.d.ts +1 -0
  363. package/dist/internal/sharing/sharingManagement.test.js +788 -0
  364. package/dist/internal/sharing/sharingManagement.test.js.map +1 -0
  365. package/dist/internal/uids.d.ts +38 -0
  366. package/dist/internal/uids.js +85 -0
  367. package/dist/internal/uids.js.map +1 -0
  368. package/dist/internal/upload/apiService.d.ts +65 -0
  369. package/dist/internal/upload/apiService.js +137 -0
  370. package/dist/internal/upload/apiService.js.map +1 -0
  371. package/dist/internal/upload/blockVerifier.d.ts +16 -0
  372. package/dist/internal/upload/blockVerifier.js +33 -0
  373. package/dist/internal/upload/blockVerifier.js.map +1 -0
  374. package/dist/internal/upload/chunkStreamReader.d.ts +13 -0
  375. package/dist/internal/upload/chunkStreamReader.js +46 -0
  376. package/dist/internal/upload/chunkStreamReader.js.map +1 -0
  377. package/dist/internal/upload/chunkStreamReader.test.d.ts +1 -0
  378. package/dist/internal/upload/chunkStreamReader.test.js +75 -0
  379. package/dist/internal/upload/chunkStreamReader.test.js.map +1 -0
  380. package/dist/internal/upload/controller.d.ts +8 -0
  381. package/dist/internal/upload/controller.js +25 -0
  382. package/dist/internal/upload/controller.js.map +1 -0
  383. package/dist/internal/upload/cryptoService.d.ts +29 -0
  384. package/dist/internal/upload/cryptoService.js +104 -0
  385. package/dist/internal/upload/cryptoService.js.map +1 -0
  386. package/dist/internal/upload/digests.d.ts +8 -0
  387. package/dist/internal/upload/digests.js +22 -0
  388. package/dist/internal/upload/digests.js.map +1 -0
  389. package/dist/internal/upload/fileUploader.d.ts +65 -0
  390. package/dist/internal/upload/fileUploader.js +463 -0
  391. package/dist/internal/upload/fileUploader.js.map +1 -0
  392. package/dist/internal/upload/fileUploader.test.d.ts +1 -0
  393. package/dist/internal/upload/fileUploader.test.js +393 -0
  394. package/dist/internal/upload/fileUploader.test.js.map +1 -0
  395. package/dist/internal/upload/index.d.ts +16 -0
  396. package/dist/internal/upload/index.js +77 -0
  397. package/dist/internal/upload/index.js.map +1 -0
  398. package/dist/internal/upload/interface.d.ts +117 -0
  399. package/dist/internal/upload/interface.js +3 -0
  400. package/dist/internal/upload/interface.js.map +1 -0
  401. package/dist/internal/upload/manager.d.ts +31 -0
  402. package/dist/internal/upload/manager.js +250 -0
  403. package/dist/internal/upload/manager.js.map +1 -0
  404. package/dist/internal/upload/manager.test.d.ts +1 -0
  405. package/dist/internal/upload/manager.test.js +349 -0
  406. package/dist/internal/upload/manager.test.js.map +1 -0
  407. package/dist/internal/upload/queue.d.ts +5 -0
  408. package/dist/internal/upload/queue.js +32 -0
  409. package/dist/internal/upload/queue.js.map +1 -0
  410. package/dist/internal/upload/telemetry.d.ts +15 -0
  411. package/dist/internal/upload/telemetry.js +111 -0
  412. package/dist/internal/upload/telemetry.js.map +1 -0
  413. package/dist/internal/upload/telemetry.test.d.ts +1 -0
  414. package/dist/internal/upload/telemetry.test.js +107 -0
  415. package/dist/internal/upload/telemetry.test.js.map +1 -0
  416. package/dist/internal/utils.d.ts +1 -0
  417. package/dist/internal/utils.js +13 -0
  418. package/dist/internal/utils.js.map +1 -0
  419. package/dist/internal/wait.d.ts +3 -0
  420. package/dist/internal/wait.js +28 -0
  421. package/dist/internal/wait.js.map +1 -0
  422. package/dist/internal/wait.test.d.ts +1 -0
  423. package/dist/internal/wait.test.js +21 -0
  424. package/dist/internal/wait.test.js.map +1 -0
  425. package/dist/protonDriveClient.d.ts +593 -0
  426. package/dist/protonDriveClient.js +768 -0
  427. package/dist/protonDriveClient.js.map +1 -0
  428. package/dist/protonDrivePhotosClient.d.ts +16 -0
  429. package/dist/protonDrivePhotosClient.js +46 -0
  430. package/dist/protonDrivePhotosClient.js.map +1 -0
  431. package/dist/telemetry.d.ts +187 -0
  432. package/dist/telemetry.js +297 -0
  433. package/dist/telemetry.js.map +1 -0
  434. package/dist/tests/logger.d.ts +2 -0
  435. package/dist/tests/logger.js +12 -0
  436. package/dist/tests/logger.js.map +1 -0
  437. package/dist/tests/telemetry.d.ts +2 -0
  438. package/dist/tests/telemetry.js +11 -0
  439. package/dist/tests/telemetry.js.map +1 -0
  440. package/dist/transformers.d.ts +17 -0
  441. package/dist/transformers.js +77 -0
  442. package/dist/transformers.js.map +1 -0
  443. package/dist/version.d.ts +1 -0
  444. package/dist/version.js +6 -0
  445. package/dist/version.js.map +1 -0
  446. package/package.json +49 -0
  447. package/src/cache/index.ts +2 -0
  448. package/src/cache/interface.ts +104 -0
  449. package/src/cache/memoryCache.test.ts +150 -0
  450. package/src/cache/memoryCache.ts +85 -0
  451. package/src/config.ts +9 -0
  452. package/src/crypto/driveCrypto.test.ts +45 -0
  453. package/src/crypto/driveCrypto.ts +696 -0
  454. package/src/crypto/hmac.ts +46 -0
  455. package/src/crypto/index.ts +6 -0
  456. package/src/crypto/interface.ts +230 -0
  457. package/src/crypto/openPGPCrypto.ts +398 -0
  458. package/src/crypto/utils.ts +40 -0
  459. package/src/errors.ts +168 -0
  460. package/src/index.ts +30 -0
  461. package/src/interface/account.ts +38 -0
  462. package/src/interface/author.ts +29 -0
  463. package/src/interface/devices.ts +21 -0
  464. package/src/interface/download.ts +32 -0
  465. package/src/interface/events.ts +30 -0
  466. package/src/interface/httpClient.ts +42 -0
  467. package/src/interface/index.ts +46 -0
  468. package/src/interface/nodes.ts +168 -0
  469. package/src/interface/result.ts +11 -0
  470. package/src/interface/sharing.ts +87 -0
  471. package/src/interface/telemetry.ts +107 -0
  472. package/src/interface/thumbnail.ts +14 -0
  473. package/src/interface/upload.ts +19 -0
  474. package/src/internal/apiService/apiService.test.ts +285 -0
  475. package/src/internal/apiService/apiService.ts +353 -0
  476. package/src/internal/apiService/coreTypes.ts +24439 -0
  477. package/src/internal/apiService/driveTypes.ts +11841 -0
  478. package/src/internal/apiService/errorCodes.ts +38 -0
  479. package/src/internal/apiService/errors.test.ts +63 -0
  480. package/src/internal/apiService/errors.ts +91 -0
  481. package/src/internal/apiService/index.ts +7 -0
  482. package/src/internal/apiService/observerStream.ts +10 -0
  483. package/src/internal/apiService/transformers.ts +45 -0
  484. package/src/internal/batchLoading.test.ts +58 -0
  485. package/src/internal/batchLoading.ts +74 -0
  486. package/src/internal/devices/apiService.ts +142 -0
  487. package/src/internal/devices/cryptoService.ts +65 -0
  488. package/src/internal/devices/index.ts +31 -0
  489. package/src/internal/devices/interface.ts +28 -0
  490. package/src/internal/devices/manager.test.ts +129 -0
  491. package/src/internal/devices/manager.ts +113 -0
  492. package/src/internal/download/apiService.ts +145 -0
  493. package/src/internal/download/controller.ts +22 -0
  494. package/src/internal/download/cryptoService.ts +96 -0
  495. package/src/internal/download/fileDownloader.test.ts +381 -0
  496. package/src/internal/download/fileDownloader.ts +266 -0
  497. package/src/internal/download/index.ts +122 -0
  498. package/src/internal/download/interface.ts +38 -0
  499. package/src/internal/download/queue.ts +30 -0
  500. package/src/internal/download/telemetry.test.ts +134 -0
  501. package/src/internal/download/telemetry.ts +115 -0
  502. package/src/internal/download/thumbnailDownloader.test.ts +226 -0
  503. package/src/internal/download/thumbnailDownloader.ts +250 -0
  504. package/src/internal/errors.test.ts +21 -0
  505. package/src/internal/errors.ts +28 -0
  506. package/src/internal/events/apiService.ts +87 -0
  507. package/src/internal/events/cache.test.ts +47 -0
  508. package/src/internal/events/cache.ts +80 -0
  509. package/src/internal/events/coreEventManager.ts +69 -0
  510. package/src/internal/events/eventManager.test.ts +139 -0
  511. package/src/internal/events/eventManager.ts +168 -0
  512. package/src/internal/events/index.ts +131 -0
  513. package/src/internal/events/interface.ts +51 -0
  514. package/src/internal/events/volumeEventManager.ts +74 -0
  515. package/src/internal/nodes/apiService.test.ts +394 -0
  516. package/src/internal/nodes/apiService.ts +455 -0
  517. package/src/internal/nodes/cache.test.ts +197 -0
  518. package/src/internal/nodes/cache.ts +240 -0
  519. package/src/internal/nodes/cryptoCache.test.ts +92 -0
  520. package/src/internal/nodes/cryptoCache.ts +47 -0
  521. package/src/internal/nodes/cryptoService.test.ts +814 -0
  522. package/src/internal/nodes/cryptoService.ts +550 -0
  523. package/src/internal/nodes/events.test.ts +383 -0
  524. package/src/internal/nodes/events.ts +271 -0
  525. package/src/internal/nodes/extendedAttributes.test.ts +177 -0
  526. package/src/internal/nodes/extendedAttributes.ts +180 -0
  527. package/src/internal/nodes/index.test.ts +135 -0
  528. package/src/internal/nodes/index.ts +52 -0
  529. package/src/internal/nodes/interface.ts +152 -0
  530. package/src/internal/nodes/mediaTypes.ts +10 -0
  531. package/src/internal/nodes/nodesAccess.test.ts +555 -0
  532. package/src/internal/nodes/nodesAccess.ts +360 -0
  533. package/src/internal/nodes/nodesManagement.test.ts +221 -0
  534. package/src/internal/nodes/nodesManagement.ts +272 -0
  535. package/src/internal/nodes/nodesRevisions.ts +58 -0
  536. package/src/internal/nodes/validations.ts +26 -0
  537. package/src/internal/photos/albums.ts +29 -0
  538. package/src/internal/photos/apiService.ts +16 -0
  539. package/src/internal/photos/cache.ts +11 -0
  540. package/src/internal/photos/index.ts +23 -0
  541. package/src/internal/photos/interface.ts +7 -0
  542. package/src/internal/photos/photosTimeline.ts +18 -0
  543. package/src/internal/sdkEvents.test.ts +55 -0
  544. package/src/internal/sdkEvents.ts +52 -0
  545. package/src/internal/shares/apiService.ts +176 -0
  546. package/src/internal/shares/cache.test.ts +58 -0
  547. package/src/internal/shares/cache.ts +64 -0
  548. package/src/internal/shares/cryptoCache.test.ts +70 -0
  549. package/src/internal/shares/cryptoCache.ts +35 -0
  550. package/src/internal/shares/cryptoService.test.ts +137 -0
  551. package/src/internal/shares/cryptoService.ts +143 -0
  552. package/src/internal/shares/index.ts +35 -0
  553. package/src/internal/shares/interface.ts +104 -0
  554. package/src/internal/shares/manager.test.ts +210 -0
  555. package/src/internal/shares/manager.ts +213 -0
  556. package/src/internal/sharing/apiService.ts +483 -0
  557. package/src/internal/sharing/cache.test.ts +99 -0
  558. package/src/internal/sharing/cache.ts +109 -0
  559. package/src/internal/sharing/cryptoService.ts +378 -0
  560. package/src/internal/sharing/events.test.ts +268 -0
  561. package/src/internal/sharing/events.ts +166 -0
  562. package/src/internal/sharing/index.ts +43 -0
  563. package/src/internal/sharing/interface.ts +177 -0
  564. package/src/internal/sharing/sharingAccess.test.ts +102 -0
  565. package/src/internal/sharing/sharingAccess.ts +133 -0
  566. package/src/internal/sharing/sharingManagement.test.ts +895 -0
  567. package/src/internal/sharing/sharingManagement.ts +521 -0
  568. package/src/internal/uids.ts +83 -0
  569. package/src/internal/upload/apiService.ts +243 -0
  570. package/src/internal/upload/blockVerifier.ts +40 -0
  571. package/src/internal/upload/chunkStreamReader.test.ts +89 -0
  572. package/src/internal/upload/chunkStreamReader.ts +49 -0
  573. package/src/internal/upload/controller.ts +25 -0
  574. package/src/internal/upload/cryptoService.ts +162 -0
  575. package/src/internal/upload/digests.ts +18 -0
  576. package/src/internal/upload/fileUploader.test.ts +513 -0
  577. package/src/internal/upload/fileUploader.ts +576 -0
  578. package/src/internal/upload/index.ts +126 -0
  579. package/src/internal/upload/interface.ts +128 -0
  580. package/src/internal/upload/manager.test.ts +390 -0
  581. package/src/internal/upload/manager.ts +320 -0
  582. package/src/internal/upload/queue.ts +31 -0
  583. package/src/internal/upload/telemetry.test.ts +129 -0
  584. package/src/internal/upload/telemetry.ts +121 -0
  585. package/src/internal/utils.ts +9 -0
  586. package/src/internal/wait.test.ts +21 -0
  587. package/src/internal/wait.ts +26 -0
  588. package/src/protonDriveClient.ts +861 -0
  589. package/src/protonDrivePhotosClient.ts +56 -0
  590. package/src/telemetry.ts +346 -0
  591. package/src/tests/logger.ts +10 -0
  592. package/src/tests/telemetry.ts +9 -0
  593. package/src/transformers.ts +98 -0
  594. package/src/version.ts +4 -0
@@ -0,0 +1,364 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arrayToHexString = exports.DriveCrypto = void 0;
4
+ exports.uint8ArrayToUtf8 = uint8ArrayToUtf8;
5
+ const utils_1 = require("./utils");
6
+ // TODO: Switch to CryptoProxy module once available.
7
+ const hmac_1 = require("./hmac");
8
+ var SIGNING_CONTEXTS;
9
+ (function (SIGNING_CONTEXTS) {
10
+ SIGNING_CONTEXTS["SHARING_INVITER"] = "drive.share-member.inviter";
11
+ SIGNING_CONTEXTS["SHARING_INVITER_EXTERNAL_INVITATION"] = "drive.share-member.external-invitation";
12
+ SIGNING_CONTEXTS["SHARING_MEMBER"] = "drive.share-member.member";
13
+ })(SIGNING_CONTEXTS || (SIGNING_CONTEXTS = {}));
14
+ /**
15
+ * Drive crypto layer to provide general operations for Drive crypto.
16
+ *
17
+ * This layer focuses on providing general Drive crypto functions. Only
18
+ * high-level functions that are required on multiple places should be
19
+ * peresent. E.g., no specific implementation how keys are encrypted,
20
+ * but we do share same key generation across shares and nodes modules,
21
+ * for example, which we can generelise here and in each module just
22
+ * call with specific arguments.
23
+ */
24
+ class DriveCrypto {
25
+ openPGPCrypto;
26
+ srpModule;
27
+ constructor(openPGPCrypto, srpModule) {
28
+ this.openPGPCrypto = openPGPCrypto;
29
+ this.srpModule = srpModule;
30
+ this.openPGPCrypto = openPGPCrypto;
31
+ this.srpModule = srpModule;
32
+ }
33
+ /**
34
+ * It generates passphrase and key that is encrypted with the
35
+ * generated passphrase.
36
+ *
37
+ * `encrpytionKeys` are used to generate session key, which is
38
+ * also used to encrypt the passphrase. The encrypted passphrase
39
+ * is signed with `signingKey`.
40
+ *
41
+ * @returns Object with:
42
+ * - encrypted (armored) data (key, passphrase and passphrase
43
+ * signature) for sending to the server
44
+ * - decrypted data (key, sessionKey) for crypto usage
45
+ */
46
+ async generateKey(encryptionKeys, signingKey) {
47
+ const passphrase = this.openPGPCrypto.generatePassphrase();
48
+ const [{ privateKey, armoredKey }, passphraseSessionKey] = await Promise.all([
49
+ this.openPGPCrypto.generateKey(passphrase),
50
+ this.openPGPCrypto.generateSessionKey(encryptionKeys),
51
+ ]);
52
+ const { armoredPassphrase, armoredPassphraseSignature } = await this.encryptPassphrase(passphrase, passphraseSessionKey, encryptionKeys, signingKey);
53
+ return {
54
+ encrypted: {
55
+ armoredKey,
56
+ armoredPassphrase,
57
+ armoredPassphraseSignature,
58
+ },
59
+ decrypted: {
60
+ passphrase,
61
+ key: privateKey,
62
+ passphraseSessionKey,
63
+ },
64
+ };
65
+ }
66
+ ;
67
+ /**
68
+ * It generates content key from node key for encrypting file blocks.
69
+ *
70
+ * @param encryptionKey - Its own node key.
71
+ * @returns Object with serialised key packet and decrypted session key.
72
+ */
73
+ async generateContentKey(encryptionKey) {
74
+ const contentKeyPacketSessionKey = await this.openPGPCrypto.generateSessionKey([encryptionKey]);
75
+ const { signature: armoredContentKeyPacketSignature } = await this.openPGPCrypto.signArmored(contentKeyPacketSessionKey.data, [encryptionKey]);
76
+ const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(contentKeyPacketSessionKey, [encryptionKey]);
77
+ return {
78
+ encrypted: {
79
+ base64ContentKeyPacket: (0, utils_1.uint8ArrayToBase64String)(keyPacket),
80
+ armoredContentKeyPacketSignature,
81
+ },
82
+ decrypted: {
83
+ contentKeyPacketSessionKey,
84
+ }
85
+ };
86
+ }
87
+ /**
88
+ * It encrypts passphrase with provided session and encryption keys.
89
+ * This should be used only for re-encrypting the passphrase with
90
+ * different key (e.g., moving the node to different parent).
91
+ *
92
+ * @returns Object with armored passphrase and passphrase signature.
93
+ */
94
+ async encryptPassphrase(passphrase, sessionKey, encryptionKeys, signingKey) {
95
+ const { armoredData: armoredPassphrase, armoredSignature: armoredPassphraseSignature } = await this.openPGPCrypto.encryptAndSignDetachedArmored(new TextEncoder().encode(passphrase), sessionKey, encryptionKeys, signingKey);
96
+ return {
97
+ armoredPassphrase,
98
+ armoredPassphraseSignature,
99
+ };
100
+ }
101
+ /**
102
+ * It decrypts key generated via `generateKey`.
103
+ *
104
+ * Armored data are passed from the server. `decryptionKeys` are used
105
+ * to decrypt the session key from the `armoredPassphrase`. Then the
106
+ * session key is used with `verificationKeys` to decrypt and verify
107
+ * the passphrase. Finally, the armored key is decrypted.
108
+ *
109
+ * Note: The function doesn't throw in case of verification issue.
110
+ * You have to read `verified` result and act based on that.
111
+ *
112
+ * @returns key and sessionKey for crypto usage, and verification status
113
+ */
114
+ async decryptKey(armoredKey, armoredPassphrase, armoredPassphraseSignature, decryptionKeys, verificationKeys) {
115
+ const passphraseSessionKey = await this.decryptSessionKey(armoredPassphrase, decryptionKeys);
116
+ const { data: decryptedPassphrase, verified } = await this.openPGPCrypto.decryptArmoredAndVerifyDetached(armoredPassphrase, armoredPassphraseSignature, passphraseSessionKey, verificationKeys);
117
+ const passphrase = uint8ArrayToUtf8(decryptedPassphrase);
118
+ const key = await this.openPGPCrypto.decryptKey(armoredKey, passphrase);
119
+ return {
120
+ passphrase,
121
+ key,
122
+ passphraseSessionKey,
123
+ verified,
124
+ };
125
+ }
126
+ /**
127
+ * It encrypts session key with provided encryption key.
128
+ */
129
+ async encryptSessionKey(sessionKey, encryptionKey) {
130
+ const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(sessionKey, [encryptionKey]);
131
+ return {
132
+ base64KeyPacket: (0, utils_1.uint8ArrayToBase64String)(keyPacket),
133
+ };
134
+ }
135
+ /**
136
+ * It encrypts password with provided address key that can be used to
137
+ * manage the public link, encrypts share passphrase session key using
138
+ * provided bcrypt passphrase and generates SRP verifier.
139
+ */
140
+ async encryptPublicLinkPasswordAndSessionKey(password, addressKey, bcryptPassphrase, sharePassphraseSessionKey) {
141
+ const [{ armoredData: armoredPassword }, { keyPacket }, srp] = await Promise.all([
142
+ this.openPGPCrypto.encryptArmored(new TextEncoder().encode(password), [addressKey]),
143
+ this.openPGPCrypto.encryptSessionKeyWithPassword(sharePassphraseSessionKey, bcryptPassphrase),
144
+ this.srpModule.getSrpVerifier(password),
145
+ ]);
146
+ return {
147
+ armoredPassword,
148
+ base64SharePassphraseKeyPacket: (0, utils_1.uint8ArrayToBase64String)(keyPacket),
149
+ srp,
150
+ };
151
+ }
152
+ /**
153
+ * It decrypts session key from armored data.
154
+ *
155
+ * `decryptionKeys` are used to decrypt the session key from the `armoredData`.
156
+ */
157
+ async decryptSessionKey(armoredData, decryptionKeys) {
158
+ const sessionKey = await this.openPGPCrypto.decryptArmoredSessionKey(armoredData, decryptionKeys);
159
+ return sessionKey;
160
+ }
161
+ async decryptAndVerifySessionKey(base64data, armoredSignature, decryptionKeys, verificationKeys) {
162
+ const data = (0, utils_1.base64StringToUint8Array)(base64data);
163
+ const sessionKey = await this.openPGPCrypto.decryptSessionKey(data, decryptionKeys);
164
+ let verified;
165
+ if (armoredSignature) {
166
+ const result = await this.openPGPCrypto.verify(sessionKey.data, armoredSignature, verificationKeys);
167
+ verified = result.verified;
168
+ }
169
+ return {
170
+ sessionKey,
171
+ verified,
172
+ };
173
+ }
174
+ /**
175
+ * It decrypts key similarly like `decryptKey`, but without signature
176
+ * verification. This is used for invitations.
177
+ */
178
+ async decryptUnsignedKey(armoredKey, armoredPassphrase, decryptionKeys) {
179
+ const { data: decryptedPassphrase } = await this.openPGPCrypto.decryptArmoredAndVerify(armoredPassphrase, decryptionKeys, []);
180
+ const passphrase = uint8ArrayToUtf8(decryptedPassphrase);
181
+ const key = await this.openPGPCrypto.decryptKey(armoredKey, passphrase);
182
+ return key;
183
+ }
184
+ /**
185
+ * It encrypts and armors signature with provided session and encryption keys.
186
+ */
187
+ async encryptSignature(signature, encryptionKey, sessionKey) {
188
+ const { armoredData: armoredSignature } = await this.openPGPCrypto.encryptArmored(signature, [encryptionKey], sessionKey);
189
+ return {
190
+ armoredSignature,
191
+ };
192
+ }
193
+ /**
194
+ * It generates random 32 bytes that are encrypted and signed with
195
+ * the provided key.
196
+ */
197
+ async generateHashKey(encryptionAndSigningKey) {
198
+ // Once all clients can use non-ascii bytes, switch to simple
199
+ // generating of random bytes without encoding it into base64:
200
+ //const passphrase crypto.getRandomValues(new Uint8Array(32));
201
+ const passphrase = this.openPGPCrypto.generatePassphrase();
202
+ const hashKey = new TextEncoder().encode(passphrase);
203
+ const { armoredData: armoredHashKey } = await this.openPGPCrypto.encryptAndSignArmored(hashKey, undefined, [encryptionAndSigningKey], encryptionAndSigningKey);
204
+ return {
205
+ armoredHashKey,
206
+ hashKey,
207
+ };
208
+ }
209
+ async generateLookupHash(newName, parentHashKey) {
210
+ const key = await (0, hmac_1.importHmacKey)(parentHashKey);
211
+ const signature = await (0, hmac_1.computeHmacSignature)(key, new TextEncoder().encode(newName));
212
+ return (0, exports.arrayToHexString)(signature);
213
+ }
214
+ /**
215
+ * It converts node name into bytes array and encrypts and signs
216
+ * with provided keys.
217
+ *
218
+ * The function accepts either encryption or session key. Use encryption
219
+ * key if you want to encrypt the name for the new node. Use session key
220
+ * if you want to encrypt the new name for the existing node.
221
+ */
222
+ async encryptNodeName(nodeName, sessionKey, encryptionKey, signingKey) {
223
+ if (!sessionKey && !encryptionKey) {
224
+ throw new Error('Neither session nor encryption key provided for encrypting node name');
225
+ }
226
+ const { armoredData: armoredNodeName } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(nodeName), sessionKey, encryptionKey ? [encryptionKey] : [], signingKey);
227
+ return {
228
+ armoredNodeName,
229
+ };
230
+ }
231
+ /**
232
+ * It decrypts armored node name and verifies embeded signature.
233
+ *
234
+ * Note: The function doesn't throw in case of verification issue.
235
+ * You have to read `verified` result and act based on that.
236
+ */
237
+ async decryptNodeName(armoredNodeName, decryptionKey, verificationKeys) {
238
+ const { data: name, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(armoredNodeName, [decryptionKey], verificationKeys);
239
+ return {
240
+ name: uint8ArrayToUtf8(name),
241
+ verified,
242
+ };
243
+ }
244
+ /**
245
+ * It decrypts armored node hash key and verifies embeded signature.
246
+ *
247
+ * Note: The function doesn't throw in case of verification issue.
248
+ * You have to read `verified` result and act based on that.
249
+ */
250
+ async decryptNodeHashKey(armoredHashKey, decryptionAndVerificationKey, extraVerificationKeys) {
251
+ // In the past, we had misunderstanding what key is used to sign hash
252
+ // key. Originally, it meant to be the node key, which web used for all
253
+ // nodes besides the root one, where address key was used instead.
254
+ // Similarly, iOS or Android used address key for all nodes. Latest
255
+ // versions should use node key in all cases, but we accept also
256
+ // address key. Its still signed with a valid key.
257
+ const { data: hashKey, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(armoredHashKey, [decryptionAndVerificationKey], [decryptionAndVerificationKey, ...extraVerificationKeys]);
258
+ return {
259
+ hashKey,
260
+ verified,
261
+ };
262
+ }
263
+ async encryptExtendedAttributes(extendedAttributes, encryptionKey, signingKey) {
264
+ const { armoredData: armoredExtendedAttributes } = await this.openPGPCrypto.encryptAndSignArmored(new TextEncoder().encode(extendedAttributes), undefined, [encryptionKey], signingKey);
265
+ return {
266
+ armoredExtendedAttributes,
267
+ };
268
+ }
269
+ async decryptExtendedAttributes(armoreExtendedAttributes, decryptionKey, verificationKeys) {
270
+ const { data: decryptedExtendedAttributes, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(armoreExtendedAttributes, [decryptionKey], verificationKeys);
271
+ return {
272
+ extendedAttributes: uint8ArrayToUtf8(decryptedExtendedAttributes),
273
+ verified,
274
+ };
275
+ }
276
+ async encryptInvitation(shareSessionKey, encryptionKey, signingKey) {
277
+ const { keyPacket } = await this.openPGPCrypto.encryptSessionKey(shareSessionKey, encryptionKey);
278
+ const { signature: keyPacketSignature } = await this.openPGPCrypto.sign(keyPacket, signingKey, SIGNING_CONTEXTS.SHARING_INVITER);
279
+ return {
280
+ base64KeyPacket: (0, utils_1.uint8ArrayToBase64String)(keyPacket),
281
+ base64KeyPacketSignature: (0, utils_1.uint8ArrayToBase64String)(keyPacketSignature),
282
+ };
283
+ }
284
+ async acceptInvitation(base64KeyPacket, signingKey) {
285
+ const sessionKey = await this.decryptSessionKey(base64KeyPacket, signingKey);
286
+ const { signature } = await this.openPGPCrypto.sign(sessionKey.data, signingKey, SIGNING_CONTEXTS.SHARING_MEMBER);
287
+ return {
288
+ base64SessionKeySignature: (0, utils_1.uint8ArrayToBase64String)(signature),
289
+ };
290
+ }
291
+ async encryptExternalInvitation(shareSessionKey, signingKey, inviteeEmail) {
292
+ const data = inviteeEmail.concat('|').concat((0, utils_1.uint8ArrayToBase64String)(shareSessionKey.data));
293
+ const { signature: externalInviationSignature } = await this.openPGPCrypto.sign(new TextEncoder().encode(data), signingKey, SIGNING_CONTEXTS.SHARING_INVITER_EXTERNAL_INVITATION);
294
+ return {
295
+ base64ExternalInvitationSignature: (0, utils_1.uint8ArrayToBase64String)(externalInviationSignature),
296
+ };
297
+ }
298
+ async encryptThumbnailBlock(thumbnailData, sessionKey, signingKey) {
299
+ const { encryptedData } = await this.openPGPCrypto.encryptAndSign(thumbnailData, sessionKey, [], // Thumbnails use the session key so we do not send encryption key.
300
+ signingKey);
301
+ return {
302
+ encryptedData,
303
+ };
304
+ }
305
+ async decryptThumbnailBlock(encryptedThumbnail, sessionKey, verificationKeys) {
306
+ const { data: decryptedThumbnail, verified } = await this.openPGPCrypto.decryptAndVerify(encryptedThumbnail, sessionKey, verificationKeys);
307
+ return {
308
+ decryptedThumbnail,
309
+ verified,
310
+ };
311
+ }
312
+ async encryptBlock(blockData, encryptionKey, sessionKey, signingKey) {
313
+ const { encryptedData, signature } = await this.openPGPCrypto.encryptAndSignDetached(blockData, sessionKey, [], // Blocks use the session key so we do not send encryption key.
314
+ signingKey);
315
+ const { armoredSignature } = await this.encryptSignature(signature, encryptionKey, sessionKey);
316
+ return {
317
+ encryptedData,
318
+ armoredSignature,
319
+ };
320
+ }
321
+ async decryptBlock(encryptedBlock, armoredSignature, decryptionKey, sessionKey, verificationKeys) {
322
+ const signature = armoredSignature ? await this.openPGPCrypto.decryptArmored(armoredSignature, [decryptionKey]) : undefined;
323
+ const { data: decryptedBlock, verified } = await this.openPGPCrypto.decryptAndVerifyDetached(encryptedBlock, signature, sessionKey, verificationKeys);
324
+ return {
325
+ decryptedBlock,
326
+ verified,
327
+ };
328
+ }
329
+ async signManifest(manifest, signingKey) {
330
+ const { signature: armoredManifestSignature } = await this.openPGPCrypto.signArmored(manifest, signingKey);
331
+ return {
332
+ armoredManifestSignature,
333
+ };
334
+ }
335
+ async verifyManifest(manifest, armoredSignature, verificationKeys) {
336
+ const { verified } = await this.openPGPCrypto.verify(manifest, armoredSignature, verificationKeys);
337
+ return {
338
+ verified,
339
+ };
340
+ }
341
+ async decryptShareUrlPassword(armoredPassword, decryptionKeys) {
342
+ const password = await this.openPGPCrypto.decryptArmored(armoredPassword, decryptionKeys);
343
+ return uint8ArrayToUtf8(password);
344
+ }
345
+ }
346
+ exports.DriveCrypto = DriveCrypto;
347
+ function uint8ArrayToUtf8(input) {
348
+ return new TextDecoder('utf-8', { fatal: true }).decode(input);
349
+ }
350
+ /**
351
+ * Convert an array of 8-bit integers to a hex string
352
+ * @param bytes - Array of 8-bit integers to convert
353
+ * @returns Hexadecimal representation of the array
354
+ */
355
+ const arrayToHexString = (bytes) => {
356
+ const hexAlphabet = '0123456789abcdef';
357
+ let s = '';
358
+ bytes.forEach((v) => {
359
+ s += hexAlphabet[v >> 4] + hexAlphabet[v & 15];
360
+ });
361
+ return s;
362
+ };
363
+ exports.arrayToHexString = arrayToHexString;
364
+ //# sourceMappingURL=driveCrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driveCrypto.js","sourceRoot":"","sources":["../../src/crypto/driveCrypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const driveCrypto_1 = require("./driveCrypto");
4
+ describe("uint8ArrayToUtf8", () => {
5
+ it("should convert a Uint8Array to a UTF-8 string", () => {
6
+ const input = new Uint8Array([72, 101, 108, 108, 111]);
7
+ const expectedOutput = "Hello";
8
+ const result = (0, driveCrypto_1.uint8ArrayToUtf8)(input);
9
+ expect(result).toBe(expectedOutput);
10
+ });
11
+ it("should handle an empty Uint8Array", () => {
12
+ const input = new Uint8Array([]);
13
+ const expectedOutput = "";
14
+ const result = (0, driveCrypto_1.uint8ArrayToUtf8)(input);
15
+ expect(result).toBe(expectedOutput);
16
+ });
17
+ it("should throw if input is invalid", () => {
18
+ const input = new Uint8Array([887987979887897989]);
19
+ expect(() => (0, driveCrypto_1.uint8ArrayToUtf8)(input)).toThrow("The encoded data was not valid for encoding utf-8");
20
+ });
21
+ });
22
+ describe("arrayToHexString", () => {
23
+ it("should convert a Uint8Array to a hex string", () => {
24
+ const input = new Uint8Array([0, 255, 16, 32]);
25
+ const expectedOutput = "00ff1020";
26
+ const result = (0, driveCrypto_1.arrayToHexString)(input);
27
+ expect(result).toBe(expectedOutput);
28
+ });
29
+ it("should handle an empty Uint8Array", () => {
30
+ const input = new Uint8Array([]);
31
+ const expectedOutput = "";
32
+ const result = (0, driveCrypto_1.arrayToHexString)(input);
33
+ expect(result).toBe(expectedOutput);
34
+ });
35
+ it("should handle a Uint8Array with one element", () => {
36
+ const input = new Uint8Array([1]);
37
+ const expectedOutput = "01";
38
+ const result = (0, driveCrypto_1.arrayToHexString)(input);
39
+ expect(result).toBe(expectedOutput);
40
+ });
41
+ });
42
+ //# sourceMappingURL=driveCrypto.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driveCrypto.test.js","sourceRoot":"","sources":["../../src/crypto/driveCrypto.test.ts"],"names":[],"mappings":";;AAAA,+CAAmE;AAEnE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,OAAO,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,UAAU,CAAC;QAClC,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ export type HmacCryptoKey = CryptoKey;
2
+ type HmacKeyUsage = 'sign' | 'verify';
3
+ /**
4
+ * Import an HMAC-SHA256 key in order to use it with `signData` and `verifyData`.
5
+ */
6
+ export declare const importHmacKey: (key: Uint8Array, keyUsage?: HmacKeyUsage[]) => Promise<HmacCryptoKey>;
7
+ /**
8
+ * Sign data using HMAC-SHA256
9
+ * @param key - WebCrypto secret key for signing
10
+ * @param data - data to sign
11
+ * @param additionalData - additional data to authenticate
12
+ */
13
+ export declare const computeHmacSignature: (key: HmacCryptoKey, data: Uint8Array) => Promise<Uint8Array>;
14
+ /**
15
+ * Verify data using HMAC-SHA256
16
+ * @param key - WebCrypto secret key for verification
17
+ * @param signature - signature over data
18
+ * @param data - data to verify
19
+ * @param additionalData - additional data to authenticate
20
+ */
21
+ export declare const verifyData: (key: HmacCryptoKey, signature: Uint8Array, data: Uint8Array) => Promise<boolean>;
22
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyData = exports.computeHmacSignature = exports.importHmacKey = void 0;
4
+ const HASH_ALGORITHM = 'SHA-256';
5
+ const KEY_LENGTH_BYTES = 32;
6
+ /**
7
+ * Import an HMAC-SHA256 key in order to use it with `signData` and `verifyData`.
8
+ */
9
+ const importHmacKey = async (key, keyUsage = ['sign', 'verify']) => {
10
+ // From https://datatracker.ietf.org/doc/html/rfc2104:
11
+ // The key for HMAC can be of any length (keys longer than B bytes are first hashed using H).
12
+ // However, less than L bytes (L = 32 bytes for SHA-256) is strongly discouraged as it would
13
+ // decrease the security strength of the function. Keys longer than L bytes are acceptable
14
+ // but the extra length would not significantly increase the function strength.
15
+ // (A longer key may be advisable if the randomness of the key is considered weak.)
16
+ if (key.length < KEY_LENGTH_BYTES) {
17
+ throw new Error('Unexpected HMAC key size: key is too short');
18
+ }
19
+ return crypto.subtle.importKey('raw', key, { name: 'HMAC', hash: HASH_ALGORITHM }, false, keyUsage);
20
+ };
21
+ exports.importHmacKey = importHmacKey;
22
+ /**
23
+ * Sign data using HMAC-SHA256
24
+ * @param key - WebCrypto secret key for signing
25
+ * @param data - data to sign
26
+ * @param additionalData - additional data to authenticate
27
+ */
28
+ const computeHmacSignature = async (key, data) => {
29
+ const signatureBuffer = await crypto.subtle.sign({ name: 'HMAC', hash: HASH_ALGORITHM }, key, data);
30
+ return new Uint8Array(signatureBuffer);
31
+ };
32
+ exports.computeHmacSignature = computeHmacSignature;
33
+ /**
34
+ * Verify data using HMAC-SHA256
35
+ * @param key - WebCrypto secret key for verification
36
+ * @param signature - signature over data
37
+ * @param data - data to verify
38
+ * @param additionalData - additional data to authenticate
39
+ */
40
+ const verifyData = async (key, signature, data) => {
41
+ return crypto.subtle.verify({ name: 'HMAC', hash: HASH_ALGORITHM }, key, signature, data);
42
+ };
43
+ exports.verifyData = verifyData;
44
+ //# sourceMappingURL=hmac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src/crypto/hmac.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAK5B;;GAEG;AACI,MAAM,aAAa,GAAG,KAAK,EAC9B,GAAe,EACf,WAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,EACvB,EAAE;IACxB,sDAAsD;IACtD,6FAA6F;IAC7F,4FAA4F;IAC5F,2FAA2F;IAC3F,+EAA+E;IAC/E,mFAAmF;IACnF,IAAI,GAAG,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxG,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB;AAEF;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,KAAK,EAAE,GAAkB,EAAE,IAAgB,EAAE,EAAE;IAC/E,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpG,OAAO,IAAI,UAAU,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEF;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,KAAK,EAAE,GAAkB,EAAE,SAAqB,EAAE,IAAgB,EAAE,EAAE;IAC5F,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9F,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB"}
@@ -0,0 +1,6 @@
1
+ export type { OpenPGPCrypto, PrivateKey, PublicKey, SessionKey, SRPModule, SRPVerifier } from './interface';
2
+ export { VERIFICATION_STATUS } from './interface';
3
+ export { DriveCrypto } from './driveCrypto';
4
+ export type { OpenPGPCryptoProxy } from './openPGPCrypto';
5
+ export { OpenPGPCryptoWithCryptoProxy } from './openPGPCrypto';
6
+ export { uint8ArrayToBase64String, base64StringToUint8Array } from './utils';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.base64StringToUint8Array = exports.uint8ArrayToBase64String = exports.OpenPGPCryptoWithCryptoProxy = exports.DriveCrypto = exports.VERIFICATION_STATUS = void 0;
4
+ var interface_1 = require("./interface");
5
+ Object.defineProperty(exports, "VERIFICATION_STATUS", { enumerable: true, get: function () { return interface_1.VERIFICATION_STATUS; } });
6
+ var driveCrypto_1 = require("./driveCrypto");
7
+ Object.defineProperty(exports, "DriveCrypto", { enumerable: true, get: function () { return driveCrypto_1.DriveCrypto; } });
8
+ var openPGPCrypto_1 = require("./openPGPCrypto");
9
+ Object.defineProperty(exports, "OpenPGPCryptoWithCryptoProxy", { enumerable: true, get: function () { return openPGPCrypto_1.OpenPGPCryptoWithCryptoProxy; } });
10
+ var utils_1 = require("./utils");
11
+ Object.defineProperty(exports, "uint8ArrayToBase64String", { enumerable: true, get: function () { return utils_1.uint8ArrayToBase64String; } });
12
+ Object.defineProperty(exports, "base64StringToUint8Array", { enumerable: true, get: function () { return utils_1.base64StringToUint8Array; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crypto/index.ts"],"names":[],"mappings":";;;AACA,yCAAkD;AAAzC,gHAAA,mBAAmB,OAAA;AAC5B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AAEpB,iDAA+D;AAAtD,6HAAA,4BAA4B,OAAA;AACrC,iCAA6E;AAApE,iHAAA,wBAAwB,OAAA;AAAE,iHAAA,wBAAwB,OAAA"}
@@ -0,0 +1,125 @@
1
+ export interface PublicKey {
2
+ readonly _idx: any;
3
+ readonly _keyContentHash: [string, string];
4
+ getVersion(): number;
5
+ getFingerprint(): string;
6
+ getSHA256Fingerprints(): string[];
7
+ getKeyID(): any;
8
+ getKeyIDs(): any[];
9
+ getAlgorithmInfo(): any;
10
+ getCreationTime(): Date;
11
+ isPrivate: any;
12
+ isPrivateKeyV4: any;
13
+ isPrivateKeyV6: any;
14
+ getExpirationTime(): Date | number | null;
15
+ getUserIDs(): string[];
16
+ isWeak(): boolean;
17
+ equals(otherKey: any, ignoreOtherCerts?: boolean): boolean;
18
+ subkeys: {
19
+ getAlgorithmInfo(): any;
20
+ getKeyID(): any;
21
+ }[];
22
+ }
23
+ export interface PrivateKey extends PublicKey {
24
+ readonly _dummyType: 'private';
25
+ }
26
+ export interface SessionKey {
27
+ data: Uint8Array;
28
+ algorithm: any;
29
+ aeadAlgorithm?: any;
30
+ }
31
+ export declare enum VERIFICATION_STATUS {
32
+ NOT_SIGNED = 0,
33
+ SIGNED_AND_VALID = 1,
34
+ SIGNED_AND_INVALID = 2
35
+ }
36
+ export interface SRPModule {
37
+ getSrpVerifier: (password: string) => Promise<SRPVerifier>;
38
+ }
39
+ export type SRPVerifier = {
40
+ modulusId: string;
41
+ version: number;
42
+ salt: string;
43
+ verifier: string;
44
+ };
45
+ /**
46
+ * OpenPGP crypto layer to provide necessary PGP operations for Drive crypto.
47
+ *
48
+ * This layer focuses on providing general openPGP functions. Every operation
49
+ * should prefer binary input and output. Ideally, armoring should be done
50
+ * later in serialisation step, but for now, it is part of the interface to
51
+ * be somewhat compatible with current web app, and also be more efficient
52
+ * (current CryptoProxy can do encryption and armoring in one operation with
53
+ * less passing data between web workers). In the future, we want to separate
54
+ * this out of here more.
55
+ */
56
+ export interface OpenPGPCrypto {
57
+ /**
58
+ * Generate a random passphrase.
59
+ *
60
+ * 32 random bytes are generated and encoded into a base64 string.
61
+ */
62
+ generatePassphrase: () => string;
63
+ generateSessionKey: (encryptionKeys: PrivateKey[]) => Promise<SessionKey>;
64
+ encryptSessionKey: (sessionKey: SessionKey, encryptionKeys: PublicKey | PublicKey[]) => Promise<{
65
+ keyPacket: Uint8Array;
66
+ }>;
67
+ encryptSessionKeyWithPassword: (sessionKey: SessionKey, password: string) => Promise<{
68
+ keyPacket: Uint8Array;
69
+ }>;
70
+ /**
71
+ * Generate a new key pair locked by a passphrase.
72
+ *
73
+ * The key pair is generated using the Curve25519 algorithm.
74
+ */
75
+ generateKey: (passphrase: string) => Promise<{
76
+ privateKey: PrivateKey;
77
+ armoredKey: string;
78
+ }>;
79
+ encryptArmored: (data: Uint8Array, encryptionKeys: PrivateKey[], sessionKey?: SessionKey) => Promise<{
80
+ armoredData: string;
81
+ }>;
82
+ encryptAndSign: (data: Uint8Array, sessionKey: SessionKey, encryptionKeys: PrivateKey[], signingKey: PrivateKey) => Promise<{
83
+ encryptedData: Uint8Array;
84
+ }>;
85
+ encryptAndSignArmored: (data: Uint8Array, sessionKey: SessionKey | undefined, encryptionKeys: PrivateKey[], signingKey: PrivateKey) => Promise<{
86
+ armoredData: string;
87
+ }>;
88
+ encryptAndSignDetached: (data: Uint8Array, sessionKey: SessionKey, encryptionKeys: PrivateKey[], signingKey: PrivateKey) => Promise<{
89
+ encryptedData: Uint8Array;
90
+ signature: Uint8Array;
91
+ }>;
92
+ encryptAndSignDetachedArmored: (data: Uint8Array, sessionKey: SessionKey, encryptionKeys: PrivateKey[], signingKey: PrivateKey) => Promise<{
93
+ armoredData: string;
94
+ armoredSignature: string;
95
+ }>;
96
+ sign: (data: Uint8Array, signingKey: PrivateKey, signatureContext: string) => Promise<{
97
+ signature: Uint8Array;
98
+ }>;
99
+ signArmored: (data: Uint8Array, signingKey: PrivateKey | PrivateKey[]) => Promise<{
100
+ signature: string;
101
+ }>;
102
+ verify: (data: Uint8Array, armoredSignature: string, verificationKeys: PublicKey | PublicKey[]) => Promise<{
103
+ verified: VERIFICATION_STATUS;
104
+ }>;
105
+ decryptSessionKey: (data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
106
+ decryptArmoredSessionKey: (armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
107
+ decryptKey: (armoredKey: string, passphrase: string) => Promise<PrivateKey>;
108
+ decryptAndVerify(data: Uint8Array, sessionKey: SessionKey, verificationKeys: PublicKey | PublicKey[]): Promise<{
109
+ data: Uint8Array;
110
+ verified: VERIFICATION_STATUS;
111
+ }>;
112
+ decryptAndVerifyDetached(data: Uint8Array, signature: Uint8Array | undefined, sessionKey: SessionKey, verificationKeys?: PublicKey | PublicKey[]): Promise<{
113
+ data: Uint8Array;
114
+ verified: VERIFICATION_STATUS;
115
+ }>;
116
+ decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<Uint8Array>;
117
+ decryptArmoredAndVerify: (armoredData: string, decryptionKeys: PrivateKey | PrivateKey[], verificationKeys: PublicKey | PublicKey[]) => Promise<{
118
+ data: Uint8Array;
119
+ verified: VERIFICATION_STATUS;
120
+ }>;
121
+ decryptArmoredAndVerifyDetached: (armoredData: string, armoredSignature: string, sessionKey: SessionKey, verificationKeys: PublicKey | PublicKey[]) => Promise<{
122
+ data: Uint8Array;
123
+ verified: VERIFICATION_STATUS;
124
+ }>;
125
+ }