@unwanted/matrix-sdk-mini 34.12.0-2 → 34.12.0-4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (492) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/@types/global.d.js +0 -2
  3. package/lib/@types/global.d.js.map +1 -1
  4. package/lib/browser-index.d.ts.map +1 -1
  5. package/lib/browser-index.js +0 -11
  6. package/lib/browser-index.js.map +1 -1
  7. package/lib/client.d.ts +2 -1221
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +331 -2821
  10. package/lib/client.js.map +1 -1
  11. package/lib/embedded.d.ts +0 -22
  12. package/lib/embedded.d.ts.map +1 -1
  13. package/lib/embedded.js +24 -166
  14. package/lib/embedded.js.map +1 -1
  15. package/lib/event-mapper.d.ts.map +1 -1
  16. package/lib/event-mapper.js +0 -4
  17. package/lib/event-mapper.js.map +1 -1
  18. package/lib/matrix.d.ts +0 -19
  19. package/lib/matrix.d.ts.map +1 -1
  20. package/lib/matrix.js +1 -26
  21. package/lib/matrix.js.map +1 -1
  22. package/lib/models/MSC3089Branch.d.ts.map +1 -1
  23. package/lib/models/MSC3089Branch.js +0 -3
  24. package/lib/models/MSC3089Branch.js.map +1 -1
  25. package/lib/models/event.d.ts +0 -94
  26. package/lib/models/event.d.ts.map +1 -1
  27. package/lib/models/event.js +0 -274
  28. package/lib/models/event.js.map +1 -1
  29. package/lib/models/poll.d.ts.map +1 -1
  30. package/lib/models/poll.js +1 -5
  31. package/lib/models/poll.js.map +1 -1
  32. package/lib/models/relations-container.d.ts.map +1 -1
  33. package/lib/models/relations-container.js +1 -7
  34. package/lib/models/relations-container.js.map +1 -1
  35. package/lib/models/relations.d.ts +0 -1
  36. package/lib/models/relations.d.ts.map +1 -1
  37. package/lib/models/relations.js +0 -8
  38. package/lib/models/relations.js.map +1 -1
  39. package/lib/models/room-state.d.ts.map +1 -1
  40. package/lib/models/room-state.js +10 -26
  41. package/lib/models/room-state.js.map +1 -1
  42. package/lib/models/room.d.ts +0 -18
  43. package/lib/models/room.d.ts.map +1 -1
  44. package/lib/models/room.js +94 -148
  45. package/lib/models/room.js.map +1 -1
  46. package/lib/models/thread.d.ts.map +1 -1
  47. package/lib/models/thread.js +0 -1
  48. package/lib/models/thread.js.map +1 -1
  49. package/lib/sliding-sync-sdk.d.ts +2 -3
  50. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  51. package/lib/sliding-sync-sdk.js +41 -90
  52. package/lib/sliding-sync-sdk.js.map +1 -1
  53. package/lib/sync.d.ts +0 -12
  54. package/lib/sync.d.ts.map +1 -1
  55. package/lib/sync.js +1 -73
  56. package/lib/sync.js.map +1 -1
  57. package/lib/testing.d.ts +0 -48
  58. package/lib/testing.d.ts.map +1 -1
  59. package/lib/testing.js +0 -105
  60. package/lib/testing.js.map +1 -1
  61. package/lib/types.d.ts +0 -1
  62. package/lib/types.d.ts.map +1 -1
  63. package/lib/types.js.map +1 -1
  64. package/package.json +1 -3
  65. package/src/@types/global.d.ts +0 -3
  66. package/src/browser-index.ts +0 -11
  67. package/src/client.ts +60 -2882
  68. package/src/embedded.ts +3 -130
  69. package/src/event-mapper.ts +0 -4
  70. package/src/matrix.ts +0 -28
  71. package/src/models/MSC3089Branch.ts +0 -3
  72. package/src/models/event.ts +0 -289
  73. package/src/models/poll.ts +0 -6
  74. package/src/models/relations-container.ts +1 -8
  75. package/src/models/relations.ts +0 -8
  76. package/src/models/room-state.ts +2 -8
  77. package/src/models/room.ts +0 -62
  78. package/src/models/thread.ts +0 -1
  79. package/src/sliding-sync-sdk.ts +2 -72
  80. package/src/sync.ts +1 -98
  81. package/src/testing.ts +0 -108
  82. package/src/types.ts +0 -1
  83. package/CHANGELOG.md +0 -5910
  84. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +0 -14
  85. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +0 -1
  86. package/lib/@types/AESEncryptedSecretStoragePayload.js +0 -1
  87. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +0 -1
  88. package/lib/@types/crypto.d.ts +0 -47
  89. package/lib/@types/crypto.d.ts.map +0 -1
  90. package/lib/@types/crypto.js +0 -1
  91. package/lib/@types/crypto.js.map +0 -1
  92. package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
  93. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
  94. package/lib/common-crypto/CryptoBackend.d.ts +0 -240
  95. package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
  96. package/lib/common-crypto/CryptoBackend.js +0 -73
  97. package/lib/common-crypto/CryptoBackend.js.map +0 -1
  98. package/lib/common-crypto/key-passphrase.d.ts +0 -14
  99. package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
  100. package/lib/common-crypto/key-passphrase.js +0 -33
  101. package/lib/common-crypto/key-passphrase.js.map +0 -1
  102. package/lib/crypto/CrossSigning.d.ts +0 -184
  103. package/lib/crypto/CrossSigning.d.ts.map +0 -1
  104. package/lib/crypto/CrossSigning.js +0 -718
  105. package/lib/crypto/CrossSigning.js.map +0 -1
  106. package/lib/crypto/DeviceList.d.ts +0 -216
  107. package/lib/crypto/DeviceList.d.ts.map +0 -1
  108. package/lib/crypto/DeviceList.js +0 -892
  109. package/lib/crypto/DeviceList.js.map +0 -1
  110. package/lib/crypto/EncryptionSetup.d.ts +0 -152
  111. package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
  112. package/lib/crypto/EncryptionSetup.js +0 -356
  113. package/lib/crypto/EncryptionSetup.js.map +0 -1
  114. package/lib/crypto/OlmDevice.d.ts +0 -457
  115. package/lib/crypto/OlmDevice.d.ts.map +0 -1
  116. package/lib/crypto/OlmDevice.js +0 -1241
  117. package/lib/crypto/OlmDevice.js.map +0 -1
  118. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
  119. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
  120. package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
  121. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
  122. package/lib/crypto/RoomList.d.ts +0 -26
  123. package/lib/crypto/RoomList.d.ts.map +0 -1
  124. package/lib/crypto/RoomList.js +0 -71
  125. package/lib/crypto/RoomList.js.map +0 -1
  126. package/lib/crypto/SecretSharing.d.ts +0 -24
  127. package/lib/crypto/SecretSharing.d.ts.map +0 -1
  128. package/lib/crypto/SecretSharing.js +0 -194
  129. package/lib/crypto/SecretSharing.js.map +0 -1
  130. package/lib/crypto/SecretStorage.d.ts +0 -55
  131. package/lib/crypto/SecretStorage.d.ts.map +0 -1
  132. package/lib/crypto/SecretStorage.js +0 -118
  133. package/lib/crypto/SecretStorage.js.map +0 -1
  134. package/lib/crypto/aes.d.ts +0 -6
  135. package/lib/crypto/aes.d.ts.map +0 -1
  136. package/lib/crypto/aes.js +0 -24
  137. package/lib/crypto/aes.js.map +0 -1
  138. package/lib/crypto/algorithms/base.d.ts +0 -156
  139. package/lib/crypto/algorithms/base.d.ts.map +0 -1
  140. package/lib/crypto/algorithms/base.js +0 -187
  141. package/lib/crypto/algorithms/base.js.map +0 -1
  142. package/lib/crypto/algorithms/index.d.ts +0 -4
  143. package/lib/crypto/algorithms/index.d.ts.map +0 -1
  144. package/lib/crypto/algorithms/index.js +0 -20
  145. package/lib/crypto/algorithms/index.js.map +0 -1
  146. package/lib/crypto/algorithms/megolm.d.ts +0 -385
  147. package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
  148. package/lib/crypto/algorithms/megolm.js +0 -1822
  149. package/lib/crypto/algorithms/megolm.js.map +0 -1
  150. package/lib/crypto/algorithms/olm.d.ts +0 -5
  151. package/lib/crypto/algorithms/olm.d.ts.map +0 -1
  152. package/lib/crypto/algorithms/olm.js +0 -299
  153. package/lib/crypto/algorithms/olm.js.map +0 -1
  154. package/lib/crypto/api.d.ts +0 -32
  155. package/lib/crypto/api.d.ts.map +0 -1
  156. package/lib/crypto/api.js +0 -22
  157. package/lib/crypto/api.js.map +0 -1
  158. package/lib/crypto/backup.d.ts +0 -227
  159. package/lib/crypto/backup.d.ts.map +0 -1
  160. package/lib/crypto/backup.js +0 -824
  161. package/lib/crypto/backup.js.map +0 -1
  162. package/lib/crypto/crypto.d.ts +0 -3
  163. package/lib/crypto/crypto.d.ts.map +0 -1
  164. package/lib/crypto/crypto.js +0 -19
  165. package/lib/crypto/crypto.js.map +0 -1
  166. package/lib/crypto/dehydration.d.ts +0 -34
  167. package/lib/crypto/dehydration.d.ts.map +0 -1
  168. package/lib/crypto/dehydration.js +0 -252
  169. package/lib/crypto/dehydration.js.map +0 -1
  170. package/lib/crypto/device-converter.d.ts +0 -9
  171. package/lib/crypto/device-converter.d.ts.map +0 -1
  172. package/lib/crypto/device-converter.js +0 -42
  173. package/lib/crypto/device-converter.js.map +0 -1
  174. package/lib/crypto/deviceinfo.d.ts +0 -99
  175. package/lib/crypto/deviceinfo.d.ts.map +0 -1
  176. package/lib/crypto/deviceinfo.js +0 -148
  177. package/lib/crypto/deviceinfo.js.map +0 -1
  178. package/lib/crypto/index.d.ts +0 -1209
  179. package/lib/crypto/index.d.ts.map +0 -1
  180. package/lib/crypto/index.js +0 -4097
  181. package/lib/crypto/index.js.map +0 -1
  182. package/lib/crypto/key_passphrase.d.ts +0 -14
  183. package/lib/crypto/key_passphrase.d.ts.map +0 -1
  184. package/lib/crypto/key_passphrase.js +0 -44
  185. package/lib/crypto/key_passphrase.js.map +0 -1
  186. package/lib/crypto/keybackup.d.ts +0 -18
  187. package/lib/crypto/keybackup.d.ts.map +0 -1
  188. package/lib/crypto/keybackup.js +0 -1
  189. package/lib/crypto/keybackup.js.map +0 -1
  190. package/lib/crypto/olmlib.d.ts +0 -129
  191. package/lib/crypto/olmlib.d.ts.map +0 -1
  192. package/lib/crypto/olmlib.js +0 -492
  193. package/lib/crypto/olmlib.js.map +0 -1
  194. package/lib/crypto/recoverykey.d.ts +0 -2
  195. package/lib/crypto/recoverykey.d.ts.map +0 -1
  196. package/lib/crypto/recoverykey.js +0 -19
  197. package/lib/crypto/recoverykey.js.map +0 -1
  198. package/lib/crypto/store/base.d.ts +0 -252
  199. package/lib/crypto/store/base.d.ts.map +0 -1
  200. package/lib/crypto/store/base.js +0 -64
  201. package/lib/crypto/store/base.js.map +0 -1
  202. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
  203. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
  204. package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
  205. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
  206. package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
  207. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
  208. package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
  209. package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
  210. package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
  211. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
  212. package/lib/crypto/store/localStorage-crypto-store.js +0 -531
  213. package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
  214. package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
  215. package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
  216. package/lib/crypto/store/memory-crypto-store.js +0 -622
  217. package/lib/crypto/store/memory-crypto-store.js.map +0 -1
  218. package/lib/crypto/verification/Base.d.ts +0 -105
  219. package/lib/crypto/verification/Base.d.ts.map +0 -1
  220. package/lib/crypto/verification/Base.js +0 -372
  221. package/lib/crypto/verification/Base.js.map +0 -1
  222. package/lib/crypto/verification/Error.d.ts +0 -35
  223. package/lib/crypto/verification/Error.d.ts.map +0 -1
  224. package/lib/crypto/verification/Error.js +0 -86
  225. package/lib/crypto/verification/Error.js.map +0 -1
  226. package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
  227. package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
  228. package/lib/crypto/verification/IllegalMethod.js +0 -43
  229. package/lib/crypto/verification/IllegalMethod.js.map +0 -1
  230. package/lib/crypto/verification/QRCode.d.ts +0 -51
  231. package/lib/crypto/verification/QRCode.d.ts.map +0 -1
  232. package/lib/crypto/verification/QRCode.js +0 -277
  233. package/lib/crypto/verification/QRCode.js.map +0 -1
  234. package/lib/crypto/verification/SAS.d.ts +0 -27
  235. package/lib/crypto/verification/SAS.d.ts.map +0 -1
  236. package/lib/crypto/verification/SAS.js +0 -485
  237. package/lib/crypto/verification/SAS.js.map +0 -1
  238. package/lib/crypto/verification/SASDecimal.d.ts +0 -8
  239. package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
  240. package/lib/crypto/verification/SASDecimal.js +0 -34
  241. package/lib/crypto/verification/SASDecimal.js.map +0 -1
  242. package/lib/crypto/verification/request/Channel.d.ts +0 -18
  243. package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
  244. package/lib/crypto/verification/request/Channel.js +0 -1
  245. package/lib/crypto/verification/request/Channel.js.map +0 -1
  246. package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
  247. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
  248. package/lib/crypto/verification/request/InRoomChannel.js +0 -351
  249. package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
  250. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
  251. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
  252. package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
  253. package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
  254. package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
  255. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
  256. package/lib/crypto/verification/request/VerificationRequest.js +0 -937
  257. package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
  258. package/lib/crypto-api/CryptoEvent.d.ts +0 -69
  259. package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
  260. package/lib/crypto-api/CryptoEvent.js +0 -33
  261. package/lib/crypto-api/CryptoEvent.js.map +0 -1
  262. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
  263. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
  264. package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
  265. package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
  266. package/lib/crypto-api/index.d.ts +0 -978
  267. package/lib/crypto-api/index.d.ts.map +0 -1
  268. package/lib/crypto-api/index.js +0 -304
  269. package/lib/crypto-api/index.js.map +0 -1
  270. package/lib/crypto-api/key-passphrase.d.ts +0 -11
  271. package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
  272. package/lib/crypto-api/key-passphrase.js +0 -51
  273. package/lib/crypto-api/key-passphrase.js.map +0 -1
  274. package/lib/crypto-api/keybackup.d.ts +0 -88
  275. package/lib/crypto-api/keybackup.d.ts.map +0 -1
  276. package/lib/crypto-api/keybackup.js +0 -1
  277. package/lib/crypto-api/keybackup.js.map +0 -1
  278. package/lib/crypto-api/recovery-key.d.ts +0 -11
  279. package/lib/crypto-api/recovery-key.d.ts.map +0 -1
  280. package/lib/crypto-api/recovery-key.js +0 -65
  281. package/lib/crypto-api/recovery-key.js.map +0 -1
  282. package/lib/crypto-api/verification.d.ts +0 -344
  283. package/lib/crypto-api/verification.d.ts.map +0 -1
  284. package/lib/crypto-api/verification.js +0 -91
  285. package/lib/crypto-api/verification.js.map +0 -1
  286. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
  287. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
  288. package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
  289. package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
  290. package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
  291. package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
  292. package/lib/rendezvous/RendezvousChannel.js +0 -1
  293. package/lib/rendezvous/RendezvousChannel.js.map +0 -1
  294. package/lib/rendezvous/RendezvousCode.d.ts +0 -9
  295. package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
  296. package/lib/rendezvous/RendezvousCode.js +0 -1
  297. package/lib/rendezvous/RendezvousCode.js.map +0 -1
  298. package/lib/rendezvous/RendezvousError.d.ts +0 -6
  299. package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
  300. package/lib/rendezvous/RendezvousError.js +0 -23
  301. package/lib/rendezvous/RendezvousError.js.map +0 -1
  302. package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
  303. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
  304. package/lib/rendezvous/RendezvousFailureReason.js +0 -38
  305. package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
  306. package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
  307. package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
  308. package/lib/rendezvous/RendezvousIntent.js +0 -22
  309. package/lib/rendezvous/RendezvousIntent.js.map +0 -1
  310. package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
  311. package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
  312. package/lib/rendezvous/RendezvousTransport.js +0 -1
  313. package/lib/rendezvous/RendezvousTransport.js.map +0 -1
  314. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
  315. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
  316. package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
  317. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
  318. package/lib/rendezvous/channels/index.d.ts +0 -2
  319. package/lib/rendezvous/channels/index.d.ts.map +0 -1
  320. package/lib/rendezvous/channels/index.js +0 -18
  321. package/lib/rendezvous/channels/index.js.map +0 -1
  322. package/lib/rendezvous/index.d.ts +0 -10
  323. package/lib/rendezvous/index.d.ts.map +0 -1
  324. package/lib/rendezvous/index.js +0 -23
  325. package/lib/rendezvous/index.js.map +0 -1
  326. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
  327. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
  328. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
  329. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
  330. package/lib/rendezvous/transports/index.d.ts +0 -2
  331. package/lib/rendezvous/transports/index.d.ts.map +0 -1
  332. package/lib/rendezvous/transports/index.js +0 -18
  333. package/lib/rendezvous/transports/index.js.map +0 -1
  334. package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
  335. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
  336. package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
  337. package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
  338. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
  339. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
  340. package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
  341. package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
  342. package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
  343. package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
  344. package/lib/rust-crypto/KeyClaimManager.js +0 -82
  345. package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
  346. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
  347. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
  348. package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
  349. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
  350. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
  351. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
  352. package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
  353. package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
  354. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
  355. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
  356. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
  357. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
  358. package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
  359. package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
  360. package/lib/rust-crypto/RoomEncryptor.js +0 -299
  361. package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
  362. package/lib/rust-crypto/backup.d.ts +0 -254
  363. package/lib/rust-crypto/backup.d.ts.map +0 -1
  364. package/lib/rust-crypto/backup.js +0 -837
  365. package/lib/rust-crypto/backup.js.map +0 -1
  366. package/lib/rust-crypto/constants.d.ts +0 -3
  367. package/lib/rust-crypto/constants.d.ts.map +0 -1
  368. package/lib/rust-crypto/constants.js +0 -19
  369. package/lib/rust-crypto/constants.js.map +0 -1
  370. package/lib/rust-crypto/device-converter.d.ts +0 -28
  371. package/lib/rust-crypto/device-converter.d.ts.map +0 -1
  372. package/lib/rust-crypto/device-converter.js +0 -123
  373. package/lib/rust-crypto/device-converter.js.map +0 -1
  374. package/lib/rust-crypto/index.d.ts +0 -61
  375. package/lib/rust-crypto/index.d.ts.map +0 -1
  376. package/lib/rust-crypto/index.js +0 -152
  377. package/lib/rust-crypto/index.js.map +0 -1
  378. package/lib/rust-crypto/libolm_migration.d.ts +0 -81
  379. package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
  380. package/lib/rust-crypto/libolm_migration.js +0 -459
  381. package/lib/rust-crypto/libolm_migration.js.map +0 -1
  382. package/lib/rust-crypto/rust-crypto.d.ts +0 -556
  383. package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
  384. package/lib/rust-crypto/rust-crypto.js +0 -2016
  385. package/lib/rust-crypto/rust-crypto.js.map +0 -1
  386. package/lib/rust-crypto/secret-storage.d.ts +0 -22
  387. package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
  388. package/lib/rust-crypto/secret-storage.js +0 -63
  389. package/lib/rust-crypto/secret-storage.js.map +0 -1
  390. package/lib/rust-crypto/verification.d.ts +0 -319
  391. package/lib/rust-crypto/verification.d.ts.map +0 -1
  392. package/lib/rust-crypto/verification.js +0 -816
  393. package/lib/rust-crypto/verification.js.map +0 -1
  394. package/lib/secret-storage.d.ts +0 -370
  395. package/lib/secret-storage.d.ts.map +0 -1
  396. package/lib/secret-storage.js +0 -466
  397. package/lib/secret-storage.js.map +0 -1
  398. package/lib/utils/decryptAESSecretStorageItem.d.ts +0 -12
  399. package/lib/utils/decryptAESSecretStorageItem.d.ts.map +0 -1
  400. package/lib/utils/decryptAESSecretStorageItem.js +0 -50
  401. package/lib/utils/decryptAESSecretStorageItem.js.map +0 -1
  402. package/lib/utils/encryptAESSecretStorageItem.d.ts +0 -16
  403. package/lib/utils/encryptAESSecretStorageItem.d.ts.map +0 -1
  404. package/lib/utils/encryptAESSecretStorageItem.js +0 -68
  405. package/lib/utils/encryptAESSecretStorageItem.js.map +0 -1
  406. package/lib/utils/internal/deriveKeys.d.ts +0 -10
  407. package/lib/utils/internal/deriveKeys.d.ts.map +0 -1
  408. package/lib/utils/internal/deriveKeys.js +0 -60
  409. package/lib/utils/internal/deriveKeys.js.map +0 -1
  410. package/src/@types/AESEncryptedSecretStoragePayload.ts +0 -29
  411. package/src/@types/crypto.ts +0 -73
  412. package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
  413. package/src/common-crypto/CryptoBackend.ts +0 -302
  414. package/src/common-crypto/README.md +0 -4
  415. package/src/common-crypto/key-passphrase.ts +0 -43
  416. package/src/crypto/CrossSigning.ts +0 -773
  417. package/src/crypto/DeviceList.ts +0 -989
  418. package/src/crypto/EncryptionSetup.ts +0 -351
  419. package/src/crypto/OlmDevice.ts +0 -1500
  420. package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
  421. package/src/crypto/RoomList.ts +0 -70
  422. package/src/crypto/SecretSharing.ts +0 -240
  423. package/src/crypto/SecretStorage.ts +0 -136
  424. package/src/crypto/aes.ts +0 -23
  425. package/src/crypto/algorithms/base.ts +0 -236
  426. package/src/crypto/algorithms/index.ts +0 -20
  427. package/src/crypto/algorithms/megolm.ts +0 -2216
  428. package/src/crypto/algorithms/olm.ts +0 -381
  429. package/src/crypto/api.ts +0 -70
  430. package/src/crypto/backup.ts +0 -922
  431. package/src/crypto/crypto.ts +0 -18
  432. package/src/crypto/dehydration.ts +0 -272
  433. package/src/crypto/device-converter.ts +0 -45
  434. package/src/crypto/deviceinfo.ts +0 -158
  435. package/src/crypto/index.ts +0 -4414
  436. package/src/crypto/key_passphrase.ts +0 -42
  437. package/src/crypto/keybackup.ts +0 -47
  438. package/src/crypto/olmlib.ts +0 -539
  439. package/src/crypto/recoverykey.ts +0 -18
  440. package/src/crypto/store/base.ts +0 -348
  441. package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
  442. package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
  443. package/src/crypto/store/localStorage-crypto-store.ts +0 -579
  444. package/src/crypto/store/memory-crypto-store.ts +0 -680
  445. package/src/crypto/verification/Base.ts +0 -409
  446. package/src/crypto/verification/Error.ts +0 -76
  447. package/src/crypto/verification/IllegalMethod.ts +0 -50
  448. package/src/crypto/verification/QRCode.ts +0 -310
  449. package/src/crypto/verification/SAS.ts +0 -494
  450. package/src/crypto/verification/SASDecimal.ts +0 -37
  451. package/src/crypto/verification/request/Channel.ts +0 -34
  452. package/src/crypto/verification/request/InRoomChannel.ts +0 -371
  453. package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
  454. package/src/crypto/verification/request/VerificationRequest.ts +0 -976
  455. package/src/crypto-api/CryptoEvent.ts +0 -93
  456. package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
  457. package/src/crypto-api/index.ts +0 -1175
  458. package/src/crypto-api/key-passphrase.ts +0 -58
  459. package/src/crypto-api/keybackup.ts +0 -115
  460. package/src/crypto-api/recovery-key.ts +0 -69
  461. package/src/crypto-api/verification.ts +0 -408
  462. package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
  463. package/src/rendezvous/RendezvousChannel.ts +0 -48
  464. package/src/rendezvous/RendezvousCode.ts +0 -25
  465. package/src/rendezvous/RendezvousError.ts +0 -26
  466. package/src/rendezvous/RendezvousFailureReason.ts +0 -49
  467. package/src/rendezvous/RendezvousIntent.ts +0 -20
  468. package/src/rendezvous/RendezvousTransport.ts +0 -58
  469. package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
  470. package/src/rendezvous/channels/index.ts +0 -17
  471. package/src/rendezvous/index.ts +0 -25
  472. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
  473. package/src/rendezvous/transports/index.ts +0 -17
  474. package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
  475. package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
  476. package/src/rust-crypto/KeyClaimManager.ts +0 -86
  477. package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
  478. package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
  479. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
  480. package/src/rust-crypto/RoomEncryptor.ts +0 -352
  481. package/src/rust-crypto/backup.ts +0 -881
  482. package/src/rust-crypto/constants.ts +0 -18
  483. package/src/rust-crypto/device-converter.ts +0 -128
  484. package/src/rust-crypto/index.ts +0 -237
  485. package/src/rust-crypto/libolm_migration.ts +0 -530
  486. package/src/rust-crypto/rust-crypto.ts +0 -2205
  487. package/src/rust-crypto/secret-storage.ts +0 -60
  488. package/src/rust-crypto/verification.ts +0 -830
  489. package/src/secret-storage.ts +0 -693
  490. package/src/utils/decryptAESSecretStorageItem.ts +0 -54
  491. package/src/utils/encryptAESSecretStorageItem.ts +0 -73
  492. package/src/utils/internal/deriveKeys.ts +0 -63
@@ -1,485 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- /*
4
- Copyright 2018 - 2021 The Matrix.org Foundation C.I.C.
5
-
6
- Licensed under the Apache License, Version 2.0 (the "License");
7
- you may not use this file except in compliance with the License.
8
- You may obtain a copy of the License at
9
-
10
- http://www.apache.org/licenses/LICENSE-2.0
11
-
12
- Unless required by applicable law or agreed to in writing, software
13
- distributed under the License is distributed on an "AS IS" BASIS,
14
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- See the License for the specific language governing permissions and
16
- limitations under the License.
17
- */
18
-
19
- /**
20
- * Short Authentication String (SAS) verification.
21
- */
22
-
23
- import anotherjson from "another-json";
24
- import { VerificationBase as Base, SwitchStartEventError } from "./Base.js";
25
- import { errorFactory, newInvalidMessageError, newKeyMismatchError, newUnknownMethodError, newUserCancelledError } from "./Error.js";
26
- import { logger } from "../../logger.js";
27
- import { generateDecimalSas } from "./SASDecimal.js";
28
- import { EventType } from "../../@types/event.js";
29
- import { VerifierEvent } from "../../crypto-api/verification.js";
30
- import { VerificationMethod } from "../../types.js";
31
-
32
- // backwards-compatibility exports
33
-
34
- var START_TYPE = EventType.KeyVerificationStart;
35
- var EVENTS = [EventType.KeyVerificationAccept, EventType.KeyVerificationKey, EventType.KeyVerificationMac];
36
- var olmutil;
37
- var newMismatchedSASError = errorFactory("m.mismatched_sas", "Mismatched short authentication string");
38
- var newMismatchedCommitmentError = errorFactory("m.mismatched_commitment", "Mismatched commitment");
39
-
40
- // This list was generated from the data in the Matrix specification [1] with the following command:
41
- //
42
- // jq -r '.[] | " [\"" + .emoji + "\", \"" + (.description|ascii_downcase) + "\"], // " + (.number|tostring)' sas-emoji.json
43
- //
44
- // [1]: https://github.com/matrix-org/matrix-spec/blob/main/data-definitions/sas-emoji.json
45
- var emojiMapping = [["🐶", "dog"],
46
- // 0
47
- ["🐱", "cat"],
48
- // 1
49
- ["🦁", "lion"],
50
- // 2
51
- ["🐎", "horse"],
52
- // 3
53
- ["🦄", "unicorn"],
54
- // 4
55
- ["🐷", "pig"],
56
- // 5
57
- ["🐘", "elephant"],
58
- // 6
59
- ["🐰", "rabbit"],
60
- // 7
61
- ["🐼", "panda"],
62
- // 8
63
- ["🐓", "rooster"],
64
- // 9
65
- ["🐧", "penguin"],
66
- // 10
67
- ["🐢", "turtle"],
68
- // 11
69
- ["🐟", "fish"],
70
- // 12
71
- ["🐙", "octopus"],
72
- // 13
73
- ["🦋", "butterfly"],
74
- // 14
75
- ["🌷", "flower"],
76
- // 15
77
- ["🌳", "tree"],
78
- // 16
79
- ["🌵", "cactus"],
80
- // 17
81
- ["🍄", "mushroom"],
82
- // 18
83
- ["🌏", "globe"],
84
- // 19
85
- ["🌙", "moon"],
86
- // 20
87
- ["☁️", "cloud"],
88
- // 21
89
- ["🔥", "fire"],
90
- // 22
91
- ["🍌", "banana"],
92
- // 23
93
- ["🍎", "apple"],
94
- // 24
95
- ["🍓", "strawberry"],
96
- // 25
97
- ["🌽", "corn"],
98
- // 26
99
- ["🍕", "pizza"],
100
- // 27
101
- ["🎂", "cake"],
102
- // 28
103
- ["❤️", "heart"],
104
- // 29
105
- ["😀", "smiley"],
106
- // 30
107
- ["🤖", "robot"],
108
- // 31
109
- ["🎩", "hat"],
110
- // 32
111
- ["👓", "glasses"],
112
- // 33
113
- ["🔧", "spanner"],
114
- // 34
115
- ["🎅", "santa"],
116
- // 35
117
- ["👍", "thumbs up"],
118
- // 36
119
- ["☂️", "umbrella"],
120
- // 37
121
- ["⌛", "hourglass"],
122
- // 38
123
- ["⏰", "clock"],
124
- // 39
125
- ["🎁", "gift"],
126
- // 40
127
- ["💡", "light bulb"],
128
- // 41
129
- ["📕", "book"],
130
- // 42
131
- ["✏️", "pencil"],
132
- // 43
133
- ["📎", "paperclip"],
134
- // 44
135
- ["✂️", "scissors"],
136
- // 45
137
- ["🔒", "lock"],
138
- // 46
139
- ["🔑", "key"],
140
- // 47
141
- ["🔨", "hammer"],
142
- // 48
143
- ["☎️", "telephone"],
144
- // 49
145
- ["🏁", "flag"],
146
- // 50
147
- ["🚂", "train"],
148
- // 51
149
- ["🚲", "bicycle"],
150
- // 52
151
- ["✈️", "aeroplane"],
152
- // 53
153
- ["🚀", "rocket"],
154
- // 54
155
- ["🏆", "trophy"],
156
- // 55
157
- ["⚽", "ball"],
158
- // 56
159
- ["🎸", "guitar"],
160
- // 57
161
- ["🎺", "trumpet"],
162
- // 58
163
- ["🔔", "bell"],
164
- // 59
165
- ["⚓", "anchor"],
166
- // 60
167
- ["🎧", "headphones"],
168
- // 61
169
- ["📁", "folder"],
170
- // 62
171
- ["📌", "pin"] // 63
172
- ];
173
- function generateEmojiSas(sasBytes) {
174
- var emojis = [
175
- // just like base64 encoding
176
- sasBytes[0] >> 2, (sasBytes[0] & 0x3) << 4 | sasBytes[1] >> 4, (sasBytes[1] & 0xf) << 2 | sasBytes[2] >> 6, sasBytes[2] & 0x3f, sasBytes[3] >> 2, (sasBytes[3] & 0x3) << 4 | sasBytes[4] >> 4, (sasBytes[4] & 0xf) << 2 | sasBytes[5] >> 6];
177
- return emojis.map(num => emojiMapping[num]);
178
- }
179
- var sasGenerators = {
180
- decimal: generateDecimalSas,
181
- emoji: generateEmojiSas
182
- };
183
- function generateSas(sasBytes, methods) {
184
- var sas = {};
185
- for (var method of methods) {
186
- if (method in sasGenerators) {
187
- // @ts-ignore - ts doesn't like us mixing types like this
188
- sas[method] = sasGenerators[method](Array.from(sasBytes));
189
- }
190
- }
191
- return sas;
192
- }
193
- var macMethods = {
194
- "hkdf-hmac-sha256": "calculate_mac",
195
- "org.matrix.msc3783.hkdf-hmac-sha256": "calculate_mac_fixed_base64",
196
- "hkdf-hmac-sha256.v2": "calculate_mac_fixed_base64",
197
- "hmac-sha256": "calculate_mac_long_kdf"
198
- };
199
- function calculateMAC(olmSAS, method) {
200
- return function (input, info) {
201
- var mac = olmSAS[macMethods[method]](input, info);
202
- logger.log("SAS calculateMAC:", method, [input, info], mac);
203
- return mac;
204
- };
205
- }
206
- var calculateKeyAgreement = {
207
- // eslint-disable-next-line @typescript-eslint/naming-convention
208
- "curve25519-hkdf-sha256": function curve25519HkdfSha256(sas, olmSAS, bytes) {
209
- var ourInfo = "".concat(sas.baseApis.getUserId(), "|").concat(sas.baseApis.deviceId, "|") + "".concat(sas.ourSASPubKey, "|");
210
- var theirInfo = "".concat(sas.userId, "|").concat(sas.deviceId, "|").concat(sas.theirSASPubKey, "|");
211
- var sasInfo = "MATRIX_KEY_VERIFICATION_SAS|" + (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas.channel.transactionId;
212
- return olmSAS.generate_bytes(sasInfo, bytes);
213
- },
214
- "curve25519": function curve25519(sas, olmSAS, bytes) {
215
- var ourInfo = "".concat(sas.baseApis.getUserId()).concat(sas.baseApis.deviceId);
216
- var theirInfo = "".concat(sas.userId).concat(sas.deviceId);
217
- var sasInfo = "MATRIX_KEY_VERIFICATION_SAS" + (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) + sas.channel.transactionId;
218
- return olmSAS.generate_bytes(sasInfo, bytes);
219
- }
220
- };
221
- /* lists of algorithms/methods that are supported. The key agreement, hashes,
222
- * and MAC lists should be sorted in order of preference (most preferred
223
- * first).
224
- */
225
- var KEY_AGREEMENT_LIST = ["curve25519-hkdf-sha256", "curve25519"];
226
- var HASHES_LIST = ["sha256"];
227
- var MAC_LIST = ["hkdf-hmac-sha256.v2", "org.matrix.msc3783.hkdf-hmac-sha256", "hkdf-hmac-sha256", "hmac-sha256"];
228
- var SAS_LIST = Object.keys(sasGenerators);
229
- var KEY_AGREEMENT_SET = new Set(KEY_AGREEMENT_LIST);
230
- var HASHES_SET = new Set(HASHES_LIST);
231
- var MAC_SET = new Set(MAC_LIST);
232
- var SAS_SET = new Set(SAS_LIST);
233
- function intersection(anArray, aSet) {
234
- return Array.isArray(anArray) ? anArray.filter(x => aSet.has(x)) : [];
235
- }
236
-
237
- /** @deprecated use VerifierEvent */
238
-
239
- /** @deprecated use VerifierEvent */
240
- export var SasEvent = VerifierEvent;
241
-
242
- /** @deprecated Avoid referencing this class directly; instead use {@link Crypto.Verifier}. */
243
- export class SAS extends Base {
244
- constructor() {
245
- var _this;
246
- super(...arguments);
247
- _this = this;
248
- _defineProperty(this, "waitingForAccept", void 0);
249
- _defineProperty(this, "ourSASPubKey", void 0);
250
- _defineProperty(this, "theirSASPubKey", void 0);
251
- _defineProperty(this, "sasEvent", void 0);
252
- _defineProperty(this, "doVerification", /*#__PURE__*/_asyncToGenerator(function* () {
253
- yield globalThis.Olm.init();
254
- olmutil = olmutil || new globalThis.Olm.Utility();
255
-
256
- // make sure user's keys are downloaded
257
- yield _this.baseApis.downloadKeys([_this.userId]);
258
- var retry = false;
259
- do {
260
- try {
261
- if (_this.initiatedByMe) {
262
- return yield _this.doSendVerification();
263
- } else {
264
- return yield _this.doRespondVerification();
265
- }
266
- } catch (err) {
267
- if (err instanceof SwitchStartEventError) {
268
- // this changes what initiatedByMe returns
269
- _this.startEvent = err.startEvent;
270
- retry = true;
271
- } else {
272
- throw err;
273
- }
274
- }
275
- } while (retry);
276
- }));
277
- }
278
- // eslint-disable-next-line @typescript-eslint/naming-convention
279
- static get NAME() {
280
- return VerificationMethod.Sas;
281
- }
282
- get events() {
283
- return EVENTS;
284
- }
285
- canSwitchStartEvent(event) {
286
- if (event.getType() !== START_TYPE) {
287
- return false;
288
- }
289
- var content = event.getContent();
290
- return (content === null || content === void 0 ? void 0 : content.method) === SAS.NAME && !!this.waitingForAccept;
291
- }
292
- sendStart() {
293
- var _this2 = this;
294
- return _asyncToGenerator(function* () {
295
- var startContent = _this2.channel.completeContent(START_TYPE, {
296
- method: SAS.NAME,
297
- from_device: _this2.baseApis.deviceId,
298
- key_agreement_protocols: KEY_AGREEMENT_LIST,
299
- hashes: HASHES_LIST,
300
- message_authentication_codes: MAC_LIST,
301
- // FIXME: allow app to specify what SAS methods can be used
302
- short_authentication_string: SAS_LIST
303
- });
304
- yield _this2.channel.sendCompleted(START_TYPE, startContent);
305
- return startContent;
306
- })();
307
- }
308
- verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod) {
309
- var _this3 = this;
310
- return _asyncToGenerator(function* () {
311
- var sasBytes = calculateKeyAgreement[keyAgreement](_this3, olmSAS, 6);
312
- var verifySAS = new Promise((resolve, reject) => {
313
- _this3.sasEvent = {
314
- sas: generateSas(sasBytes, sasMethods),
315
- confirm: function () {
316
- var _confirm = _asyncToGenerator(function* () {
317
- try {
318
- yield _this3.sendMAC(olmSAS, macMethod);
319
- resolve();
320
- } catch (err) {
321
- reject(err);
322
- }
323
- });
324
- function confirm() {
325
- return _confirm.apply(this, arguments);
326
- }
327
- return confirm;
328
- }(),
329
- cancel: () => reject(newUserCancelledError()),
330
- mismatch: () => reject(newMismatchedSASError())
331
- };
332
- _this3.emit(SasEvent.ShowSas, _this3.sasEvent);
333
- });
334
- var [e] = yield Promise.all([_this3.waitForEvent(EventType.KeyVerificationMac).then(e => {
335
- // we don't expect any more messages from the other
336
- // party, and they may send a m.key.verification.done
337
- // when they're done on their end
338
- _this3.expectedEvent = EventType.KeyVerificationDone;
339
- return e;
340
- }), verifySAS]);
341
- var content = e.getContent();
342
- yield _this3.checkMAC(olmSAS, content, macMethod);
343
- })();
344
- }
345
- doSendVerification() {
346
- var _this4 = this;
347
- return _asyncToGenerator(function* () {
348
- _this4.waitingForAccept = true;
349
- var startContent;
350
- if (_this4.startEvent) {
351
- startContent = _this4.channel.completedContentFromEvent(_this4.startEvent);
352
- } else {
353
- startContent = yield _this4.sendStart();
354
- }
355
-
356
- // we might have switched to a different start event,
357
- // but was we didn't call _waitForEvent there was no
358
- // call that could throw yet. So check manually that
359
- // we're still on the initiator side
360
- if (!_this4.initiatedByMe) {
361
- throw new SwitchStartEventError(_this4.startEvent);
362
- }
363
- var e;
364
- try {
365
- e = yield _this4.waitForEvent(EventType.KeyVerificationAccept);
366
- } finally {
367
- _this4.waitingForAccept = false;
368
- }
369
- var content = e.getContent();
370
- var sasMethods = intersection(content.short_authentication_string, SAS_SET);
371
- if (!(KEY_AGREEMENT_SET.has(content.key_agreement_protocol) && HASHES_SET.has(content.hash) && MAC_SET.has(content.message_authentication_code) && sasMethods.length)) {
372
- throw newUnknownMethodError();
373
- }
374
- if (typeof content.commitment !== "string") {
375
- throw newInvalidMessageError();
376
- }
377
- var keyAgreement = content.key_agreement_protocol;
378
- var macMethod = content.message_authentication_code;
379
- var hashCommitment = content.commitment;
380
- var olmSAS = new globalThis.Olm.SAS();
381
- try {
382
- _this4.ourSASPubKey = olmSAS.get_pubkey();
383
- yield _this4.send(EventType.KeyVerificationKey, {
384
- key: _this4.ourSASPubKey
385
- });
386
- e = yield _this4.waitForEvent(EventType.KeyVerificationKey);
387
- // FIXME: make sure event is properly formed
388
- content = e.getContent();
389
- var commitmentStr = content.key + anotherjson.stringify(startContent);
390
- // TODO: use selected hash function (when we support multiple)
391
- if (olmutil.sha256(commitmentStr) !== hashCommitment) {
392
- throw newMismatchedCommitmentError();
393
- }
394
- _this4.theirSASPubKey = content.key;
395
- olmSAS.set_their_key(content.key);
396
- yield _this4.verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod);
397
- } finally {
398
- olmSAS.free();
399
- }
400
- })();
401
- }
402
- doRespondVerification() {
403
- var _this5 = this;
404
- return _asyncToGenerator(function* () {
405
- // as m.related_to is not included in the encrypted content in e2e rooms,
406
- // we need to make sure it is added
407
- var content = _this5.channel.completedContentFromEvent(_this5.startEvent);
408
-
409
- // Note: we intersect using our pre-made lists, rather than the sets,
410
- // so that the result will be in our order of preference. Then
411
- // fetching the first element from the array will give our preferred
412
- // method out of the ones offered by the other party.
413
- var keyAgreement = intersection(KEY_AGREEMENT_LIST, new Set(content.key_agreement_protocols))[0];
414
- var hashMethod = intersection(HASHES_LIST, new Set(content.hashes))[0];
415
- var macMethod = intersection(MAC_LIST, new Set(content.message_authentication_codes))[0];
416
- // FIXME: allow app to specify what SAS methods can be used
417
- var sasMethods = intersection(content.short_authentication_string, SAS_SET);
418
- if (!(keyAgreement !== undefined && hashMethod !== undefined && macMethod !== undefined && sasMethods.length)) {
419
- throw newUnknownMethodError();
420
- }
421
- var olmSAS = new globalThis.Olm.SAS();
422
- try {
423
- var commitmentStr = olmSAS.get_pubkey() + anotherjson.stringify(content);
424
- yield _this5.send(EventType.KeyVerificationAccept, {
425
- key_agreement_protocol: keyAgreement,
426
- hash: hashMethod,
427
- message_authentication_code: macMethod,
428
- short_authentication_string: sasMethods,
429
- // TODO: use selected hash function (when we support multiple)
430
- commitment: olmutil.sha256(commitmentStr)
431
- });
432
- var e = yield _this5.waitForEvent(EventType.KeyVerificationKey);
433
- // FIXME: make sure event is properly formed
434
- content = e.getContent();
435
- _this5.theirSASPubKey = content.key;
436
- olmSAS.set_their_key(content.key);
437
- _this5.ourSASPubKey = olmSAS.get_pubkey();
438
- yield _this5.send(EventType.KeyVerificationKey, {
439
- key: _this5.ourSASPubKey
440
- });
441
- yield _this5.verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod);
442
- } finally {
443
- olmSAS.free();
444
- }
445
- })();
446
- }
447
- sendMAC(olmSAS, method) {
448
- var mac = {};
449
- var keyList = [];
450
- var baseInfo = "MATRIX_KEY_VERIFICATION_MAC" + this.baseApis.getUserId() + this.baseApis.deviceId + this.userId + this.deviceId + this.channel.transactionId;
451
- var deviceKeyId = "ed25519:".concat(this.baseApis.deviceId);
452
- mac[deviceKeyId] = calculateMAC(olmSAS, method)(this.baseApis.getDeviceEd25519Key(), baseInfo + deviceKeyId);
453
- keyList.push(deviceKeyId);
454
- var crossSigningId = this.baseApis.getCrossSigningId();
455
- if (crossSigningId) {
456
- var crossSigningKeyId = "ed25519:".concat(crossSigningId);
457
- mac[crossSigningKeyId] = calculateMAC(olmSAS, method)(crossSigningId, baseInfo + crossSigningKeyId);
458
- keyList.push(crossSigningKeyId);
459
- }
460
- var keys = calculateMAC(olmSAS, method)(keyList.sort().join(","), baseInfo + "KEY_IDS");
461
- return this.send(EventType.KeyVerificationMac, {
462
- mac,
463
- keys
464
- });
465
- }
466
- checkMAC(olmSAS, content, method) {
467
- var _this6 = this;
468
- return _asyncToGenerator(function* () {
469
- var baseInfo = "MATRIX_KEY_VERIFICATION_MAC" + _this6.userId + _this6.deviceId + _this6.baseApis.getUserId() + _this6.baseApis.deviceId + _this6.channel.transactionId;
470
- if (content.keys !== calculateMAC(olmSAS, method)(Object.keys(content.mac).sort().join(","), baseInfo + "KEY_IDS")) {
471
- throw newKeyMismatchError();
472
- }
473
- yield _this6.verifyKeys(_this6.userId, content.mac, (keyId, device, keyInfo) => {
474
- if (keyInfo !== calculateMAC(olmSAS, method)(device.keys[keyId], baseInfo + keyId)) {
475
- throw newKeyMismatchError();
476
- }
477
- });
478
- })();
479
- }
480
- getShowSasCallbacks() {
481
- var _this$sasEvent;
482
- return (_this$sasEvent = this.sasEvent) !== null && _this$sasEvent !== void 0 ? _this$sasEvent : null;
483
- }
484
- }
485
- //# sourceMappingURL=SAS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SAS.js","names":["anotherjson","VerificationBase","Base","SwitchStartEventError","errorFactory","newInvalidMessageError","newKeyMismatchError","newUnknownMethodError","newUserCancelledError","logger","generateDecimalSas","EventType","VerifierEvent","VerificationMethod","START_TYPE","KeyVerificationStart","EVENTS","KeyVerificationAccept","KeyVerificationKey","KeyVerificationMac","olmutil","newMismatchedSASError","newMismatchedCommitmentError","emojiMapping","generateEmojiSas","sasBytes","emojis","map","num","sasGenerators","decimal","emoji","generateSas","methods","sas","method","Array","from","macMethods","calculateMAC","olmSAS","input","info","mac","log","calculateKeyAgreement","curve25519HkdfSha256","bytes","ourInfo","concat","baseApis","getUserId","deviceId","ourSASPubKey","theirInfo","userId","theirSASPubKey","sasInfo","initiatedByMe","channel","transactionId","generate_bytes","curve25519","KEY_AGREEMENT_LIST","HASHES_LIST","MAC_LIST","SAS_LIST","Object","keys","KEY_AGREEMENT_SET","Set","HASHES_SET","MAC_SET","SAS_SET","intersection","anArray","aSet","isArray","filter","x","has","SasEvent","SAS","constructor","_this","arguments","this","_defineProperty","_asyncToGenerator","globalThis","Olm","init","Utility","downloadKeys","retry","doSendVerification","doRespondVerification","err","startEvent","NAME","Sas","events","canSwitchStartEvent","event","getType","content","getContent","waitingForAccept","sendStart","_this2","startContent","completeContent","from_device","key_agreement_protocols","hashes","message_authentication_codes","short_authentication_string","sendCompleted","verifyAndCheckMAC","keyAgreement","sasMethods","macMethod","_this3","verifySAS","Promise","resolve","reject","sasEvent","confirm","_confirm","sendMAC","apply","cancel","mismatch","emit","ShowSas","e","all","waitForEvent","then","expectedEvent","KeyVerificationDone","checkMAC","_this4","completedContentFromEvent","key_agreement_protocol","hash","message_authentication_code","length","commitment","hashCommitment","get_pubkey","send","key","commitmentStr","stringify","sha256","set_their_key","free","_this5","hashMethod","undefined","keyList","baseInfo","deviceKeyId","getDeviceEd25519Key","push","crossSigningId","getCrossSigningId","crossSigningKeyId","sort","join","_this6","verifyKeys","keyId","device","keyInfo","getShowSasCallbacks","_this$sasEvent"],"sources":["../../../src/crypto/verification/SAS.ts"],"sourcesContent":["/*\nCopyright 2018 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Short Authentication String (SAS) verification.\n */\n\nimport anotherjson from \"another-json\";\nimport { Utility, SAS as OlmSAS } from \"@matrix-org/olm\";\n\nimport { VerificationBase as Base, SwitchStartEventError } from \"./Base.ts\";\nimport {\n errorFactory,\n newInvalidMessageError,\n newKeyMismatchError,\n newUnknownMethodError,\n newUserCancelledError,\n} from \"./Error.ts\";\nimport { logger } from \"../../logger.ts\";\nimport { IContent, MatrixEvent } from \"../../models/event.ts\";\nimport { generateDecimalSas } from \"./SASDecimal.ts\";\nimport { EventType } from \"../../@types/event.ts\";\nimport { EmojiMapping, GeneratedSas, ShowSasCallbacks, VerifierEvent } from \"../../crypto-api/verification.ts\";\nimport { VerificationMethod } from \"../../types.ts\";\n\n// backwards-compatibility exports\nexport type {\n ShowSasCallbacks as ISasEvent,\n GeneratedSas as IGeneratedSas,\n EmojiMapping,\n} from \"../../crypto-api/verification.ts\";\n\nconst START_TYPE = EventType.KeyVerificationStart;\n\nconst EVENTS = [EventType.KeyVerificationAccept, EventType.KeyVerificationKey, EventType.KeyVerificationMac];\n\nlet olmutil: Utility;\n\nconst newMismatchedSASError = errorFactory(\"m.mismatched_sas\", \"Mismatched short authentication string\");\n\nconst newMismatchedCommitmentError = errorFactory(\"m.mismatched_commitment\", \"Mismatched commitment\");\n\n// This list was generated from the data in the Matrix specification [1] with the following command:\n//\n// jq -r '.[] | \" [\\\"\" + .emoji + \"\\\", \\\"\" + (.description|ascii_downcase) + \"\\\"], // \" + (.number|tostring)' sas-emoji.json\n//\n// [1]: https://github.com/matrix-org/matrix-spec/blob/main/data-definitions/sas-emoji.json\nconst emojiMapping: EmojiMapping[] = [\n [\"🐶\", \"dog\"], // 0\n [\"🐱\", \"cat\"], // 1\n [\"🦁\", \"lion\"], // 2\n [\"🐎\", \"horse\"], // 3\n [\"🦄\", \"unicorn\"], // 4\n [\"🐷\", \"pig\"], // 5\n [\"🐘\", \"elephant\"], // 6\n [\"🐰\", \"rabbit\"], // 7\n [\"🐼\", \"panda\"], // 8\n [\"🐓\", \"rooster\"], // 9\n [\"🐧\", \"penguin\"], // 10\n [\"🐢\", \"turtle\"], // 11\n [\"🐟\", \"fish\"], // 12\n [\"🐙\", \"octopus\"], // 13\n [\"🦋\", \"butterfly\"], // 14\n [\"🌷\", \"flower\"], // 15\n [\"🌳\", \"tree\"], // 16\n [\"🌵\", \"cactus\"], // 17\n [\"🍄\", \"mushroom\"], // 18\n [\"🌏\", \"globe\"], // 19\n [\"🌙\", \"moon\"], // 20\n [\"☁️\", \"cloud\"], // 21\n [\"🔥\", \"fire\"], // 22\n [\"🍌\", \"banana\"], // 23\n [\"🍎\", \"apple\"], // 24\n [\"🍓\", \"strawberry\"], // 25\n [\"🌽\", \"corn\"], // 26\n [\"🍕\", \"pizza\"], // 27\n [\"🎂\", \"cake\"], // 28\n [\"❤️\", \"heart\"], // 29\n [\"😀\", \"smiley\"], // 30\n [\"🤖\", \"robot\"], // 31\n [\"🎩\", \"hat\"], // 32\n [\"👓\", \"glasses\"], // 33\n [\"🔧\", \"spanner\"], // 34\n [\"🎅\", \"santa\"], // 35\n [\"👍\", \"thumbs up\"], // 36\n [\"☂️\", \"umbrella\"], // 37\n [\"⌛\", \"hourglass\"], // 38\n [\"⏰\", \"clock\"], // 39\n [\"🎁\", \"gift\"], // 40\n [\"💡\", \"light bulb\"], // 41\n [\"📕\", \"book\"], // 42\n [\"✏️\", \"pencil\"], // 43\n [\"📎\", \"paperclip\"], // 44\n [\"✂️\", \"scissors\"], // 45\n [\"🔒\", \"lock\"], // 46\n [\"🔑\", \"key\"], // 47\n [\"🔨\", \"hammer\"], // 48\n [\"☎️\", \"telephone\"], // 49\n [\"🏁\", \"flag\"], // 50\n [\"🚂\", \"train\"], // 51\n [\"🚲\", \"bicycle\"], // 52\n [\"✈️\", \"aeroplane\"], // 53\n [\"🚀\", \"rocket\"], // 54\n [\"🏆\", \"trophy\"], // 55\n [\"⚽\", \"ball\"], // 56\n [\"🎸\", \"guitar\"], // 57\n [\"🎺\", \"trumpet\"], // 58\n [\"🔔\", \"bell\"], // 59\n [\"⚓\", \"anchor\"], // 60\n [\"🎧\", \"headphones\"], // 61\n [\"📁\", \"folder\"], // 62\n [\"📌\", \"pin\"], // 63\n];\n\nfunction generateEmojiSas(sasBytes: number[]): EmojiMapping[] {\n const emojis = [\n // just like base64 encoding\n sasBytes[0] >> 2,\n ((sasBytes[0] & 0x3) << 4) | (sasBytes[1] >> 4),\n ((sasBytes[1] & 0xf) << 2) | (sasBytes[2] >> 6),\n sasBytes[2] & 0x3f,\n sasBytes[3] >> 2,\n ((sasBytes[3] & 0x3) << 4) | (sasBytes[4] >> 4),\n ((sasBytes[4] & 0xf) << 2) | (sasBytes[5] >> 6),\n ];\n\n return emojis.map((num) => emojiMapping[num]);\n}\n\nconst sasGenerators = {\n decimal: generateDecimalSas,\n emoji: generateEmojiSas,\n} as const;\n\nfunction generateSas(sasBytes: Uint8Array, methods: string[]): GeneratedSas {\n const sas: GeneratedSas = {};\n for (const method of methods) {\n if (method in sasGenerators) {\n // @ts-ignore - ts doesn't like us mixing types like this\n sas[method] = sasGenerators[method](Array.from(sasBytes));\n }\n }\n return sas;\n}\n\nconst macMethods = {\n \"hkdf-hmac-sha256\": \"calculate_mac\",\n \"org.matrix.msc3783.hkdf-hmac-sha256\": \"calculate_mac_fixed_base64\",\n \"hkdf-hmac-sha256.v2\": \"calculate_mac_fixed_base64\",\n \"hmac-sha256\": \"calculate_mac_long_kdf\",\n} as const;\n\ntype MacMethod = keyof typeof macMethods;\n\nfunction calculateMAC(olmSAS: OlmSAS, method: MacMethod) {\n return function (input: string, info: string): string {\n const mac = olmSAS[macMethods[method]](input, info);\n logger.log(\"SAS calculateMAC:\", method, [input, info], mac);\n return mac;\n };\n}\n\nconst calculateKeyAgreement = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n \"curve25519-hkdf-sha256\": function (sas: SAS, olmSAS: OlmSAS, bytes: number): Uint8Array {\n const ourInfo = `${sas.baseApis.getUserId()}|${sas.baseApis.deviceId}|` + `${sas.ourSASPubKey}|`;\n const theirInfo = `${sas.userId}|${sas.deviceId}|${sas.theirSASPubKey}|`;\n const sasInfo =\n \"MATRIX_KEY_VERIFICATION_SAS|\" +\n (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) +\n sas.channel.transactionId;\n return olmSAS.generate_bytes(sasInfo, bytes);\n },\n \"curve25519\": function (sas: SAS, olmSAS: OlmSAS, bytes: number): Uint8Array {\n const ourInfo = `${sas.baseApis.getUserId()}${sas.baseApis.deviceId}`;\n const theirInfo = `${sas.userId}${sas.deviceId}`;\n const sasInfo =\n \"MATRIX_KEY_VERIFICATION_SAS\" +\n (sas.initiatedByMe ? ourInfo + theirInfo : theirInfo + ourInfo) +\n sas.channel.transactionId;\n return olmSAS.generate_bytes(sasInfo, bytes);\n },\n} as const;\n\ntype KeyAgreement = keyof typeof calculateKeyAgreement;\n\n/* lists of algorithms/methods that are supported. The key agreement, hashes,\n * and MAC lists should be sorted in order of preference (most preferred\n * first).\n */\nconst KEY_AGREEMENT_LIST: KeyAgreement[] = [\"curve25519-hkdf-sha256\", \"curve25519\"];\nconst HASHES_LIST = [\"sha256\"];\nconst MAC_LIST: MacMethod[] = [\n \"hkdf-hmac-sha256.v2\",\n \"org.matrix.msc3783.hkdf-hmac-sha256\",\n \"hkdf-hmac-sha256\",\n \"hmac-sha256\",\n];\nconst SAS_LIST = Object.keys(sasGenerators);\n\nconst KEY_AGREEMENT_SET = new Set(KEY_AGREEMENT_LIST);\nconst HASHES_SET = new Set(HASHES_LIST);\nconst MAC_SET = new Set(MAC_LIST);\nconst SAS_SET = new Set(SAS_LIST);\n\nfunction intersection<T>(anArray: T[], aSet: Set<T>): T[] {\n return Array.isArray(anArray) ? anArray.filter((x) => aSet.has(x)) : [];\n}\n\n/** @deprecated use VerifierEvent */\nexport type SasEvent = VerifierEvent;\n/** @deprecated use VerifierEvent */\nexport const SasEvent = VerifierEvent;\n\n/** @deprecated Avoid referencing this class directly; instead use {@link Crypto.Verifier}. */\nexport class SAS extends Base {\n private waitingForAccept?: boolean;\n public ourSASPubKey?: string;\n public theirSASPubKey?: string;\n public sasEvent?: ShowSasCallbacks;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public static get NAME(): string {\n return VerificationMethod.Sas;\n }\n\n public get events(): string[] {\n return EVENTS;\n }\n\n protected doVerification = async (): Promise<void> => {\n await globalThis.Olm.init();\n olmutil = olmutil || new globalThis.Olm.Utility();\n\n // make sure user's keys are downloaded\n await this.baseApis.downloadKeys([this.userId]);\n\n let retry = false;\n do {\n try {\n if (this.initiatedByMe) {\n return await this.doSendVerification();\n } else {\n return await this.doRespondVerification();\n }\n } catch (err) {\n if (err instanceof SwitchStartEventError) {\n // this changes what initiatedByMe returns\n this.startEvent = err.startEvent;\n retry = true;\n } else {\n throw err;\n }\n }\n } while (retry);\n };\n\n public canSwitchStartEvent(event: MatrixEvent): boolean {\n if (event.getType() !== START_TYPE) {\n return false;\n }\n const content = event.getContent();\n return content?.method === SAS.NAME && !!this.waitingForAccept;\n }\n\n private async sendStart(): Promise<Record<string, any>> {\n const startContent = this.channel.completeContent(START_TYPE, {\n method: SAS.NAME,\n from_device: this.baseApis.deviceId,\n key_agreement_protocols: KEY_AGREEMENT_LIST,\n hashes: HASHES_LIST,\n message_authentication_codes: MAC_LIST,\n // FIXME: allow app to specify what SAS methods can be used\n short_authentication_string: SAS_LIST,\n });\n await this.channel.sendCompleted(START_TYPE, startContent);\n return startContent;\n }\n\n private async verifyAndCheckMAC(\n keyAgreement: KeyAgreement,\n sasMethods: string[],\n olmSAS: OlmSAS,\n macMethod: MacMethod,\n ): Promise<void> {\n const sasBytes = calculateKeyAgreement[keyAgreement](this, olmSAS, 6);\n const verifySAS = new Promise<void>((resolve, reject) => {\n this.sasEvent = {\n sas: generateSas(sasBytes, sasMethods),\n confirm: async (): Promise<void> => {\n try {\n await this.sendMAC(olmSAS, macMethod);\n resolve();\n } catch (err) {\n reject(err);\n }\n },\n cancel: (): void => reject(newUserCancelledError()),\n mismatch: (): void => reject(newMismatchedSASError()),\n };\n this.emit(SasEvent.ShowSas, this.sasEvent);\n });\n\n const [e] = await Promise.all([\n this.waitForEvent(EventType.KeyVerificationMac).then((e) => {\n // we don't expect any more messages from the other\n // party, and they may send a m.key.verification.done\n // when they're done on their end\n this.expectedEvent = EventType.KeyVerificationDone;\n return e;\n }),\n verifySAS,\n ]);\n const content = e.getContent();\n await this.checkMAC(olmSAS, content, macMethod);\n }\n\n private async doSendVerification(): Promise<void> {\n this.waitingForAccept = true;\n let startContent;\n if (this.startEvent) {\n startContent = this.channel.completedContentFromEvent(this.startEvent);\n } else {\n startContent = await this.sendStart();\n }\n\n // we might have switched to a different start event,\n // but was we didn't call _waitForEvent there was no\n // call that could throw yet. So check manually that\n // we're still on the initiator side\n if (!this.initiatedByMe) {\n throw new SwitchStartEventError(this.startEvent);\n }\n\n let e: MatrixEvent;\n try {\n e = await this.waitForEvent(EventType.KeyVerificationAccept);\n } finally {\n this.waitingForAccept = false;\n }\n let content = e.getContent();\n const sasMethods = intersection(content.short_authentication_string, SAS_SET);\n if (\n !(\n KEY_AGREEMENT_SET.has(content.key_agreement_protocol) &&\n HASHES_SET.has(content.hash) &&\n MAC_SET.has(content.message_authentication_code) &&\n sasMethods.length\n )\n ) {\n throw newUnknownMethodError();\n }\n if (typeof content.commitment !== \"string\") {\n throw newInvalidMessageError();\n }\n const keyAgreement = content.key_agreement_protocol;\n const macMethod = content.message_authentication_code;\n const hashCommitment = content.commitment;\n const olmSAS = new globalThis.Olm.SAS();\n try {\n this.ourSASPubKey = olmSAS.get_pubkey();\n await this.send(EventType.KeyVerificationKey, {\n key: this.ourSASPubKey,\n });\n\n e = await this.waitForEvent(EventType.KeyVerificationKey);\n // FIXME: make sure event is properly formed\n content = e.getContent();\n const commitmentStr = content.key + anotherjson.stringify(startContent);\n // TODO: use selected hash function (when we support multiple)\n if (olmutil.sha256(commitmentStr) !== hashCommitment) {\n throw newMismatchedCommitmentError();\n }\n this.theirSASPubKey = content.key;\n olmSAS.set_their_key(content.key);\n\n await this.verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod);\n } finally {\n olmSAS.free();\n }\n }\n\n private async doRespondVerification(): Promise<void> {\n // as m.related_to is not included in the encrypted content in e2e rooms,\n // we need to make sure it is added\n let content = this.channel.completedContentFromEvent(this.startEvent!);\n\n // Note: we intersect using our pre-made lists, rather than the sets,\n // so that the result will be in our order of preference. Then\n // fetching the first element from the array will give our preferred\n // method out of the ones offered by the other party.\n const keyAgreement = intersection(KEY_AGREEMENT_LIST, new Set(content.key_agreement_protocols))[0];\n const hashMethod = intersection(HASHES_LIST, new Set(content.hashes))[0];\n const macMethod = intersection(MAC_LIST, new Set(content.message_authentication_codes))[0];\n // FIXME: allow app to specify what SAS methods can be used\n const sasMethods = intersection(content.short_authentication_string, SAS_SET);\n if (!(keyAgreement !== undefined && hashMethod !== undefined && macMethod !== undefined && sasMethods.length)) {\n throw newUnknownMethodError();\n }\n\n const olmSAS = new globalThis.Olm.SAS();\n try {\n const commitmentStr = olmSAS.get_pubkey() + anotherjson.stringify(content);\n await this.send(EventType.KeyVerificationAccept, {\n key_agreement_protocol: keyAgreement,\n hash: hashMethod,\n message_authentication_code: macMethod,\n short_authentication_string: sasMethods,\n // TODO: use selected hash function (when we support multiple)\n commitment: olmutil.sha256(commitmentStr),\n });\n\n const e = await this.waitForEvent(EventType.KeyVerificationKey);\n // FIXME: make sure event is properly formed\n content = e.getContent();\n this.theirSASPubKey = content.key;\n olmSAS.set_their_key(content.key);\n this.ourSASPubKey = olmSAS.get_pubkey();\n await this.send(EventType.KeyVerificationKey, {\n key: this.ourSASPubKey,\n });\n\n await this.verifyAndCheckMAC(keyAgreement, sasMethods, olmSAS, macMethod);\n } finally {\n olmSAS.free();\n }\n }\n\n private sendMAC(olmSAS: OlmSAS, method: MacMethod): Promise<void> {\n const mac: Record<string, string> = {};\n const keyList: string[] = [];\n const baseInfo =\n \"MATRIX_KEY_VERIFICATION_MAC\" +\n this.baseApis.getUserId() +\n this.baseApis.deviceId +\n this.userId +\n this.deviceId +\n this.channel.transactionId;\n\n const deviceKeyId = `ed25519:${this.baseApis.deviceId}`;\n mac[deviceKeyId] = calculateMAC(olmSAS, method)(this.baseApis.getDeviceEd25519Key()!, baseInfo + deviceKeyId);\n keyList.push(deviceKeyId);\n\n const crossSigningId = this.baseApis.getCrossSigningId();\n if (crossSigningId) {\n const crossSigningKeyId = `ed25519:${crossSigningId}`;\n mac[crossSigningKeyId] = calculateMAC(olmSAS, method)(crossSigningId, baseInfo + crossSigningKeyId);\n keyList.push(crossSigningKeyId);\n }\n\n const keys = calculateMAC(olmSAS, method)(keyList.sort().join(\",\"), baseInfo + \"KEY_IDS\");\n return this.send(EventType.KeyVerificationMac, { mac, keys });\n }\n\n private async checkMAC(olmSAS: OlmSAS, content: IContent, method: MacMethod): Promise<void> {\n const baseInfo =\n \"MATRIX_KEY_VERIFICATION_MAC\" +\n this.userId +\n this.deviceId +\n this.baseApis.getUserId() +\n this.baseApis.deviceId +\n this.channel.transactionId;\n\n if (\n content.keys !==\n calculateMAC(olmSAS, method)(Object.keys(content.mac).sort().join(\",\"), baseInfo + \"KEY_IDS\")\n ) {\n throw newKeyMismatchError();\n }\n\n await this.verifyKeys(this.userId, content.mac, (keyId, device, keyInfo) => {\n if (keyInfo !== calculateMAC(olmSAS, method)(device.keys[keyId], baseInfo + keyId)) {\n throw newKeyMismatchError();\n }\n });\n }\n\n public getShowSasCallbacks(): ShowSasCallbacks | null {\n return this.sasEvent ?? null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +0,0 @@
1
- /**
2
- * Implementation of decimal encoding of SAS as per:
3
- * https://spec.matrix.org/v1.4/client-server-api/#sas-method-decimal
4
- * @param sasBytes - the five bytes generated by HKDF
5
- * @returns the derived three numbers between 1000 and 9191 inclusive
6
- */
7
- export declare function generateDecimalSas(sasBytes: number[]): [number, number, number];
8
- //# sourceMappingURL=SASDecimal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SASDecimal.d.ts","sourceRoot":"","sources":["../../../src/crypto/verification/SASDecimal.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAc/E"}
@@ -1,34 +0,0 @@
1
- /*
2
- Copyright 2018 - 2022 The Matrix.org Foundation C.I.C.
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
- */
16
-
17
- /**
18
- * Implementation of decimal encoding of SAS as per:
19
- * https://spec.matrix.org/v1.4/client-server-api/#sas-method-decimal
20
- * @param sasBytes - the five bytes generated by HKDF
21
- * @returns the derived three numbers between 1000 and 9191 inclusive
22
- */
23
- export function generateDecimalSas(sasBytes) {
24
- /*
25
- * +--------+--------+--------+--------+--------+
26
- * | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 |
27
- * +--------+--------+--------+--------+--------+
28
- * bits: 87654321 87654321 87654321 87654321 87654321
29
- * \____________/\_____________/\____________/
30
- * 1st number 2nd number 3rd number
31
- */
32
- return [(sasBytes[0] << 5 | sasBytes[1] >> 3) + 1000, ((sasBytes[1] & 0x7) << 10 | sasBytes[2] << 2 | sasBytes[3] >> 6) + 1000, ((sasBytes[3] & 0x3f) << 7 | sasBytes[4] >> 1) + 1000];
33
- }
34
- //# sourceMappingURL=SASDecimal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SASDecimal.js","names":["generateDecimalSas","sasBytes"],"sources":["../../../src/crypto/verification/SASDecimal.ts"],"sourcesContent":["/*\nCopyright 2018 - 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Implementation of decimal encoding of SAS as per:\n * https://spec.matrix.org/v1.4/client-server-api/#sas-method-decimal\n * @param sasBytes - the five bytes generated by HKDF\n * @returns the derived three numbers between 1000 and 9191 inclusive\n */\nexport function generateDecimalSas(sasBytes: number[]): [number, number, number] {\n /*\n * +--------+--------+--------+--------+--------+\n * | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 |\n * +--------+--------+--------+--------+--------+\n * bits: 87654321 87654321 87654321 87654321 87654321\n * \\____________/\\_____________/\\____________/\n * 1st number 2nd number 3rd number\n */\n return [\n ((sasBytes[0] << 5) | (sasBytes[1] >> 3)) + 1000,\n (((sasBytes[1] & 0x7) << 10) | (sasBytes[2] << 2) | (sasBytes[3] >> 6)) + 1000,\n (((sasBytes[3] & 0x3f) << 7) | (sasBytes[4] >> 1)) + 1000,\n ];\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,kBAAkBA,CAACC,QAAkB,EAA4B;EAC7E;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI,OAAO,CACH,CAAEA,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAKA,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAE,IAAI,IAAI,EAChD,CAAE,CAACA,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,EAAE,GAAKA,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAE,GAAIA,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAE,IAAI,IAAI,EAC9E,CAAE,CAACA,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,GAAKA,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAE,IAAI,IAAI,CAC5D;AACL","ignoreList":[]}
@@ -1,18 +0,0 @@
1
- import { MatrixEvent } from "../../../models/event.ts";
2
- import { VerificationRequest } from "./VerificationRequest.ts";
3
- export interface IVerificationChannel {
4
- request?: VerificationRequest;
5
- readonly userId?: string;
6
- readonly roomId?: string;
7
- readonly deviceId?: string;
8
- readonly transactionId?: string;
9
- readonly receiveStartFromOtherDevices?: boolean;
10
- getTimestamp(event: MatrixEvent): number;
11
- send(type: string, uncompletedContent: Record<string, any>): Promise<void>;
12
- completeContent(type: string, content: Record<string, any>): Record<string, any>;
13
- sendCompleted(type: string, content: Record<string, any>): Promise<void>;
14
- completedContentFromEvent(event: MatrixEvent): Record<string, any>;
15
- canCreateRequest(type: string): boolean;
16
- handleEvent(event: MatrixEvent, request: VerificationRequest, isLiveEvent: boolean): Promise<void>;
17
- }
18
- //# sourceMappingURL=Channel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../../src/crypto/verification/request/Channel.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACjC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAChD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjF,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnE,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtG"}
@@ -1 +0,0 @@
1
- export {};