ts-mls 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (887) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +194 -0
  3. package/dist/codec/number.d.ts +10 -0
  4. package/dist/codec/number.js +73 -0
  5. package/dist/codec/number.js.map +1 -0
  6. package/dist/codec/optional.d.ts +4 -0
  7. package/dist/codec/optional.js +24 -0
  8. package/dist/codec/optional.js.map +1 -0
  9. package/dist/codec/tlsDecoder.d.ts +16 -0
  10. package/dist/codec/tlsDecoder.js +98 -0
  11. package/dist/codec/tlsDecoder.js.map +1 -0
  12. package/dist/codec/tlsEncoder.d.ts +9 -0
  13. package/dist/codec/tlsEncoder.js +29 -0
  14. package/dist/codec/tlsEncoder.js.map +1 -0
  15. package/dist/codec/variableLength.d.ts +10 -0
  16. package/dist/codec/variableLength.js +102 -0
  17. package/dist/codec/variableLength.js.map +1 -0
  18. package/dist/codec/vector.d.ts +10 -0
  19. package/dist/codec/vector.js +76 -0
  20. package/dist/codec/vector.js.map +1 -0
  21. package/dist/crypto/aead.d.ts +5 -0
  22. package/dist/crypto/aead.js +56 -0
  23. package/dist/crypto/aead.js.map +1 -0
  24. package/dist/crypto/ciphersuite.d.ts +47 -0
  25. package/dist/crypto/ciphersuite.js +208 -0
  26. package/dist/crypto/ciphersuite.js.map +1 -0
  27. package/dist/crypto/hash.d.ts +8 -0
  28. package/dist/crypto/hash.js +36 -0
  29. package/dist/crypto/hash.js.map +1 -0
  30. package/dist/crypto/hpke.d.ts +46 -0
  31. package/dist/crypto/hpke.js +73 -0
  32. package/dist/crypto/hpke.js.map +1 -0
  33. package/dist/crypto/kdf.d.ts +12 -0
  34. package/dist/crypto/kdf.js +49 -0
  35. package/dist/crypto/kdf.js.map +1 -0
  36. package/dist/crypto/kem.d.ts +3 -0
  37. package/dist/crypto/kem.js +29 -0
  38. package/dist/crypto/kem.js.map +1 -0
  39. package/dist/crypto/rng.d.ts +4 -0
  40. package/dist/crypto/rng.js +9 -0
  41. package/dist/crypto/rng.js.map +1 -0
  42. package/dist/crypto/signature.d.ts +12 -0
  43. package/dist/crypto/signature.js +73 -0
  44. package/dist/crypto/signature.js.map +1 -0
  45. package/dist/src/AuthenticationService.d.ts +7 -0
  46. package/dist/src/AuthenticationService.js +9 -0
  47. package/dist/src/AuthenticationService.js.map +1 -0
  48. package/dist/src/IncomingMessageAction.d.ts +10 -0
  49. package/dist/src/IncomingMessageAction.d.ts.map +1 -0
  50. package/dist/src/IncomingMessageAction.js +6 -0
  51. package/dist/src/IncomingMessageAction.js.map +1 -0
  52. package/dist/src/PaddingConfig.d.ts +9 -0
  53. package/dist/src/PaddingConfig.js +12 -0
  54. package/dist/src/PaddingConfig.js.map +1 -0
  55. package/dist/src/authenticatedContent.d.ts +32 -0
  56. package/dist/src/authenticatedContent.d.ts.map +1 -0
  57. package/dist/src/authenticatedContent.js +32 -0
  58. package/dist/src/authenticatedContent.js.map +1 -0
  59. package/dist/src/authenticationService.d.ts.map +1 -0
  60. package/dist/src/capabilities.d.ts +14 -0
  61. package/dist/src/capabilities.d.ts.map +1 -0
  62. package/dist/src/capabilities.js +31 -0
  63. package/dist/src/capabilities.js.map +1 -0
  64. package/dist/src/clientConfig.d.ts +21 -0
  65. package/dist/src/clientConfig.d.ts.map +1 -0
  66. package/dist/src/clientConfig.js +16 -0
  67. package/dist/src/clientConfig.js.map +1 -0
  68. package/dist/src/clientState.d.ts +122 -0
  69. package/dist/src/clientState.d.ts.map +1 -0
  70. package/dist/src/clientState.js +562 -0
  71. package/dist/src/clientState.js.map +1 -0
  72. package/dist/src/codec/number.d.ts +10 -0
  73. package/dist/src/codec/number.d.ts.map +1 -0
  74. package/dist/src/codec/number.js +67 -0
  75. package/dist/src/codec/number.js.map +1 -0
  76. package/dist/src/codec/optional.d.ts +4 -0
  77. package/dist/src/codec/optional.d.ts.map +1 -0
  78. package/dist/src/codec/optional.js +24 -0
  79. package/dist/src/codec/optional.js.map +1 -0
  80. package/dist/src/codec/tlsDecoder.d.ts +14 -0
  81. package/dist/src/codec/tlsDecoder.d.ts.map +1 -0
  82. package/dist/src/codec/tlsDecoder.js +90 -0
  83. package/dist/src/codec/tlsDecoder.js.map +1 -0
  84. package/dist/src/codec/tlsEncoder.d.ts +9 -0
  85. package/dist/src/codec/tlsEncoder.d.ts.map +1 -0
  86. package/dist/src/codec/tlsEncoder.js +29 -0
  87. package/dist/src/codec/tlsEncoder.js.map +1 -0
  88. package/dist/src/codec/variableLength.d.ts +11 -0
  89. package/dist/src/codec/variableLength.d.ts.map +1 -0
  90. package/dist/src/codec/variableLength.js +104 -0
  91. package/dist/src/codec/variableLength.js.map +1 -0
  92. package/dist/src/commit.d.ts +10 -0
  93. package/dist/src/commit.d.ts.map +1 -0
  94. package/dist/src/commit.js +12 -0
  95. package/dist/src/commit.js.map +1 -0
  96. package/dist/src/contentType.d.ts +12 -0
  97. package/dist/src/contentType.d.ts.map +1 -0
  98. package/dist/src/contentType.js +15 -0
  99. package/dist/src/contentType.js.map +1 -0
  100. package/dist/src/createCommit.d.ts +32 -0
  101. package/dist/src/createCommit.d.ts.map +1 -0
  102. package/dist/src/createCommit.js +260 -0
  103. package/dist/src/createCommit.js.map +1 -0
  104. package/dist/src/createMessage.d.ts +24 -0
  105. package/dist/src/createMessage.d.ts.map +1 -0
  106. package/dist/src/createMessage.js +36 -0
  107. package/dist/src/createMessage.js.map +1 -0
  108. package/dist/src/credential.d.ts +21 -0
  109. package/dist/src/credential.d.ts.map +1 -0
  110. package/dist/src/credential.js +35 -0
  111. package/dist/src/credential.js.map +1 -0
  112. package/dist/src/credentialType.d.ts +11 -0
  113. package/dist/src/credentialType.d.ts.map +1 -0
  114. package/dist/src/credentialType.js +14 -0
  115. package/dist/src/credentialType.js.map +1 -0
  116. package/dist/src/crypto/aead.d.ts +8 -0
  117. package/dist/src/crypto/aead.d.ts.map +1 -0
  118. package/dist/src/crypto/aead.js +105 -0
  119. package/dist/src/crypto/aead.js.map +1 -0
  120. package/dist/src/crypto/ciphersuite.d.ts +51 -0
  121. package/dist/src/crypto/ciphersuite.d.ts.map +1 -0
  122. package/dist/src/crypto/ciphersuite.js +252 -0
  123. package/dist/src/crypto/ciphersuite.js.map +1 -0
  124. package/dist/src/crypto/hash.d.ts +8 -0
  125. package/dist/src/crypto/hash.d.ts.map +1 -0
  126. package/dist/src/crypto/hash.js +36 -0
  127. package/dist/src/crypto/hash.js.map +1 -0
  128. package/dist/src/crypto/hpke.d.ts +51 -0
  129. package/dist/src/crypto/hpke.d.ts.map +1 -0
  130. package/dist/src/crypto/hpke.js +114 -0
  131. package/dist/src/crypto/hpke.js.map +1 -0
  132. package/dist/src/crypto/kdf.d.ts +12 -0
  133. package/dist/src/crypto/kdf.d.ts.map +1 -0
  134. package/dist/src/crypto/kdf.js +49 -0
  135. package/dist/src/crypto/kdf.js.map +1 -0
  136. package/dist/src/crypto/kem.d.ts +3 -0
  137. package/dist/src/crypto/kem.d.ts.map +1 -0
  138. package/dist/src/crypto/kem.js +85 -0
  139. package/dist/src/crypto/kem.js.map +1 -0
  140. package/dist/src/crypto/rng.d.ts +4 -0
  141. package/dist/src/crypto/rng.d.ts.map +1 -0
  142. package/dist/src/crypto/rng.js +9 -0
  143. package/dist/src/crypto/rng.js.map +1 -0
  144. package/dist/src/crypto/signature.d.ts +12 -0
  145. package/dist/src/crypto/signature.d.ts.map +1 -0
  146. package/dist/src/crypto/signature.js +165 -0
  147. package/dist/src/crypto/signature.js.map +1 -0
  148. package/dist/src/customCredential.d.ts +2 -0
  149. package/dist/src/customCredential.d.ts.map +1 -0
  150. package/dist/src/customCredential.js +14 -0
  151. package/dist/src/customCredential.js.map +1 -0
  152. package/dist/src/customExtension.d.ts +2 -0
  153. package/dist/src/customExtension.js +11 -0
  154. package/dist/src/customExtension.js.map +1 -0
  155. package/dist/src/customProposal.d.ts +2 -0
  156. package/dist/src/customProposal.js +11 -0
  157. package/dist/src/customProposal.js.map +1 -0
  158. package/dist/src/defaultCapabilities.d.ts +2 -0
  159. package/dist/src/defaultCapabilities.d.ts.map +1 -0
  160. package/dist/src/defaultCapabilities.js +15 -0
  161. package/dist/src/defaultCapabilities.js.map +1 -0
  162. package/dist/src/defaultExtensionType.d.ts +13 -0
  163. package/dist/src/defaultExtensionType.d.ts.map +1 -0
  164. package/dist/src/defaultExtensionType.js +17 -0
  165. package/dist/src/defaultExtensionType.js.map +1 -0
  166. package/dist/src/defaultProposalType.d.ts +15 -0
  167. package/dist/src/defaultProposalType.d.ts.map +1 -0
  168. package/dist/src/defaultProposalType.js +19 -0
  169. package/dist/src/defaultProposalType.js.map +1 -0
  170. package/dist/src/extension.d.ts +18 -0
  171. package/dist/src/extension.d.ts.map +1 -0
  172. package/dist/src/extension.js +38 -0
  173. package/dist/src/extension.js.map +1 -0
  174. package/dist/src/extensionType.d.ts +13 -0
  175. package/dist/src/extensionType.js +17 -0
  176. package/dist/src/extensionType.js.map +1 -0
  177. package/dist/src/externalProposal.d.ts +7 -0
  178. package/dist/src/externalProposal.d.ts.map +1 -0
  179. package/dist/src/externalProposal.js +44 -0
  180. package/dist/src/externalProposal.js.map +1 -0
  181. package/dist/src/externalSender.d.ts +9 -0
  182. package/dist/src/externalSender.d.ts.map +1 -0
  183. package/dist/src/externalSender.js +10 -0
  184. package/dist/src/externalSender.js.map +1 -0
  185. package/dist/src/framedContent.d.ts +113 -0
  186. package/dist/src/framedContent.d.ts.map +1 -0
  187. package/dist/src/framedContent.js +144 -0
  188. package/dist/src/framedContent.js.map +1 -0
  189. package/dist/src/grease.d.ts +16 -0
  190. package/dist/src/grease.d.ts.map +1 -0
  191. package/dist/src/grease.js +37 -0
  192. package/dist/src/grease.js.map +1 -0
  193. package/dist/src/groupContext.d.ts +19 -0
  194. package/dist/src/groupContext.d.ts.map +1 -0
  195. package/dist/src/groupContext.js +49 -0
  196. package/dist/src/groupContext.js.map +1 -0
  197. package/dist/src/groupInfo.d.ts +26 -0
  198. package/dist/src/groupInfo.d.ts.map +1 -0
  199. package/dist/src/groupInfo.js +55 -0
  200. package/dist/src/groupInfo.js.map +1 -0
  201. package/dist/src/groupSecrets.d.ts +10 -0
  202. package/dist/src/groupSecrets.d.ts.map +1 -0
  203. package/dist/src/groupSecrets.js +11 -0
  204. package/dist/src/groupSecrets.js.map +1 -0
  205. package/dist/src/hpkeCiphertext.d.ts +8 -0
  206. package/dist/src/hpkeCiphertext.d.ts.map +1 -0
  207. package/dist/src/hpkeCiphertext.js +9 -0
  208. package/dist/src/hpkeCiphertext.js.map +1 -0
  209. package/dist/src/index.d.ts +32 -0
  210. package/dist/src/index.d.ts.map +1 -0
  211. package/dist/src/index.js +68 -0
  212. package/dist/src/index.js.map +1 -0
  213. package/dist/src/keyPackage.d.ts +38 -0
  214. package/dist/src/keyPackage.d.ts.map +1 -0
  215. package/dist/src/keyPackage.js +79 -0
  216. package/dist/src/keyPackage.js.map +1 -0
  217. package/dist/src/keyPackageEqualityConfig.d.ts +7 -0
  218. package/dist/src/keyPackageEqualityConfig.d.ts.map +1 -0
  219. package/dist/src/keyPackageEqualityConfig.js +13 -0
  220. package/dist/src/keyPackageEqualityConfig.js.map +1 -0
  221. package/dist/src/keyRetentionConfig.d.ts +6 -0
  222. package/dist/src/keyRetentionConfig.d.ts.map +1 -0
  223. package/dist/src/keyRetentionConfig.js +9 -0
  224. package/dist/src/keyRetentionConfig.js.map +1 -0
  225. package/dist/src/keySchedule.d.ts +24 -0
  226. package/dist/src/keySchedule.d.ts.map +1 -0
  227. package/dist/src/keySchedule.js +49 -0
  228. package/dist/src/keySchedule.js.map +1 -0
  229. package/dist/src/leafNode.d.ts +78 -0
  230. package/dist/src/leafNode.d.ts.map +1 -0
  231. package/dist/src/leafNode.js +96 -0
  232. package/dist/src/leafNode.js.map +1 -0
  233. package/dist/src/leafNodeSource.d.ts +12 -0
  234. package/dist/src/leafNodeSource.d.ts.map +1 -0
  235. package/dist/src/leafNodeSource.js +15 -0
  236. package/dist/src/leafNodeSource.js.map +1 -0
  237. package/dist/src/lifetime.d.ts +9 -0
  238. package/dist/src/lifetime.d.ts.map +1 -0
  239. package/dist/src/lifetime.js +16 -0
  240. package/dist/src/lifetime.js.map +1 -0
  241. package/dist/src/lifetimeConfig.d.ts +5 -0
  242. package/dist/src/lifetimeConfig.d.ts.map +1 -0
  243. package/dist/src/lifetimeConfig.js +8 -0
  244. package/dist/src/lifetimeConfig.js.map +1 -0
  245. package/dist/src/message.d.ts +42 -0
  246. package/dist/src/message.d.ts.map +1 -0
  247. package/dist/src/message.js +49 -0
  248. package/dist/src/message.js.map +1 -0
  249. package/dist/src/messageProtection.d.ts +36 -0
  250. package/dist/src/messageProtection.d.ts.map +1 -0
  251. package/dist/src/messageProtection.js +135 -0
  252. package/dist/src/messageProtection.js.map +1 -0
  253. package/dist/src/messageProtectionPublic.d.ts +17 -0
  254. package/dist/src/messageProtectionPublic.d.ts.map +1 -0
  255. package/dist/src/messageProtectionPublic.js +105 -0
  256. package/dist/src/messageProtectionPublic.js.map +1 -0
  257. package/dist/src/mlsError.d.ts +24 -0
  258. package/dist/src/mlsError.d.ts.map +1 -0
  259. package/dist/src/mlsError.js +60 -0
  260. package/dist/src/mlsError.js.map +1 -0
  261. package/dist/src/nodeType.d.ts +11 -0
  262. package/dist/src/nodeType.d.ts.map +1 -0
  263. package/dist/src/nodeType.js +14 -0
  264. package/dist/src/nodeType.js.map +1 -0
  265. package/dist/src/paddingConfig.d.ts.map +1 -0
  266. package/dist/src/parentHash.d.ts +16 -0
  267. package/dist/src/parentHash.d.ts.map +1 -0
  268. package/dist/src/parentHash.js +108 -0
  269. package/dist/src/parentHash.js.map +1 -0
  270. package/dist/src/parentNode.d.ts +9 -0
  271. package/dist/src/parentNode.d.ts.map +1 -0
  272. package/dist/src/parentNode.js +14 -0
  273. package/dist/src/parentNode.js.map +1 -0
  274. package/dist/src/pathSecrets.d.ts +10 -0
  275. package/dist/src/pathSecrets.d.ts.map +1 -0
  276. package/dist/src/pathSecrets.js +36 -0
  277. package/dist/src/pathSecrets.js.map +1 -0
  278. package/dist/src/presharedkey.d.ts +51 -0
  279. package/dist/src/presharedkey.d.ts.map +1 -0
  280. package/dist/src/presharedkey.js +65 -0
  281. package/dist/src/presharedkey.js.map +1 -0
  282. package/dist/src/privateKeyPath.d.ts +12 -0
  283. package/dist/src/privateKeyPath.d.ts.map +1 -0
  284. package/dist/src/privateKeyPath.js +26 -0
  285. package/dist/src/privateKeyPath.js.map +1 -0
  286. package/dist/src/privateMessage.d.ts +41 -0
  287. package/dist/src/privateMessage.d.ts.map +1 -0
  288. package/dist/src/privateMessage.js +122 -0
  289. package/dist/src/privateMessage.js.map +1 -0
  290. package/dist/src/processMessages.d.ts +26 -0
  291. package/dist/src/processMessages.d.ts.map +1 -0
  292. package/dist/src/processMessages.js +201 -0
  293. package/dist/src/processMessages.js.map +1 -0
  294. package/dist/src/proposal.d.ts +97 -0
  295. package/dist/src/proposal.d.ts.map +1 -0
  296. package/dist/src/proposal.js +96 -0
  297. package/dist/src/proposal.js.map +1 -0
  298. package/dist/src/proposalOrRefType.d.ts +25 -0
  299. package/dist/src/proposalOrRefType.d.ts.map +1 -0
  300. package/dist/src/proposalOrRefType.js +35 -0
  301. package/dist/src/proposalOrRefType.js.map +1 -0
  302. package/dist/src/proposalType.d.ts +15 -0
  303. package/dist/src/proposalType.js +19 -0
  304. package/dist/src/proposalType.js.map +1 -0
  305. package/dist/src/protectMessages.d.ts +20 -0
  306. package/dist/src/protectMessages.js +116 -0
  307. package/dist/src/protectMessages.js.map +1 -0
  308. package/dist/src/protocolVersion.d.ts +9 -0
  309. package/dist/src/protocolVersion.d.ts.map +1 -0
  310. package/dist/src/protocolVersion.js +13 -0
  311. package/dist/src/protocolVersion.js.map +1 -0
  312. package/dist/src/pskIndex.d.ts +7 -0
  313. package/dist/src/pskIndex.d.ts.map +1 -0
  314. package/dist/src/pskIndex.js +22 -0
  315. package/dist/src/pskIndex.js.map +1 -0
  316. package/dist/src/publicMessage.d.ts +29 -0
  317. package/dist/src/publicMessage.d.ts.map +1 -0
  318. package/dist/src/publicMessage.js +78 -0
  319. package/dist/src/publicMessage.js.map +1 -0
  320. package/dist/src/ratchetTree.d.ts +46 -0
  321. package/dist/src/ratchetTree.d.ts.map +1 -0
  322. package/dist/src/ratchetTree.js +276 -0
  323. package/dist/src/ratchetTree.js.map +1 -0
  324. package/dist/src/requiredCapabilites.d.ts +12 -0
  325. package/dist/src/requiredCapabilites.js +12 -0
  326. package/dist/src/requiredCapabilites.js.map +1 -0
  327. package/dist/src/requiredCapabilities.d.ts +10 -0
  328. package/dist/src/requiredCapabilities.d.ts.map +1 -0
  329. package/dist/src/requiredCapabilities.js +11 -0
  330. package/dist/src/requiredCapabilities.js.map +1 -0
  331. package/dist/src/resumption.d.ts +18 -0
  332. package/dist/src/resumption.d.ts.map +1 -0
  333. package/dist/src/resumption.js +82 -0
  334. package/dist/src/resumption.js.map +1 -0
  335. package/dist/src/secretTree.d.ts +29 -0
  336. package/dist/src/secretTree.d.ts.map +1 -0
  337. package/dist/src/secretTree.js +146 -0
  338. package/dist/src/secretTree.js.map +1 -0
  339. package/dist/src/sender.d.ts +56 -0
  340. package/dist/src/sender.d.ts.map +1 -0
  341. package/dist/src/sender.js +91 -0
  342. package/dist/src/sender.js.map +1 -0
  343. package/dist/src/transcriptHash.d.ts +14 -0
  344. package/dist/src/transcriptHash.d.ts.map +1 -0
  345. package/dist/src/transcriptHash.js +28 -0
  346. package/dist/src/transcriptHash.js.map +1 -0
  347. package/dist/src/treeHash.d.ts +27 -0
  348. package/dist/src/treeHash.d.ts.map +1 -0
  349. package/dist/src/treeHash.js +76 -0
  350. package/dist/src/treeHash.js.map +1 -0
  351. package/dist/src/treemath.d.ts +14 -0
  352. package/dist/src/treemath.d.ts.map +1 -0
  353. package/dist/src/treemath.js +103 -0
  354. package/dist/src/treemath.js.map +1 -0
  355. package/dist/src/unappliedProposals.d.ts +7 -0
  356. package/dist/src/unappliedProposals.d.ts.map +1 -0
  357. package/dist/src/unappliedProposals.js +12 -0
  358. package/dist/src/unappliedProposals.js.map +1 -0
  359. package/dist/src/updatePath.d.ts +34 -0
  360. package/dist/src/updatePath.d.ts.map +1 -0
  361. package/dist/src/updatePath.js +170 -0
  362. package/dist/src/updatePath.js.map +1 -0
  363. package/dist/src/util/addToMap.d.ts +1 -0
  364. package/dist/src/util/addToMap.d.ts.map +1 -0
  365. package/dist/src/util/addToMap.js +9 -0
  366. package/dist/src/util/addToMap.js.map +1 -0
  367. package/dist/src/util/array.d.ts +2 -0
  368. package/dist/src/util/array.d.ts.map +1 -0
  369. package/dist/src/util/array.js +13 -0
  370. package/dist/src/util/array.js.map +1 -0
  371. package/dist/src/util/byteArray.d.ts +3 -0
  372. package/dist/src/util/byteArray.d.ts.map +1 -0
  373. package/dist/src/util/byteArray.js +32 -0
  374. package/dist/src/util/byteArray.js.map +1 -0
  375. package/dist/src/util/constantTimeCompare.d.ts +1 -0
  376. package/dist/src/util/constantTimeCompare.d.ts.map +1 -0
  377. package/dist/src/util/constantTimeCompare.js +13 -0
  378. package/dist/src/util/constantTimeCompare.js.map +1 -0
  379. package/dist/src/util/enumHelpers.d.ts +4 -0
  380. package/dist/src/util/enumHelpers.d.ts.map +1 -0
  381. package/dist/src/util/enumHelpers.js +34 -0
  382. package/dist/src/util/enumHelpers.js.map +1 -0
  383. package/dist/src/util/repeat.d.ts +1 -0
  384. package/dist/src/util/repeat.d.ts.map +1 -0
  385. package/dist/src/util/repeat.js +11 -0
  386. package/dist/src/util/repeat.js.map +1 -0
  387. package/dist/src/welcome.d.ts +29 -0
  388. package/dist/src/welcome.d.ts.map +1 -0
  389. package/dist/src/welcome.js +55 -0
  390. package/dist/src/welcome.js.map +1 -0
  391. package/dist/src/wireformat.d.ts +13 -0
  392. package/dist/src/wireformat.d.ts.map +1 -0
  393. package/dist/src/wireformat.js +18 -0
  394. package/dist/src/wireformat.js.map +1 -0
  395. package/dist/test/base64.test.d.ts +1 -0
  396. package/dist/test/base64.test.d.ts.map +1 -0
  397. package/dist/test/base64.test.js +69 -0
  398. package/dist/test/base64.test.js.map +1 -0
  399. package/dist/test/codec/authenticatedContent.test.d.ts +1 -0
  400. package/dist/test/codec/authenticatedContent.test.d.ts.map +1 -0
  401. package/dist/test/codec/authenticatedContent.test.js +40 -0
  402. package/dist/test/codec/authenticatedContent.test.js.map +1 -0
  403. package/dist/test/codec/capabilities.test.d.ts +1 -0
  404. package/dist/test/codec/capabilities.test.d.ts.map +1 -0
  405. package/dist/test/codec/capabilities.test.js +28 -0
  406. package/dist/test/codec/capabilities.test.js.map +1 -0
  407. package/dist/test/codec/commit.test.d.ts +1 -0
  408. package/dist/test/codec/commit.test.d.ts.map +1 -0
  409. package/dist/test/codec/commit.test.js +17 -0
  410. package/dist/test/codec/commit.test.js.map +1 -0
  411. package/dist/test/codec/composite.test.d.ts +1 -0
  412. package/dist/test/codec/composite.test.d.ts.map +1 -0
  413. package/dist/test/codec/composite.test.js +63 -0
  414. package/dist/test/codec/composite.test.js.map +1 -0
  415. package/dist/test/codec/contentType.test.d.ts +1 -0
  416. package/dist/test/codec/contentType.test.d.ts.map +1 -0
  417. package/dist/test/codec/contentType.test.js +14 -0
  418. package/dist/test/codec/contentType.test.js.map +1 -0
  419. package/dist/test/codec/credential.test.d.ts +1 -0
  420. package/dist/test/codec/credential.test.d.ts.map +1 -0
  421. package/dist/test/codec/credential.test.js +19 -0
  422. package/dist/test/codec/credential.test.js.map +1 -0
  423. package/dist/test/codec/credentialType.test.d.ts +1 -0
  424. package/dist/test/codec/credentialType.test.d.ts.map +1 -0
  425. package/dist/test/codec/credentialType.test.js +14 -0
  426. package/dist/test/codec/credentialType.test.js.map +1 -0
  427. package/dist/test/codec/encryptedGroupSecrets.test.d.ts +1 -0
  428. package/dist/test/codec/encryptedGroupSecrets.test.d.ts.map +1 -0
  429. package/dist/test/codec/encryptedGroupSecrets.test.js +20 -0
  430. package/dist/test/codec/encryptedGroupSecrets.test.js.map +1 -0
  431. package/dist/test/codec/extension.test.d.ts +1 -0
  432. package/dist/test/codec/extension.test.d.ts.map +1 -0
  433. package/dist/test/codec/extension.test.js +22 -0
  434. package/dist/test/codec/extension.test.js.map +1 -0
  435. package/dist/test/codec/extensionType.test.d.ts +1 -0
  436. package/dist/test/codec/extensionType.test.d.ts.map +1 -0
  437. package/dist/test/codec/extensionType.test.js +14 -0
  438. package/dist/test/codec/extensionType.test.js.map +1 -0
  439. package/dist/test/codec/externalSender.test.d.ts +1 -0
  440. package/dist/test/codec/externalSender.test.d.ts.map +1 -0
  441. package/dist/test/codec/externalSender.test.js +22 -0
  442. package/dist/test/codec/externalSender.test.js.map +1 -0
  443. package/dist/test/codec/framedContent.test.d.ts +1 -0
  444. package/dist/test/codec/framedContent.test.d.ts.map +1 -0
  445. package/dist/test/codec/framedContent.test.js +28 -0
  446. package/dist/test/codec/framedContent.test.js.map +1 -0
  447. package/dist/test/codec/groupContext.test.d.ts +1 -0
  448. package/dist/test/codec/groupContext.test.d.ts.map +1 -0
  449. package/dist/test/codec/groupContext.test.js +32 -0
  450. package/dist/test/codec/groupContext.test.js.map +1 -0
  451. package/dist/test/codec/groupInfo.test.d.ts +1 -0
  452. package/dist/test/codec/groupInfo.test.d.ts.map +1 -0
  453. package/dist/test/codec/groupInfo.test.js +47 -0
  454. package/dist/test/codec/groupInfo.test.js.map +1 -0
  455. package/dist/test/codec/groupSecrets.test.d.ts +1 -0
  456. package/dist/test/codec/groupSecrets.test.d.ts.map +1 -0
  457. package/dist/test/codec/groupSecrets.test.js +18 -0
  458. package/dist/test/codec/groupSecrets.test.js.map +1 -0
  459. package/dist/test/codec/hpkeCiphertext.test.d.ts +1 -0
  460. package/dist/test/codec/hpkeCiphertext.test.d.ts.map +1 -0
  461. package/dist/test/codec/hpkeCiphertext.test.js +15 -0
  462. package/dist/test/codec/hpkeCiphertext.test.js.map +1 -0
  463. package/dist/test/codec/keyPackage.test.d.ts +1 -0
  464. package/dist/test/codec/keyPackage.test.d.ts.map +1 -0
  465. package/dist/test/codec/keyPackage.test.js +60 -0
  466. package/dist/test/codec/keyPackage.test.js.map +1 -0
  467. package/dist/test/codec/keyPackageTBS.test.d.ts +1 -0
  468. package/dist/test/codec/keyPackageTBS.test.d.ts.map +1 -0
  469. package/dist/test/codec/keyPackageTBS.test.js +61 -0
  470. package/dist/test/codec/keyPackageTBS.test.js.map +1 -0
  471. package/dist/test/codec/leafNode.test.d.ts +1 -0
  472. package/dist/test/codec/leafNode.test.d.ts.map +1 -0
  473. package/dist/test/codec/leafNode.test.js +45 -0
  474. package/dist/test/codec/leafNode.test.js.map +1 -0
  475. package/dist/test/codec/leafNodeData.test.d.ts +1 -0
  476. package/dist/test/codec/leafNodeData.test.d.ts.map +1 -0
  477. package/dist/test/codec/leafNodeData.test.js +38 -0
  478. package/dist/test/codec/leafNodeData.test.js.map +1 -0
  479. package/dist/test/codec/leafNodeSource.test.d.ts +1 -0
  480. package/dist/test/codec/leafNodeSource.test.d.ts.map +1 -0
  481. package/dist/test/codec/leafNodeSource.test.js +17 -0
  482. package/dist/test/codec/leafNodeSource.test.js.map +1 -0
  483. package/dist/test/codec/lifetime.test.d.ts +1 -0
  484. package/dist/test/codec/lifetime.test.d.ts.map +1 -0
  485. package/dist/test/codec/lifetime.test.js +14 -0
  486. package/dist/test/codec/lifetime.test.js.map +1 -0
  487. package/dist/test/codec/message.test.d.ts +1 -0
  488. package/dist/test/codec/message.test.d.ts.map +1 -0
  489. package/dist/test/codec/message.test.js +102 -0
  490. package/dist/test/codec/message.test.js.map +1 -0
  491. package/dist/test/codec/nodeType.test.d.ts +1 -0
  492. package/dist/test/codec/nodeType.test.d.ts.map +1 -0
  493. package/dist/test/codec/nodeType.test.js +14 -0
  494. package/dist/test/codec/nodeType.test.js.map +1 -0
  495. package/dist/test/codec/number.test.d.ts +1 -0
  496. package/dist/test/codec/number.test.d.ts.map +1 -0
  497. package/dist/test/codec/number.test.js +76 -0
  498. package/dist/test/codec/number.test.js.map +1 -0
  499. package/dist/test/codec/optional.test.d.ts +1 -0
  500. package/dist/test/codec/optional.test.d.ts.map +1 -0
  501. package/dist/test/codec/optional.test.js +44 -0
  502. package/dist/test/codec/optional.test.js.map +1 -0
  503. package/dist/test/codec/padding.test.d.ts +1 -0
  504. package/dist/test/codec/padding.test.d.ts.map +1 -0
  505. package/dist/test/codec/padding.test.js +42 -0
  506. package/dist/test/codec/padding.test.js.map +1 -0
  507. package/dist/test/codec/parentHash.test.d.ts +1 -0
  508. package/dist/test/codec/parentHash.test.d.ts.map +1 -0
  509. package/dist/test/codec/parentHash.test.js +15 -0
  510. package/dist/test/codec/parentHash.test.js.map +1 -0
  511. package/dist/test/codec/parentNode.test.d.ts +1 -0
  512. package/dist/test/codec/parentNode.test.d.ts.map +1 -0
  513. package/dist/test/codec/parentNode.test.js +24 -0
  514. package/dist/test/codec/parentNode.test.js.map +1 -0
  515. package/dist/test/codec/presharedkey.test.d.ts +1 -0
  516. package/dist/test/codec/presharedkey.test.d.ts.map +1 -0
  517. package/dist/test/codec/presharedkey.test.js +37 -0
  518. package/dist/test/codec/presharedkey.test.js.map +1 -0
  519. package/dist/test/codec/privateContentAAD.test.d.ts +1 -0
  520. package/dist/test/codec/privateContentAAD.test.d.ts.map +1 -0
  521. package/dist/test/codec/privateContentAAD.test.js +32 -0
  522. package/dist/test/codec/privateContentAAD.test.js.map +1 -0
  523. package/dist/test/codec/privateMessage.test.d.ts +1 -0
  524. package/dist/test/codec/privateMessage.test.d.ts.map +1 -0
  525. package/dist/test/codec/privateMessage.test.js +38 -0
  526. package/dist/test/codec/privateMessage.test.js.map +1 -0
  527. package/dist/test/codec/proposal.test.d.ts +1 -0
  528. package/dist/test/codec/proposal.test.d.ts.map +1 -0
  529. package/dist/test/codec/proposal.test.js +46 -0
  530. package/dist/test/codec/proposal.test.js.map +1 -0
  531. package/dist/test/codec/proposalOrRef.test.d.ts +1 -0
  532. package/dist/test/codec/proposalOrRef.test.d.ts.map +1 -0
  533. package/dist/test/codec/proposalOrRef.test.js +14 -0
  534. package/dist/test/codec/proposalOrRef.test.js.map +1 -0
  535. package/dist/test/codec/proposalOrRefType.test.d.ts +1 -0
  536. package/dist/test/codec/proposalOrRefType.test.d.ts.map +1 -0
  537. package/dist/test/codec/proposalOrRefType.test.js +14 -0
  538. package/dist/test/codec/proposalOrRefType.test.js.map +1 -0
  539. package/dist/test/codec/proposalType.test.d.ts +1 -0
  540. package/dist/test/codec/proposalType.test.d.ts.map +1 -0
  541. package/dist/test/codec/proposalType.test.js +14 -0
  542. package/dist/test/codec/proposalType.test.js.map +1 -0
  543. package/dist/test/codec/protocolVersion.test.d.ts +1 -0
  544. package/dist/test/codec/protocolVersion.test.d.ts.map +1 -0
  545. package/dist/test/codec/protocolVersion.test.js +11 -0
  546. package/dist/test/codec/protocolVersion.test.js.map +1 -0
  547. package/dist/test/codec/pskId.test.d.ts +1 -0
  548. package/dist/test/codec/pskId.test.d.ts.map +1 -0
  549. package/dist/test/codec/pskId.test.js +20 -0
  550. package/dist/test/codec/pskId.test.js.map +1 -0
  551. package/dist/test/codec/pskInfo.test.d.ts +1 -0
  552. package/dist/test/codec/pskInfo.test.d.ts.map +1 -0
  553. package/dist/test/codec/pskInfo.test.js +14 -0
  554. package/dist/test/codec/pskInfo.test.js.map +1 -0
  555. package/dist/test/codec/pskLabel.test.d.ts +1 -0
  556. package/dist/test/codec/pskLabel.test.d.ts.map +1 -0
  557. package/dist/test/codec/pskLabel.test.js +28 -0
  558. package/dist/test/codec/pskLabel.test.js.map +1 -0
  559. package/dist/test/codec/pskType.test.d.ts +1 -0
  560. package/dist/test/codec/pskType.test.d.ts.map +1 -0
  561. package/dist/test/codec/pskType.test.js +14 -0
  562. package/dist/test/codec/pskType.test.js.map +1 -0
  563. package/dist/test/codec/publicMessage.test.d.ts +1 -0
  564. package/dist/test/codec/publicMessage.test.d.ts.map +1 -0
  565. package/dist/test/codec/publicMessage.test.js +41 -0
  566. package/dist/test/codec/publicMessage.test.js.map +1 -0
  567. package/dist/test/codec/ratchetTree.test.d.ts +1 -0
  568. package/dist/test/codec/ratchetTree.test.d.ts.map +1 -0
  569. package/dist/test/codec/ratchetTree.test.js +85 -0
  570. package/dist/test/codec/ratchetTree.test.js.map +1 -0
  571. package/dist/test/codec/requiredCapabilities.test.d.ts +1 -0
  572. package/dist/test/codec/requiredCapabilities.test.d.ts.map +1 -0
  573. package/dist/test/codec/requiredCapabilities.test.js +32 -0
  574. package/dist/test/codec/requiredCapabilities.test.js.map +1 -0
  575. package/dist/test/codec/resumptionPSKUsage.test.d.ts +1 -0
  576. package/dist/test/codec/resumptionPSKUsage.test.d.ts.map +1 -0
  577. package/dist/test/codec/resumptionPSKUsage.test.js +17 -0
  578. package/dist/test/codec/resumptionPSKUsage.test.js.map +1 -0
  579. package/dist/test/codec/reuseGuard.test.d.ts +1 -0
  580. package/dist/test/codec/reuseGuard.test.d.ts.map +1 -0
  581. package/dist/test/codec/reuseGuard.test.js +11 -0
  582. package/dist/test/codec/reuseGuard.test.js.map +1 -0
  583. package/dist/test/codec/roundtrip.d.ts +3 -0
  584. package/dist/test/codec/roundtrip.d.ts.map +1 -0
  585. package/dist/test/codec/roundtrip.js +11 -0
  586. package/dist/test/codec/roundtrip.js.map +1 -0
  587. package/dist/test/codec/sender.test.d.ts +1 -0
  588. package/dist/test/codec/sender.test.d.ts.map +1 -0
  589. package/dist/test/codec/sender.test.js +20 -0
  590. package/dist/test/codec/sender.test.js.map +1 -0
  591. package/dist/test/codec/senderData.test.d.ts +1 -0
  592. package/dist/test/codec/senderData.test.d.ts.map +1 -0
  593. package/dist/test/codec/senderData.test.js +14 -0
  594. package/dist/test/codec/senderData.test.js.map +1 -0
  595. package/dist/test/codec/senderDataAAD.test.d.ts +1 -0
  596. package/dist/test/codec/senderDataAAD.test.d.ts.map +1 -0
  597. package/dist/test/codec/senderDataAAD.test.js +14 -0
  598. package/dist/test/codec/senderDataAAD.test.js.map +1 -0
  599. package/dist/test/codec/senderType.test.d.ts +1 -0
  600. package/dist/test/codec/senderType.test.d.ts.map +1 -0
  601. package/dist/test/codec/senderType.test.js +20 -0
  602. package/dist/test/codec/senderType.test.js.map +1 -0
  603. package/dist/test/codec/transcriptHash.test.d.ts +1 -0
  604. package/dist/test/codec/transcriptHash.test.d.ts.map +1 -0
  605. package/dist/test/codec/transcriptHash.test.js +40 -0
  606. package/dist/test/codec/transcriptHash.test.js.map +1 -0
  607. package/dist/test/codec/treeHash.test.d.ts +1 -0
  608. package/dist/test/codec/treeHash.test.d.ts.map +1 -0
  609. package/dist/test/codec/treeHash.test.js +19 -0
  610. package/dist/test/codec/treeHash.test.js.map +1 -0
  611. package/dist/test/codec/updatePath.test.d.ts +1 -0
  612. package/dist/test/codec/updatePath.test.d.ts.map +1 -0
  613. package/dist/test/codec/updatePath.test.js +83 -0
  614. package/dist/test/codec/updatePath.test.js.map +1 -0
  615. package/dist/test/codec/updatePathNode.test.d.ts +1 -0
  616. package/dist/test/codec/updatePathNode.test.d.ts.map +1 -0
  617. package/dist/test/codec/updatePathNode.test.js +25 -0
  618. package/dist/test/codec/updatePathNode.test.js.map +1 -0
  619. package/dist/test/codec/varLengthEncoding.test.d.ts +1 -0
  620. package/dist/test/codec/varLengthEncoding.test.d.ts.map +1 -0
  621. package/dist/test/codec/varLengthEncoding.test.js +92 -0
  622. package/dist/test/codec/varLengthEncoding.test.js.map +1 -0
  623. package/dist/test/codec/welcome.test.d.ts +1 -0
  624. package/dist/test/codec/welcome.test.d.ts.map +1 -0
  625. package/dist/test/codec/welcome.test.js +27 -0
  626. package/dist/test/codec/welcome.test.js.map +1 -0
  627. package/dist/test/codec/wireformat.test.d.ts +1 -0
  628. package/dist/test/codec/wireformat.test.d.ts.map +1 -0
  629. package/dist/test/codec/wireformat.test.js +23 -0
  630. package/dist/test/codec/wireformat.test.js.map +1 -0
  631. package/dist/test/crypto/aead.test.d.ts +1 -0
  632. package/dist/test/crypto/aead.test.d.ts.map +1 -0
  633. package/dist/test/crypto/aead.test.js +46 -0
  634. package/dist/test/crypto/aead.test.js.map +1 -0
  635. package/dist/test/crypto/hpke.test.d.ts +1 -0
  636. package/dist/test/crypto/hpke.test.d.ts.map +1 -0
  637. package/dist/test/crypto/hpke.test.js +60 -0
  638. package/dist/test/crypto/hpke.test.js.map +1 -0
  639. package/dist/test/crypto/keyMatch.d.ts +7 -0
  640. package/dist/test/crypto/keyMatch.d.ts.map +1 -0
  641. package/dist/test/crypto/keyMatch.js +27 -0
  642. package/dist/test/crypto/keyMatch.js.map +1 -0
  643. package/dist/test/extensionsEqual.test.d.ts +1 -0
  644. package/dist/test/extensionsEqual.test.d.ts.map +1 -0
  645. package/dist/test/extensionsEqual.test.js +53 -0
  646. package/dist/test/extensionsEqual.test.js.map +1 -0
  647. package/dist/test/groupinfo.test.d.ts +1 -0
  648. package/dist/test/groupinfo.test.d.ts.map +1 -0
  649. package/dist/test/groupinfo.test.js +42 -0
  650. package/dist/test/groupinfo.test.js.map +1 -0
  651. package/dist/test/scenario/common.d.ts +8 -0
  652. package/dist/test/scenario/common.d.ts.map +1 -0
  653. package/dist/test/scenario/common.js +47 -0
  654. package/dist/test/scenario/common.js.map +1 -0
  655. package/dist/test/scenario/customCredentials.test.d.ts +1 -0
  656. package/dist/test/scenario/customCredentials.test.js +3 -0
  657. package/dist/test/scenario/customCredentials.test.js.map +1 -0
  658. package/dist/test/scenario/customExtensions.test.d.ts +1 -0
  659. package/dist/test/scenario/customExtensions.test.d.ts.map +1 -0
  660. package/dist/test/scenario/customExtensions.test.js +58 -0
  661. package/dist/test/scenario/customExtensions.test.js.map +1 -0
  662. package/dist/test/scenario/customProposal.test.d.ts +1 -0
  663. package/dist/test/scenario/customProposal.test.d.ts.map +1 -0
  664. package/dist/test/scenario/customProposal.test.js +73 -0
  665. package/dist/test/scenario/customProposal.test.js.map +1 -0
  666. package/dist/test/scenario/epochOutOfOrder.test.d.ts +1 -0
  667. package/dist/test/scenario/epochOutOfOrder.test.d.ts.map +1 -0
  668. package/dist/test/scenario/epochOutOfOrder.test.js +164 -0
  669. package/dist/test/scenario/epochOutOfOrder.test.js.map +1 -0
  670. package/dist/test/scenario/externalAddProposal.test.d.ts +1 -0
  671. package/dist/test/scenario/externalAddProposal.test.d.ts.map +1 -0
  672. package/dist/test/scenario/externalAddProposal.test.js +71 -0
  673. package/dist/test/scenario/externalAddProposal.test.js.map +1 -0
  674. package/dist/test/scenario/externalJoin.test.d.ts +1 -0
  675. package/dist/test/scenario/externalJoin.test.d.ts.map +1 -0
  676. package/dist/test/scenario/externalJoin.test.js +53 -0
  677. package/dist/test/scenario/externalJoin.test.js.map +1 -0
  678. package/dist/test/scenario/externalJoinResync.test.d.ts +1 -0
  679. package/dist/test/scenario/externalJoinResync.test.d.ts.map +1 -0
  680. package/dist/test/scenario/externalJoinResync.test.js +61 -0
  681. package/dist/test/scenario/externalJoinResync.test.js.map +1 -0
  682. package/dist/test/scenario/externalProposal.test.d.ts +1 -0
  683. package/dist/test/scenario/externalProposal.test.d.ts.map +1 -0
  684. package/dist/test/scenario/externalProposal.test.js +71 -0
  685. package/dist/test/scenario/externalProposal.test.js.map +1 -0
  686. package/dist/test/scenario/externalPsk.test.d.ts +1 -0
  687. package/dist/test/scenario/externalPsk.test.d.ts.map +1 -0
  688. package/dist/test/scenario/externalPsk.test.js +75 -0
  689. package/dist/test/scenario/externalPsk.test.js.map +1 -0
  690. package/dist/test/scenario/externalPskJoin.test.d.ts +1 -0
  691. package/dist/test/scenario/externalPskJoin.test.d.ts.map +1 -0
  692. package/dist/test/scenario/externalPskJoin.test.js +53 -0
  693. package/dist/test/scenario/externalPskJoin.test.js.map +1 -0
  694. package/dist/test/scenario/generationOutOfOrder.test.d.ts +1 -0
  695. package/dist/test/scenario/generationOutOfOrder.test.d.ts.map +1 -0
  696. package/dist/test/scenario/generationOutOfOrder.test.js +113 -0
  697. package/dist/test/scenario/generationOutOfOrder.test.js.map +1 -0
  698. package/dist/test/scenario/grease.test.d.ts +1 -0
  699. package/dist/test/scenario/grease.test.d.ts.map +1 -0
  700. package/dist/test/scenario/grease.test.js +46 -0
  701. package/dist/test/scenario/grease.test.js.map +1 -0
  702. package/dist/test/scenario/largeGroupFullLifecycle.test.d.ts +1 -0
  703. package/dist/test/scenario/largeGroupFullLifecycle.test.d.ts.map +1 -0
  704. package/dist/test/scenario/largeGroupFullLifecycle.test.js +129 -0
  705. package/dist/test/scenario/largeGroupFullLifecycle.test.js.map +1 -0
  706. package/dist/test/scenario/leaveProposal.test.d.ts +1 -0
  707. package/dist/test/scenario/leaveProposal.test.d.ts.map +1 -0
  708. package/dist/test/scenario/leaveProposal.test.js +79 -0
  709. package/dist/test/scenario/leaveProposal.test.js.map +1 -0
  710. package/dist/test/scenario/multipleJoinsAtOnce.test.d.ts +1 -0
  711. package/dist/test/scenario/multipleJoinsAtOnce.test.d.ts.map +1 -0
  712. package/dist/test/scenario/multipleJoinsAtOnce.test.js +50 -0
  713. package/dist/test/scenario/multipleJoinsAtOnce.test.js.map +1 -0
  714. package/dist/test/scenario/oneToOneJoin.test.d.ts +1 -0
  715. package/dist/test/scenario/oneToOneJoin.test.d.ts.map +1 -0
  716. package/dist/test/scenario/oneToOneJoin.test.js +100 -0
  717. package/dist/test/scenario/oneToOneJoin.test.js.map +1 -0
  718. package/dist/test/scenario/processMessage.d.ts +1 -0
  719. package/dist/test/scenario/processMessage.js +3 -0
  720. package/dist/test/scenario/processMessage.js.map +1 -0
  721. package/dist/test/scenario/ratchetTreeExtension.test.d.ts +1 -0
  722. package/dist/test/scenario/ratchetTreeExtension.test.d.ts.map +1 -0
  723. package/dist/test/scenario/ratchetTreeExtension.test.js +50 -0
  724. package/dist/test/scenario/ratchetTreeExtension.test.js.map +1 -0
  725. package/dist/test/scenario/reinit.test.d.ts +1 -0
  726. package/dist/test/scenario/reinit.test.d.ts.map +1 -0
  727. package/dist/test/scenario/reinit.test.js +59 -0
  728. package/dist/test/scenario/reinit.test.js.map +1 -0
  729. package/dist/test/scenario/rejectIncomingMessage.test.d.ts +1 -0
  730. package/dist/test/scenario/rejectIncomingMessage.test.d.ts.map +1 -0
  731. package/dist/test/scenario/rejectIncomingMessage.test.js +69 -0
  732. package/dist/test/scenario/rejectIncomingMessage.test.js.map +1 -0
  733. package/dist/test/scenario/remove.test.d.ts +1 -0
  734. package/dist/test/scenario/remove.test.d.ts.map +1 -0
  735. package/dist/test/scenario/remove.test.js +70 -0
  736. package/dist/test/scenario/remove.test.js.map +1 -0
  737. package/dist/test/scenario/requiredCapabilites.test.d.ts +1 -0
  738. package/dist/test/scenario/requiredCapabilites.test.d.ts.map +1 -0
  739. package/dist/test/scenario/requiredCapabilites.test.js +67 -0
  740. package/dist/test/scenario/requiredCapabilites.test.js.map +1 -0
  741. package/dist/test/scenario/resumption.test.d.ts +1 -0
  742. package/dist/test/scenario/resumption.test.d.ts.map +1 -0
  743. package/dist/test/scenario/resumption.test.js +45 -0
  744. package/dist/test/scenario/resumption.test.js.map +1 -0
  745. package/dist/test/scenario/threePartyJoin.test.d.ts +1 -0
  746. package/dist/test/scenario/threePartyJoin.test.d.ts.map +1 -0
  747. package/dist/test/scenario/threePartyJoin.test.js +58 -0
  748. package/dist/test/scenario/threePartyJoin.test.js.map +1 -0
  749. package/dist/test/scenario/update.test.d.ts +1 -0
  750. package/dist/test/scenario/update.test.d.ts.map +1 -0
  751. package/dist/test/scenario/update.test.js +52 -0
  752. package/dist/test/scenario/update.test.js.map +1 -0
  753. package/dist/test/test-vectors/cryptoBasics.test.d.ts +1 -0
  754. package/dist/test/test-vectors/cryptoBasics.test.d.ts.map +1 -0
  755. package/dist/test/test-vectors/cryptoBasics.test.js +65 -0
  756. package/dist/test/test-vectors/cryptoBasics.test.js.map +1 -0
  757. package/dist/test/test-vectors/deserialization.test.d.ts +1 -0
  758. package/dist/test/test-vectors/deserialization.test.d.ts.map +1 -0
  759. package/dist/test/test-vectors/deserialization.test.js +18 -0
  760. package/dist/test/test-vectors/deserialization.test.js.map +1 -0
  761. package/dist/test/test-vectors/keySchedule.test.d.ts +1 -0
  762. package/dist/test/test-vectors/keySchedule.test.d.ts.map +1 -0
  763. package/dist/test/test-vectors/keySchedule.test.js +53 -0
  764. package/dist/test/test-vectors/keySchedule.test.js.map +1 -0
  765. package/dist/test/test-vectors/messageProtection.test.d.ts +1 -0
  766. package/dist/test/test-vectors/messageProtection.test.d.ts.map +1 -0
  767. package/dist/test/test-vectors/messageProtection.test.js +220 -0
  768. package/dist/test/test-vectors/messageProtection.test.js.map +1 -0
  769. package/dist/test/test-vectors/messages.test.d.ts +1 -0
  770. package/dist/test/test-vectors/messages.test.d.ts.map +1 -0
  771. package/dist/test/test-vectors/messages.test.js +141 -0
  772. package/dist/test/test-vectors/messages.test.js.map +1 -0
  773. package/dist/test/test-vectors/passiveClientScenarios.test.d.ts +1 -0
  774. package/dist/test/test-vectors/passiveClientScenarios.test.d.ts.map +1 -0
  775. package/dist/test/test-vectors/passiveClientScenarios.test.js +91 -0
  776. package/dist/test/test-vectors/passiveClientScenarios.test.js.map +1 -0
  777. package/dist/test/test-vectors/pskSecret.test.d.ts +1 -0
  778. package/dist/test/test-vectors/pskSecret.test.d.ts.map +1 -0
  779. package/dist/test/test-vectors/pskSecret.test.js +23 -0
  780. package/dist/test/test-vectors/pskSecret.test.js.map +1 -0
  781. package/dist/test/test-vectors/secretTree.test.d.ts +1 -0
  782. package/dist/test/test-vectors/secretTree.test.d.ts.map +1 -0
  783. package/dist/test/test-vectors/secretTree.test.js +53 -0
  784. package/dist/test/test-vectors/secretTree.test.js.map +1 -0
  785. package/dist/test/test-vectors/transcriptHashes.test.d.ts +1 -0
  786. package/dist/test/test-vectors/transcriptHashes.test.d.ts.map +1 -0
  787. package/dist/test/test-vectors/transcriptHashes.test.js +31 -0
  788. package/dist/test/test-vectors/transcriptHashes.test.js.map +1 -0
  789. package/dist/test/test-vectors/treeOperations.test.d.ts +1 -0
  790. package/dist/test/test-vectors/treeOperations.test.d.ts.map +1 -0
  791. package/dist/test/test-vectors/treeOperations.test.js +50 -0
  792. package/dist/test/test-vectors/treeOperations.test.js.map +1 -0
  793. package/dist/test/test-vectors/treeValidation.test.d.ts +1 -0
  794. package/dist/test/test-vectors/treeValidation.test.d.ts.map +1 -0
  795. package/dist/test/test-vectors/treeValidation.test.js +41 -0
  796. package/dist/test/test-vectors/treeValidation.test.js.map +1 -0
  797. package/dist/test/test-vectors/treekem.test.d.ts +1 -0
  798. package/dist/test/test-vectors/treekem.test.d.ts.map +1 -0
  799. package/dist/test/test-vectors/treekem.test.js +105 -0
  800. package/dist/test/test-vectors/treekem.test.js.map +1 -0
  801. package/dist/test/test-vectors/treemath.test.d.ts +1 -0
  802. package/dist/test/test-vectors/treemath.test.d.ts.map +1 -0
  803. package/dist/test/test-vectors/treemath.test.js +60 -0
  804. package/dist/test/test-vectors/treemath.test.js.map +1 -0
  805. package/dist/test/test-vectors/welcome.test.d.ts +1 -0
  806. package/dist/test/test-vectors/welcome.test.d.ts.map +1 -0
  807. package/dist/test/test-vectors/welcome.test.js +45 -0
  808. package/dist/test/test-vectors/welcome.test.js.map +1 -0
  809. package/dist/test/validation/byteArrayValidation.test.d.ts +1 -0
  810. package/dist/test/validation/byteArrayValidation.test.js +76 -0
  811. package/dist/test/validation/byteArrayValidation.test.js.map +1 -0
  812. package/dist/test/validation/clientStateComprehensiveValidation.test.d.ts +1 -0
  813. package/dist/test/validation/clientStateComprehensiveValidation.test.js +280 -0
  814. package/dist/test/validation/clientStateComprehensiveValidation.test.js.map +1 -0
  815. package/dist/test/validation/clientStateExtendedValidation.test.d.ts +1 -0
  816. package/dist/test/validation/clientStateExtendedValidation.test.js +376 -0
  817. package/dist/test/validation/clientStateExtendedValidation.test.js.map +1 -0
  818. package/dist/test/validation/clientStateValidation.test.d.ts +1 -0
  819. package/dist/test/validation/clientStateValidation.test.js +190 -0
  820. package/dist/test/validation/clientStateValidation.test.js.map +1 -0
  821. package/dist/test/validation/errorHandlingValidation.test.d.ts +1 -0
  822. package/dist/test/validation/errorHandlingValidation.test.js +92 -0
  823. package/dist/test/validation/errorHandlingValidation.test.js.map +1 -0
  824. package/dist/test/validation/extensionValidation.test.d.ts +1 -0
  825. package/dist/test/validation/extensionValidation.test.js +120 -0
  826. package/dist/test/validation/extensionValidation.test.js.map +1 -0
  827. package/dist/test/validation/greaseValidation.test.d.ts +1 -0
  828. package/dist/test/validation/greaseValidation.test.js +136 -0
  829. package/dist/test/validation/greaseValidation.test.js.map +1 -0
  830. package/dist/test/validation/index.test.d.ts +5 -0
  831. package/dist/test/validation/index.test.js +19 -0
  832. package/dist/test/validation/index.test.js.map +1 -0
  833. package/dist/test/validation/mlsErrorValidation.test.d.ts +1 -0
  834. package/dist/test/validation/mlsErrorValidation.test.js +92 -0
  835. package/dist/test/validation/mlsErrorValidation.test.js.map +1 -0
  836. package/dist/test/validation/proposalValidation.test.d.ts +1 -0
  837. package/dist/test/validation/proposalValidation.test.d.ts.map +1 -0
  838. package/dist/test/validation/proposalValidation.test.js +233 -0
  839. package/dist/test/validation/proposalValidation.test.js.map +1 -0
  840. package/dist/test/validation/ratchetTreeValidation.test.d.ts +1 -0
  841. package/dist/test/validation/ratchetTreeValidation.test.d.ts.map +1 -0
  842. package/dist/test/validation/ratchetTreeValidation.test.js +53 -0
  843. package/dist/test/validation/ratchetTreeValidation.test.js.map +1 -0
  844. package/dist/test/validation/resumptionValidation.test.d.ts +1 -0
  845. package/dist/test/validation/resumptionValidation.test.d.ts.map +1 -0
  846. package/dist/test/validation/resumptionValidation.test.js +81 -0
  847. package/dist/test/validation/resumptionValidation.test.js.map +1 -0
  848. package/dist/test/validation/utilityValidation.test.d.ts +1 -0
  849. package/dist/test/validation/utilityValidation.test.js +71 -0
  850. package/dist/test/validation/utilityValidation.test.js.map +1 -0
  851. package/dist/test_vectors/crypto-basics.json +303 -0
  852. package/dist/test_vectors/deserialization.json +58 -0
  853. package/dist/test_vectors/key-schedule.json +926 -0
  854. package/dist/test_vectors/message-protection.json +142 -0
  855. package/dist/test_vectors/messages.json +5702 -0
  856. package/dist/test_vectors/passive-client-handling-commit.json +2683 -0
  857. package/dist/test_vectors/passive-client-random.json +2657 -0
  858. package/dist/test_vectors/passive-client-welcome.json +814 -0
  859. package/dist/test_vectors/psk_secret.json +2382 -0
  860. package/dist/test_vectors/secret-tree.json +4846 -0
  861. package/dist/test_vectors/transcript-hashes.json +58 -0
  862. package/dist/test_vectors/tree-math.json +8156 -0
  863. package/dist/test_vectors/tree-operations.json +47 -0
  864. package/dist/test_vectors/tree-validation.json +6204 -0
  865. package/dist/test_vectors/treekem.json +14859 -0
  866. package/dist/test_vectors/welcome.json +51 -0
  867. package/dist/ts-mls.d.ts +781 -0
  868. package/dist/tsdoc-metadata.json +11 -0
  869. package/dist/util/addToMap.d.ts +1 -0
  870. package/dist/util/addToMap.js +9 -0
  871. package/dist/util/addToMap.js.map +1 -0
  872. package/dist/util/array.d.ts +1 -0
  873. package/dist/util/array.js +7 -0
  874. package/dist/util/array.js.map +1 -0
  875. package/dist/util/byteArray.d.ts +3 -0
  876. package/dist/util/byteArray.js +32 -0
  877. package/dist/util/byteArray.js.map +1 -0
  878. package/dist/util/constantTimeCompare.d.ts +1 -0
  879. package/dist/util/constantTimeCompare.js +13 -0
  880. package/dist/util/constantTimeCompare.js.map +1 -0
  881. package/dist/util/enumHelpers.d.ts +4 -0
  882. package/dist/util/enumHelpers.js +34 -0
  883. package/dist/util/enumHelpers.js.map +1 -0
  884. package/dist/util/repeat.d.ts +1 -0
  885. package/dist/util/repeat.js +11 -0
  886. package/dist/util/repeat.js.map +1 -0
  887. package/package.json +108 -0
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proposeAddExternal = proposeAddExternal;
4
+ exports.proposeExternal = proposeExternal;
5
+ const extension_1 = require("./extension");
6
+ const externalSender_1 = require("./externalSender");
7
+ const messageProtectionPublic_1 = require("./messageProtectionPublic");
8
+ const mlsError_1 = require("./mlsError");
9
+ const constantTimeCompare_1 = require("./util/constantTimeCompare");
10
+ async function proposeAddExternal(groupInfo, keyPackage, privateKeyPackage, cs, authenticatedData = new Uint8Array()) {
11
+ const allExtensionsSupported = (0, extension_1.extensionsSupportedByCapabilities)(groupInfo.groupContext.extensions, keyPackage.leafNode.capabilities);
12
+ if (!allExtensionsSupported)
13
+ throw new mlsError_1.UsageError("client does not support every extension in the GroupContext");
14
+ const proposal = {
15
+ proposalType: "add",
16
+ add: {
17
+ keyPackage,
18
+ },
19
+ };
20
+ const result = await (0, messageProtectionPublic_1.protectExternalProposalPublic)(privateKeyPackage.signaturePrivateKey, groupInfo.groupContext, authenticatedData, proposal, { senderType: "new_member_proposal" }, cs);
21
+ return {
22
+ wireformat: "mls_public_message",
23
+ version: groupInfo.groupContext.version,
24
+ publicMessage: result.publicMessage,
25
+ };
26
+ }
27
+ async function proposeExternal(groupInfo, proposal, signaturePublicKey, signaturePrivateKey, cs) {
28
+ const authenticatedData = new Uint8Array();
29
+ const externalSenderExtensionIndex = groupInfo.extensions.findIndex((ex) => {
30
+ if (ex.extensionType !== "external_senders")
31
+ return false;
32
+ const decoded = (0, externalSender_1.decodeExternalSender)(ex.extensionData, 0);
33
+ if (decoded === undefined)
34
+ throw new mlsError_1.ValidationError("Could not decode external_sender extension");
35
+ return (0, constantTimeCompare_1.constantTimeEqual)(decoded[0].signaturePublicKey, signaturePublicKey);
36
+ });
37
+ const result = await (0, messageProtectionPublic_1.protectExternalProposalPublic)(signaturePrivateKey, groupInfo.groupContext, authenticatedData, proposal, { senderType: "external", senderIndex: externalSenderExtensionIndex }, cs);
38
+ return {
39
+ wireformat: "mls_public_message",
40
+ version: groupInfo.groupContext.version,
41
+ publicMessage: result.publicMessage,
42
+ };
43
+ }
44
+ //# sourceMappingURL=externalProposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalProposal.js","sourceRoot":"","sources":["../../src/externalProposal.ts"],"names":[],"mappings":";;AAWA,gDAkCC;AAED,0CAgCC;AA9ED,2CAA0E;AAC1E,qDAAuD;AAIvD,uEAAyE;AACzE,yCAAwD;AAExD,oEAA8D;AAEvD,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,UAAsB,EACtB,iBAAoC,EACpC,EAAmB,EACnB,oBAAgC,IAAI,UAAU,EAAE;IAEhD,MAAM,sBAAsB,GAAG,IAAA,6CAAiC,EAC9D,SAAS,CAAC,YAAY,CAAC,UAAU,EACjC,UAAU,CAAC,QAAQ,CAAC,YAAY,CACjC,CAAA;IACD,IAAI,CAAC,sBAAsB;QAAE,MAAM,IAAI,qBAAU,CAAC,6DAA6D,CAAC,CAAA;IAEhH,MAAM,QAAQ,GAAa;QACzB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE;YACH,UAAU;SACX;KACF,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA6B,EAChD,iBAAiB,CAAC,mBAAmB,EACrC,SAAS,CAAC,YAAY,EACtB,iBAAiB,EACjB,QAAQ,EACR,EAAE,UAAU,EAAE,qBAAqB,EAAE,EACrC,EAAE,CACH,CAAA;IAED,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,SAAoB,EACpB,QAAkB,EAClB,kBAA8B,EAC9B,mBAA+B,EAC/B,EAAmB;IAEnB,MAAM,iBAAiB,GAAe,IAAI,UAAU,EAAE,CAAA;IAEtD,MAAM,4BAA4B,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAa,EAAW,EAAE;QAC7F,IAAI,EAAE,CAAC,aAAa,KAAK,kBAAkB;YAAE,OAAO,KAAK,CAAA;QACzD,MAAM,OAAO,GAAG,IAAA,qCAAoB,EAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;QAEzD,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,0BAAe,CAAC,4CAA4C,CAAC,CAAA;QAElG,OAAO,IAAA,uCAAiB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,IAAA,uDAA6B,EAChD,mBAAmB,EACnB,SAAS,CAAC,YAAY,EACtB,iBAAiB,EACjB,QAAQ,EACR,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,4BAA4B,EAAE,EACrE,EAAE,CACH,CAAA;IAED,OAAO;QACL,UAAU,EAAE,oBAAoB;QAChC,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAA;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Decoder } from "./codec/tlsDecoder";
2
+ import { Encoder } from "./codec/tlsEncoder";
3
+ import { Credential } from "./credential";
4
+ export type ExternalSender = {
5
+ signaturePublicKey: Uint8Array;
6
+ credential: Credential;
7
+ };
8
+ export declare const encodeExternalSender: Encoder<ExternalSender>;
9
+ export declare const decodeExternalSender: Decoder<ExternalSender>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalSender.d.ts","sourceRoot":"","sources":["../../src/externalSender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAqB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAsC,MAAM,cAAc,CAAA;AAE7E,MAAM,MAAM,cAAc,GAAG;IAC3B,kBAAkB,EAAE,UAAU,CAAA;IAC9B,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,cAAc,CAGxD,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,cAAc,CAGxD,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeExternalSender = exports.encodeExternalSender = void 0;
4
+ const tlsDecoder_1 = require("./codec/tlsDecoder");
5
+ const tlsEncoder_1 = require("./codec/tlsEncoder");
6
+ const variableLength_1 = require("./codec/variableLength");
7
+ const credential_1 = require("./credential");
8
+ exports.encodeExternalSender = (0, tlsEncoder_1.contramapEncoders)([variableLength_1.encodeVarLenData, credential_1.encodeCredential], (e) => [e.signaturePublicKey, e.credential]);
9
+ exports.decodeExternalSender = (0, tlsDecoder_1.mapDecoders)([variableLength_1.decodeVarLenData, credential_1.decodeCredential], (signaturePublicKey, credential) => ({ signaturePublicKey, credential }));
10
+ //# sourceMappingURL=externalSender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalSender.js","sourceRoot":"","sources":["../../src/externalSender.ts"],"names":[],"mappings":";;;AAAA,mDAAyD;AACzD,mDAA+D;AAC/D,2DAA2E;AAC3E,6CAA6E;AAOhE,QAAA,oBAAoB,GAA4B,IAAA,8BAAiB,EAC5E,CAAC,iCAAgB,EAAE,6BAAgB,CAAC,EACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,UAAU,CAAU,CACrD,CAAA;AAEY,QAAA,oBAAoB,GAA4B,IAAA,wBAAW,EACtE,CAAC,iCAAgB,EAAE,6BAAgB,CAAC,EACpC,CAAC,kBAAkB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC,CACzE,CAAA"}
@@ -0,0 +1,113 @@
1
+ import { Decoder } from "./codec/tlsDecoder";
2
+ import { Encoder } from "./codec/tlsEncoder";
3
+ import { Commit } from "./commit";
4
+ import { ContentTypeName } from "./contentType";
5
+ import { CiphersuiteImpl } from "./crypto/ciphersuite";
6
+ import { Hash } from "./crypto/hash";
7
+ import { Signature } from "./crypto/signature";
8
+ import { GroupContext } from "./groupContext";
9
+ import { WireformatName } from "./wireformat";
10
+ import { Proposal } from "./proposal";
11
+ import { ProtocolVersionName } from "./protocolVersion";
12
+ import { Sender, SenderExternal, SenderMember, SenderNewMemberCommit, SenderNewMemberProposal } from "./sender";
13
+ export type FramedContentInfo = FramedContentApplicationData | FramedContentProposalData | FramedContentCommitData;
14
+ export type FramedContentApplicationData = {
15
+ contentType: "application";
16
+ applicationData: Uint8Array;
17
+ };
18
+ export type FramedContentProposalData = {
19
+ contentType: "proposal";
20
+ proposal: Proposal;
21
+ };
22
+ export type FramedContentCommitData = {
23
+ contentType: "commit";
24
+ commit: Commit;
25
+ };
26
+ export declare const encodeFramedContentApplicationData: Encoder<FramedContentApplicationData>;
27
+ export declare const encodeFramedContentProposalData: Encoder<FramedContentProposalData>;
28
+ export declare const encodeFramedContentCommitData: Encoder<FramedContentCommitData>;
29
+ export declare const encodeFramedContentInfo: Encoder<FramedContentInfo>;
30
+ export declare const decodeFramedContentApplicationData: Decoder<FramedContentApplicationData>;
31
+ export declare const decodeFramedContentProposalData: Decoder<FramedContentProposalData>;
32
+ export declare const decodeFramedContentCommitData: Decoder<FramedContentCommitData>;
33
+ export declare const decodeFramedContentInfo: Decoder<FramedContentInfo>;
34
+ export declare function toTbs(content: FramedContent, wireformat: WireformatName, context: GroupContext): FramedContentTBS;
35
+ export type FramedContent = FramedContentData & FramedContentInfo;
36
+ export type FramedContentData = {
37
+ groupId: Uint8Array;
38
+ epoch: bigint;
39
+ sender: Sender;
40
+ authenticatedData: Uint8Array;
41
+ };
42
+ export type FramedContentMember = FramedContent & {
43
+ sender: SenderMember;
44
+ };
45
+ export type FramedContentNewMemberCommit = FramedContent & {
46
+ sender: SenderNewMemberCommit;
47
+ };
48
+ export type FramedContentExternal = FramedContent & {
49
+ sender: SenderExternal;
50
+ };
51
+ export type FramedContentNewMemberProposal = FramedContent & {
52
+ sender: SenderNewMemberProposal;
53
+ };
54
+ export type FramedContentCommit = FramedContentData & FramedContentCommitData;
55
+ export type FramedContentApplicationOrProposal = FramedContentData & (FramedContentApplicationData | FramedContentProposalData);
56
+ export declare const encodeFramedContent: Encoder<FramedContent>;
57
+ export declare const decodeFramedContent: Decoder<FramedContent>;
58
+ type SenderInfo = SenderInfoMember | SenderInfoNewMemberCommit | SenderInfoExternal | SenderInfoNewMemberProposal;
59
+ type SenderInfoMember = {
60
+ senderType: "member";
61
+ context: GroupContext;
62
+ };
63
+ type SenderInfoNewMemberCommit = {
64
+ senderType: "new_member_commit";
65
+ context: GroupContext;
66
+ };
67
+ type SenderInfoExternal = {
68
+ senderType: "external";
69
+ };
70
+ type SenderInfoNewMemberProposal = {
71
+ senderType: "new_member_proposal";
72
+ };
73
+ export declare const encodeSenderInfo: Encoder<SenderInfo>;
74
+ export type FramedContentTBS = {
75
+ protocolVersion: ProtocolVersionName;
76
+ wireformat: WireformatName;
77
+ content: FramedContent;
78
+ } & SenderInfo;
79
+ export type FramedContentTBSCommit = FramedContentTBS & {
80
+ content: FramedContentCommit;
81
+ };
82
+ export type FramedContentTBSApplicationOrProposal = FramedContentTBS & {
83
+ content: FramedContentApplicationOrProposal;
84
+ };
85
+ export type FramedContentTBSExternal = FramedContentTBS & (SenderInfoExternal | SenderInfoNewMemberCommit | SenderInfoNewMemberProposal);
86
+ export declare const encodeFramedContentTBS: Encoder<FramedContentTBS>;
87
+ export type FramedContentAuthData = FramedContentAuthDataCommit | FramedContentAuthDataApplicationOrProposal;
88
+ export type FramedContentAuthDataCommit = {
89
+ signature: Uint8Array;
90
+ } & FramedContentAuthDataContentCommit;
91
+ export type FramedContentAuthDataApplicationOrProposal = {
92
+ signature: Uint8Array;
93
+ } & FramedContentAuthDataContentApplicationOrProposal;
94
+ type FramedContentAuthDataContentCommit = {
95
+ contentType: "commit";
96
+ confirmationTag: Uint8Array;
97
+ };
98
+ type FramedContentAuthDataContentApplicationOrProposal = {
99
+ contentType: Exclude<ContentTypeName, "commit">;
100
+ };
101
+ export declare const encodeFramedContentAuthData: Encoder<FramedContentAuthData>;
102
+ export declare const decodeFramedContentAuthDataCommit: Decoder<FramedContentAuthDataContentCommit>;
103
+ export declare function decodeFramedContentAuthData(contentType: ContentTypeName): Decoder<FramedContentAuthData>;
104
+ export declare function verifyFramedContentSignature(signKey: Uint8Array, wireformat: WireformatName, content: FramedContent, auth: FramedContentAuthData, context: GroupContext, s: Signature): Promise<boolean>;
105
+ export declare function signFramedContentTBS(signKey: Uint8Array, tbs: FramedContentTBS, s: Signature): Promise<Uint8Array>;
106
+ export declare function signFramedContentApplicationOrProposal(signKey: Uint8Array, tbs: FramedContentTBSApplicationOrProposal, cs: CiphersuiteImpl): Promise<FramedContentAuthDataApplicationOrProposal>;
107
+ export declare function createConfirmationTag(confirmationKey: Uint8Array, confirmedTranscriptHash: Uint8Array, h: Hash): Promise<Uint8Array>;
108
+ export declare function verifyConfirmationTag(confirmationKey: Uint8Array, tag: Uint8Array, confirmedTranscriptHash: Uint8Array, h: Hash): Promise<boolean>;
109
+ export declare function createContentCommitSignature(groupContext: GroupContext, wireformat: WireformatName, c: Commit, sender: Sender, authenticatedData: Uint8Array, signKey: Uint8Array, s: Signature): Promise<{
110
+ framedContent: FramedContentCommit;
111
+ signature: Uint8Array;
112
+ }>;
113
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framedContent.d.ts","sourceRoot":"","sources":["../../src/framedContent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeFramedContentAuthDataCommit = exports.encodeFramedContentAuthData = exports.encodeFramedContentTBS = exports.encodeSenderInfo = exports.decodeFramedContent = exports.encodeFramedContent = exports.decodeFramedContentInfo = exports.decodeFramedContentCommitData = exports.decodeFramedContentProposalData = exports.decodeFramedContentApplicationData = exports.encodeFramedContentInfo = exports.encodeFramedContentCommitData = exports.encodeFramedContentProposalData = exports.encodeFramedContentApplicationData = void 0;
4
+ exports.toTbs = toTbs;
5
+ exports.decodeFramedContentAuthData = decodeFramedContentAuthData;
6
+ exports.verifyFramedContentSignature = verifyFramedContentSignature;
7
+ exports.signFramedContentTBS = signFramedContentTBS;
8
+ exports.signFramedContentApplicationOrProposal = signFramedContentApplicationOrProposal;
9
+ exports.createConfirmationTag = createConfirmationTag;
10
+ exports.verifyConfirmationTag = verifyConfirmationTag;
11
+ exports.createContentCommitSignature = createContentCommitSignature;
12
+ const number_1 = require("./codec/number");
13
+ const tlsDecoder_1 = require("./codec/tlsDecoder");
14
+ const tlsEncoder_1 = require("./codec/tlsEncoder");
15
+ const variableLength_1 = require("./codec/variableLength");
16
+ const commit_1 = require("./commit");
17
+ const contentType_1 = require("./contentType");
18
+ const signature_1 = require("./crypto/signature");
19
+ const groupContext_1 = require("./groupContext");
20
+ const wireformat_1 = require("./wireformat");
21
+ const proposal_1 = require("./proposal");
22
+ const protocolVersion_1 = require("./protocolVersion");
23
+ const sender_1 = require("./sender");
24
+ exports.encodeFramedContentApplicationData = (0, tlsEncoder_1.contramapEncoders)([contentType_1.encodeContentType, variableLength_1.encodeVarLenData], (f) => [f.contentType, f.applicationData]);
25
+ exports.encodeFramedContentProposalData = (0, tlsEncoder_1.contramapEncoders)([contentType_1.encodeContentType, proposal_1.encodeProposal], (f) => [f.contentType, f.proposal]);
26
+ exports.encodeFramedContentCommitData = (0, tlsEncoder_1.contramapEncoders)([contentType_1.encodeContentType, commit_1.encodeCommit], (f) => [f.contentType, f.commit]);
27
+ const encodeFramedContentInfo = (fc) => {
28
+ switch (fc.contentType) {
29
+ case "application":
30
+ return (0, exports.encodeFramedContentApplicationData)(fc);
31
+ case "proposal":
32
+ return (0, exports.encodeFramedContentProposalData)(fc);
33
+ case "commit":
34
+ return (0, exports.encodeFramedContentCommitData)(fc);
35
+ }
36
+ };
37
+ exports.encodeFramedContentInfo = encodeFramedContentInfo;
38
+ exports.decodeFramedContentApplicationData = (0, tlsDecoder_1.mapDecoder)(variableLength_1.decodeVarLenData, (applicationData) => ({ contentType: "application", applicationData }));
39
+ exports.decodeFramedContentProposalData = (0, tlsDecoder_1.mapDecoder)(proposal_1.decodeProposal, (proposal) => ({ contentType: "proposal", proposal }));
40
+ exports.decodeFramedContentCommitData = (0, tlsDecoder_1.mapDecoder)(commit_1.decodeCommit, (commit) => ({
41
+ contentType: "commit",
42
+ commit,
43
+ }));
44
+ exports.decodeFramedContentInfo = (0, tlsDecoder_1.flatMapDecoder)(contentType_1.decodeContentType, (contentType) => {
45
+ switch (contentType) {
46
+ case "application":
47
+ return exports.decodeFramedContentApplicationData;
48
+ case "proposal":
49
+ return exports.decodeFramedContentProposalData;
50
+ case "commit":
51
+ return exports.decodeFramedContentCommitData;
52
+ }
53
+ });
54
+ function toTbs(content, wireformat, context) {
55
+ return { protocolVersion: context.version, wireformat, content, senderType: content.sender.senderType, context };
56
+ }
57
+ exports.encodeFramedContent = (0, tlsEncoder_1.contramapEncoders)([variableLength_1.encodeVarLenData, number_1.encodeUint64, sender_1.encodeSender, variableLength_1.encodeVarLenData, exports.encodeFramedContentInfo], (fc) => [fc.groupId, fc.epoch, fc.sender, fc.authenticatedData, fc]);
58
+ exports.decodeFramedContent = (0, tlsDecoder_1.mapDecoders)([variableLength_1.decodeVarLenData, number_1.decodeUint64, sender_1.decodeSender, variableLength_1.decodeVarLenData, exports.decodeFramedContentInfo], (groupId, epoch, sender, authenticatedData, info) => ({
59
+ groupId,
60
+ epoch,
61
+ sender,
62
+ authenticatedData,
63
+ ...info,
64
+ }));
65
+ const encodeSenderInfo = (info) => {
66
+ switch (info.senderType) {
67
+ case "member":
68
+ case "new_member_commit":
69
+ return (0, groupContext_1.encodeGroupContext)(info.context);
70
+ case "external":
71
+ case "new_member_proposal":
72
+ return new Uint8Array();
73
+ }
74
+ };
75
+ exports.encodeSenderInfo = encodeSenderInfo;
76
+ exports.encodeFramedContentTBS = (0, tlsEncoder_1.contramapEncoders)([protocolVersion_1.encodeProtocolVersion, wireformat_1.encodeWireformat, exports.encodeFramedContent, exports.encodeSenderInfo], (f) => [f.protocolVersion, f.wireformat, f.content, f]);
77
+ const encodeFramedContentAuthDataContent = (authData) => {
78
+ switch (authData.contentType) {
79
+ case "commit":
80
+ return encodeFramedContentAuthDataCommit(authData);
81
+ case "application":
82
+ case "proposal":
83
+ return new Uint8Array();
84
+ }
85
+ };
86
+ const encodeFramedContentAuthDataCommit = (0, tlsEncoder_1.contramapEncoder)(variableLength_1.encodeVarLenData, (data) => data.confirmationTag);
87
+ exports.encodeFramedContentAuthData = (0, tlsEncoder_1.contramapEncoders)([variableLength_1.encodeVarLenData, encodeFramedContentAuthDataContent], (d) => [d.signature, d]);
88
+ exports.decodeFramedContentAuthDataCommit = (0, tlsDecoder_1.mapDecoder)(variableLength_1.decodeVarLenData, (confirmationTag) => ({
89
+ contentType: "commit",
90
+ confirmationTag,
91
+ }));
92
+ function decodeFramedContentAuthData(contentType) {
93
+ switch (contentType) {
94
+ case "commit":
95
+ return (0, tlsDecoder_1.mapDecoders)([variableLength_1.decodeVarLenData, exports.decodeFramedContentAuthDataCommit], (signature, commitData) => ({
96
+ signature,
97
+ ...commitData,
98
+ }));
99
+ case "application":
100
+ case "proposal":
101
+ return (0, tlsDecoder_1.mapDecoder)(variableLength_1.decodeVarLenData, (signature) => ({
102
+ signature,
103
+ contentType,
104
+ }));
105
+ }
106
+ }
107
+ async function verifyFramedContentSignature(signKey, wireformat, content, auth, context, s) {
108
+ return (0, signature_1.verifyWithLabel)(signKey, "FramedContentTBS", (0, exports.encodeFramedContentTBS)(toTbs(content, wireformat, context)), auth.signature, s);
109
+ }
110
+ function signFramedContentTBS(signKey, tbs, s) {
111
+ return (0, signature_1.signWithLabel)(signKey, "FramedContentTBS", (0, exports.encodeFramedContentTBS)(tbs), s);
112
+ }
113
+ async function signFramedContentApplicationOrProposal(signKey, tbs, cs) {
114
+ const signature = await signFramedContentTBS(signKey, tbs, cs.signature);
115
+ return {
116
+ contentType: tbs.content.contentType,
117
+ signature,
118
+ };
119
+ }
120
+ function createConfirmationTag(confirmationKey, confirmedTranscriptHash, h) {
121
+ return h.mac(confirmationKey, confirmedTranscriptHash);
122
+ }
123
+ function verifyConfirmationTag(confirmationKey, tag, confirmedTranscriptHash, h) {
124
+ return h.verifyMac(confirmationKey, tag, confirmedTranscriptHash);
125
+ }
126
+ async function createContentCommitSignature(groupContext, wireformat, c, sender, authenticatedData, signKey, s) {
127
+ const tbs = {
128
+ protocolVersion: groupContext.version,
129
+ wireformat,
130
+ content: {
131
+ contentType: "commit",
132
+ commit: c,
133
+ groupId: groupContext.groupId,
134
+ epoch: groupContext.epoch,
135
+ sender,
136
+ authenticatedData,
137
+ },
138
+ senderType: "member",
139
+ context: groupContext,
140
+ };
141
+ const signature = await signFramedContentTBS(signKey, tbs, s);
142
+ return { framedContent: tbs.content, signature };
143
+ }
144
+ //# sourceMappingURL=framedContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framedContent.js","sourceRoot":"","sources":["../../src/framedContent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Capabilities } from "./capabilities";
2
+ import { CredentialTypeName } from "./credentialType";
3
+ import { CiphersuiteName } from "./crypto/ciphersuite";
4
+ import { Extension } from "./extension";
5
+ export declare const greaseValues: number[];
6
+ export type GreaseConfig = {
7
+ probabilityPerGreaseValue: number;
8
+ };
9
+ export declare const defaultGreaseConfig: {
10
+ probabilityPerGreaseValue: number;
11
+ };
12
+ export declare function grease(greaseConfig: GreaseConfig): number[];
13
+ export declare function greaseCiphersuites(greaseConfig: GreaseConfig): CiphersuiteName[];
14
+ export declare function greaseCredentials(greaseConfig: GreaseConfig): CredentialTypeName[];
15
+ export declare function greaseExtensions(greaseConfig: GreaseConfig): Extension[];
16
+ export declare function greaseCapabilities(config: GreaseConfig, capabilities: Capabilities): Capabilities;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grease.d.ts","sourceRoot":"","sources":["../../src/grease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,eAAO,MAAM,YAAY,UAGxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,yBAAyB,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,mBAAmB;;CAE/B,CAAA;AAED,wBAAgB,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,EAAE,CAE3D;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,eAAe,EAAE,CAEhF;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,kBAAkB,EAAE,CAElF;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,EAAE,CAExE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,GAAG,YAAY,CAQjG"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultGreaseConfig = exports.greaseValues = void 0;
4
+ exports.grease = grease;
5
+ exports.greaseCiphersuites = greaseCiphersuites;
6
+ exports.greaseCredentials = greaseCredentials;
7
+ exports.greaseExtensions = greaseExtensions;
8
+ exports.greaseCapabilities = greaseCapabilities;
9
+ exports.greaseValues = [
10
+ 0x0a0a, 0x1a1a, 0x2a2a, 0x3a3a, 0x4a4a, 0x5a5a, 0x6a6a, 0x7a7a, 0x8a8a, 0x9a9a, 0xaaaa, 0xbaba, 0xcaca, 0xdada,
11
+ 0xeaea,
12
+ ];
13
+ exports.defaultGreaseConfig = {
14
+ probabilityPerGreaseValue: 0.1,
15
+ };
16
+ function grease(greaseConfig) {
17
+ return exports.greaseValues.filter(() => greaseConfig.probabilityPerGreaseValue > Math.random());
18
+ }
19
+ function greaseCiphersuites(greaseConfig) {
20
+ return grease(greaseConfig).map((n) => n.toString());
21
+ }
22
+ function greaseCredentials(greaseConfig) {
23
+ return grease(greaseConfig).map((n) => n.toString());
24
+ }
25
+ function greaseExtensions(greaseConfig) {
26
+ return grease(greaseConfig).map((n) => ({ extensionType: n, extensionData: new Uint8Array() }));
27
+ }
28
+ function greaseCapabilities(config, capabilities) {
29
+ return {
30
+ ciphersuites: [...capabilities.ciphersuites, ...greaseCiphersuites(config)],
31
+ credentials: [...capabilities.credentials, ...greaseCredentials(config)],
32
+ extensions: [...capabilities.extensions, ...grease(config)],
33
+ proposals: [...capabilities.proposals, ...grease(config)],
34
+ versions: capabilities.versions,
35
+ };
36
+ }
37
+ //# sourceMappingURL=grease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grease.js","sourceRoot":"","sources":["../../src/grease.ts"],"names":[],"mappings":";;;AAkBA,wBAEC;AAED,gDAEC;AAED,8CAEC;AAED,4CAEC;AAED,gDAQC;AArCY,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9G,MAAM;CACP,CAAA;AAMY,QAAA,mBAAmB,GAAG;IACjC,yBAAyB,EAAE,GAAG;CAC/B,CAAA;AAED,SAAgB,MAAM,CAAC,YAA0B;IAC/C,OAAO,oBAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED,SAAgB,kBAAkB,CAAC,YAA0B;IAC3D,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAqB,CAAC,CAAA;AACzE,CAAC;AAED,SAAgB,iBAAiB,CAAC,YAA0B;IAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAwB,CAAC,CAAA;AAC5E,CAAC;AAED,SAAgB,gBAAgB,CAAC,YAA0B;IACzD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;AACjG,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAoB,EAAE,YAA0B;IACjF,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC,YAAY,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3E,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxE,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,SAAS,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,QAAQ,EAAE,YAAY,CAAC,QAAQ;KAChC,CAAA;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Decoder } from "./codec/tlsDecoder";
2
+ import { Encoder } from "./codec/tlsEncoder";
3
+ import { CiphersuiteName } from "./crypto/ciphersuite";
4
+ import { Kdf } from "./crypto/kdf";
5
+ import { Extension } from "./extension";
6
+ import { ProtocolVersionName } from "./protocolVersion";
7
+ export type GroupContext = {
8
+ version: ProtocolVersionName;
9
+ cipherSuite: CiphersuiteName;
10
+ groupId: Uint8Array;
11
+ epoch: bigint;
12
+ treeHash: Uint8Array;
13
+ confirmedTranscriptHash: Uint8Array;
14
+ extensions: Extension[];
15
+ };
16
+ export declare const encodeGroupContext: Encoder<GroupContext>;
17
+ export declare const decodeGroupContext: Decoder<GroupContext>;
18
+ export declare function extractEpochSecret(context: GroupContext, joinerSecret: Uint8Array, kdf: Kdf, pskSecret?: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
19
+ export declare function extractJoinerSecret(context: GroupContext, previousInitSecret: Uint8Array, commitSecret: Uint8Array, kdf: Kdf): Promise<Uint8Array<ArrayBufferLike>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupContext.d.ts","sourceRoot":"","sources":["../../src/groupContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAe,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAqB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAwC,MAAM,sBAAsB,CAAA;AAE5F,OAAO,EAAmB,GAAG,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAoC,SAAS,EAAE,MAAM,aAAa,CAAA;AAEzE,OAAO,EAAgD,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAErG,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,WAAW,EAAE,eAAe,CAAA;IAC5B,OAAO,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,UAAU,CAAA;IACpB,uBAAuB,EAAE,UAAU,CAAA;IACnC,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAYpD,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAmBpD,CAAA;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,YAAY,EACrB,YAAY,EAAE,UAAU,EACxB,GAAG,EAAE,GAAG,EACR,SAAS,CAAC,EAAE,UAAU,wCAMvB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,YAAY,EACrB,kBAAkB,EAAE,UAAU,EAC9B,YAAY,EAAE,UAAU,EACxB,GAAG,EAAE,GAAG,wCAKT"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeGroupContext = exports.encodeGroupContext = void 0;
4
+ exports.extractEpochSecret = extractEpochSecret;
5
+ exports.extractJoinerSecret = extractJoinerSecret;
6
+ const number_1 = require("./codec/number");
7
+ const tlsDecoder_1 = require("./codec/tlsDecoder");
8
+ const tlsEncoder_1 = require("./codec/tlsEncoder");
9
+ const variableLength_1 = require("./codec/variableLength");
10
+ const ciphersuite_1 = require("./crypto/ciphersuite");
11
+ const kdf_1 = require("./crypto/kdf");
12
+ const extension_1 = require("./extension");
13
+ const protocolVersion_1 = require("./protocolVersion");
14
+ exports.encodeGroupContext = (0, tlsEncoder_1.contramapEncoders)([
15
+ protocolVersion_1.encodeProtocolVersion,
16
+ ciphersuite_1.encodeCiphersuite,
17
+ variableLength_1.encodeVarLenData, // groupId
18
+ number_1.encodeUint64, // epoch
19
+ variableLength_1.encodeVarLenData, // treeHash
20
+ variableLength_1.encodeVarLenData, // confirmedTranscriptHash
21
+ (0, variableLength_1.encodeVarLenType)(extension_1.encodeExtension),
22
+ ], (gc) => [gc.version, gc.cipherSuite, gc.groupId, gc.epoch, gc.treeHash, gc.confirmedTranscriptHash, gc.extensions]);
23
+ exports.decodeGroupContext = (0, tlsDecoder_1.mapDecoders)([
24
+ protocolVersion_1.decodeProtocolVersion,
25
+ ciphersuite_1.decodeCiphersuite,
26
+ variableLength_1.decodeVarLenData, // groupId
27
+ number_1.decodeUint64, // epoch
28
+ variableLength_1.decodeVarLenData, // treeHash
29
+ variableLength_1.decodeVarLenData, // confirmedTranscriptHash
30
+ (0, variableLength_1.decodeVarLenType)(extension_1.decodeExtension),
31
+ ], (version, cipherSuite, groupId, epoch, treeHash, confirmedTranscriptHash, extensions) => ({
32
+ version,
33
+ cipherSuite,
34
+ groupId,
35
+ epoch,
36
+ treeHash,
37
+ confirmedTranscriptHash,
38
+ extensions,
39
+ }));
40
+ async function extractEpochSecret(context, joinerSecret, kdf, pskSecret) {
41
+ const psk = pskSecret === undefined ? new Uint8Array(kdf.size) : pskSecret;
42
+ const extracted = await kdf.extract(joinerSecret, psk);
43
+ return (0, kdf_1.expandWithLabel)(extracted, "epoch", (0, exports.encodeGroupContext)(context), kdf.size, kdf);
44
+ }
45
+ async function extractJoinerSecret(context, previousInitSecret, commitSecret, kdf) {
46
+ const extracted = await kdf.extract(previousInitSecret, commitSecret);
47
+ return (0, kdf_1.expandWithLabel)(extracted, "joiner", (0, exports.encodeGroupContext)(context), kdf.size, kdf);
48
+ }
49
+ //# sourceMappingURL=groupContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupContext.js","sourceRoot":"","sources":["../../src/groupContext.ts"],"names":[],"mappings":";;;AAwDA,gDAUC;AAED,kDASC;AA7ED,2CAA2D;AAC3D,mDAAyD;AACzD,mDAA+D;AAC/D,2DAA+G;AAC/G,sDAA4F;AAE5F,sCAAmD;AACnD,2CAAyE;AAEzE,uDAAqG;AAYxF,QAAA,kBAAkB,GAA0B,IAAA,8BAAiB,EACxE;IACE,uCAAqB;IACrB,+BAAiB;IACjB,iCAAgB,EAAE,UAAU;IAC5B,qBAAY,EAAE,QAAQ;IACtB,iCAAgB,EAAE,WAAW;IAC7B,iCAAgB,EAAE,0BAA0B;IAC5C,IAAA,iCAAgB,EAAC,2BAAe,CAAC;CAClC,EACD,CAAC,EAAE,EAAE,EAAE,CACL,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,uBAAuB,EAAE,EAAE,CAAC,UAAU,CAAU,CACtH,CAAA;AAEY,QAAA,kBAAkB,GAA0B,IAAA,wBAAW,EAClE;IACE,uCAAqB;IACrB,+BAAiB;IACjB,iCAAgB,EAAE,UAAU;IAC5B,qBAAY,EAAE,QAAQ;IACtB,iCAAgB,EAAE,WAAW;IAC7B,iCAAgB,EAAE,0BAA0B;IAC5C,IAAA,iCAAgB,EAAC,2BAAe,CAAC;CAClC,EACD,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO;IACP,WAAW;IACX,OAAO;IACP,KAAK;IACL,QAAQ;IACR,uBAAuB;IACvB,UAAU;CACX,CAAC,CACH,CAAA;AAEM,KAAK,UAAU,kBAAkB,CACtC,OAAqB,EACrB,YAAwB,EACxB,GAAQ,EACR,SAAsB;IAEtB,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IAEtD,OAAO,IAAA,qBAAe,EAAC,SAAS,EAAE,OAAO,EAAE,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACxF,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,OAAqB,EACrB,kBAA8B,EAC9B,YAAwB,EACxB,GAAQ;IAER,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;IAErE,OAAO,IAAA,qBAAe,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACzF,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Decoder } from "./codec/tlsDecoder";
2
+ import { Encoder } from "./codec/tlsEncoder";
3
+ import { CiphersuiteImpl } from "./crypto/ciphersuite";
4
+ import { Kdf } from "./crypto/kdf";
5
+ import { Signature } from "./crypto/signature";
6
+ import { Extension } from "./extension";
7
+ import { GroupContext } from "./groupContext";
8
+ import { RatchetTree } from "./ratchetTree";
9
+ export type GroupInfoTBS = {
10
+ groupContext: GroupContext;
11
+ extensions: Extension[];
12
+ confirmationTag: Uint8Array;
13
+ signer: number;
14
+ };
15
+ export declare const encodeGroupInfoTBS: Encoder<GroupInfoTBS>;
16
+ export declare const decodeGroupInfoTBS: Decoder<GroupInfoTBS>;
17
+ export type GroupInfo = GroupInfoTBS & {
18
+ signature: Uint8Array;
19
+ };
20
+ export declare const encodeGroupInfo: Encoder<GroupInfo>;
21
+ export declare const decodeGroupInfo: Decoder<GroupInfo>;
22
+ export declare function ratchetTreeFromExtension(info: GroupInfo): RatchetTree | undefined;
23
+ export declare function signGroupInfo(tbs: GroupInfoTBS, privateKey: Uint8Array, s: Signature): Promise<GroupInfo>;
24
+ export declare function verifyGroupInfoSignature(gi: GroupInfo, publicKey: Uint8Array, s: Signature): Promise<boolean>;
25
+ export declare function verifyGroupInfoConfirmationTag(gi: GroupInfo, joinerSecret: Uint8Array, pskSecret: Uint8Array, cs: CiphersuiteImpl): Promise<boolean>;
26
+ export declare function extractWelcomeSecret(joinerSecret: Uint8Array, pskSecret: Uint8Array, kdf: Kdf): Promise<Uint8Array<ArrayBufferLike>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupInfo.d.ts","sourceRoot":"","sources":["../../src/groupInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAe,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAqB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAgB,GAAG,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,SAAS,EAAkC,MAAM,oBAAoB,CAAA;AAC9E,OAAO,EAAoC,SAAS,EAAE,MAAM,aAAa,CAAA;AACzE,OAAO,EAA8D,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEzG,OAAO,EAAqB,WAAW,EAAE,MAAM,eAAe,CAAA;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,eAAe,EAAE,UAAU,CAAA;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAGpD,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAQpD,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG;IACrC,SAAS,EAAE,UAAU,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,SAAS,CAG9C,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,SAAS,CAM9C,CAAA;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAQjF;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAG/G;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAE7G;AAED,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,SAAS,EACb,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,eAAe,GAClB,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,wCAEnG"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeGroupInfo = exports.encodeGroupInfo = exports.decodeGroupInfoTBS = exports.encodeGroupInfoTBS = void 0;
4
+ exports.ratchetTreeFromExtension = ratchetTreeFromExtension;
5
+ exports.signGroupInfo = signGroupInfo;
6
+ exports.verifyGroupInfoSignature = verifyGroupInfoSignature;
7
+ exports.verifyGroupInfoConfirmationTag = verifyGroupInfoConfirmationTag;
8
+ exports.extractWelcomeSecret = extractWelcomeSecret;
9
+ const number_1 = require("./codec/number");
10
+ const tlsDecoder_1 = require("./codec/tlsDecoder");
11
+ const tlsEncoder_1 = require("./codec/tlsEncoder");
12
+ const variableLength_1 = require("./codec/variableLength");
13
+ const kdf_1 = require("./crypto/kdf");
14
+ const signature_1 = require("./crypto/signature");
15
+ const extension_1 = require("./extension");
16
+ const groupContext_1 = require("./groupContext");
17
+ const mlsError_1 = require("./mlsError");
18
+ const ratchetTree_1 = require("./ratchetTree");
19
+ exports.encodeGroupInfoTBS = (0, tlsEncoder_1.contramapEncoders)([groupContext_1.encodeGroupContext, (0, variableLength_1.encodeVarLenType)(extension_1.encodeExtension), variableLength_1.encodeVarLenData, number_1.encodeUint32], (g) => [g.groupContext, g.extensions, g.confirmationTag, g.signer]);
20
+ exports.decodeGroupInfoTBS = (0, tlsDecoder_1.mapDecoders)([groupContext_1.decodeGroupContext, (0, variableLength_1.decodeVarLenType)(extension_1.decodeExtension), variableLength_1.decodeVarLenData, number_1.decodeUint32], (groupContext, extensions, confirmationTag, signer) => ({
21
+ groupContext,
22
+ extensions,
23
+ confirmationTag,
24
+ signer,
25
+ }));
26
+ exports.encodeGroupInfo = (0, tlsEncoder_1.contramapEncoders)([exports.encodeGroupInfoTBS, variableLength_1.encodeVarLenData], (g) => [g, g.signature]);
27
+ exports.decodeGroupInfo = (0, tlsDecoder_1.mapDecoders)([exports.decodeGroupInfoTBS, variableLength_1.decodeVarLenData], (tbs, signature) => ({
28
+ ...tbs,
29
+ signature,
30
+ }));
31
+ function ratchetTreeFromExtension(info) {
32
+ const treeExtension = info.extensions.find((ex) => ex.extensionType === "ratchet_tree");
33
+ if (treeExtension !== undefined) {
34
+ const tree = (0, ratchetTree_1.decodeRatchetTree)(treeExtension.extensionData, 0);
35
+ if (tree === undefined)
36
+ throw new mlsError_1.CodecError("Could not decode RatchetTree");
37
+ return tree[0];
38
+ }
39
+ }
40
+ async function signGroupInfo(tbs, privateKey, s) {
41
+ const signature = await (0, signature_1.signWithLabel)(privateKey, "GroupInfoTBS", (0, exports.encodeGroupInfoTBS)(tbs), s);
42
+ return { ...tbs, signature };
43
+ }
44
+ function verifyGroupInfoSignature(gi, publicKey, s) {
45
+ return (0, signature_1.verifyWithLabel)(publicKey, "GroupInfoTBS", (0, exports.encodeGroupInfoTBS)(gi), gi.signature, s);
46
+ }
47
+ async function verifyGroupInfoConfirmationTag(gi, joinerSecret, pskSecret, cs) {
48
+ const epochSecret = await (0, groupContext_1.extractEpochSecret)(gi.groupContext, joinerSecret, cs.kdf, pskSecret);
49
+ const key = await (0, kdf_1.deriveSecret)(epochSecret, "confirm", cs.kdf);
50
+ return cs.hash.verifyMac(key, gi.confirmationTag, gi.groupContext.confirmedTranscriptHash);
51
+ }
52
+ async function extractWelcomeSecret(joinerSecret, pskSecret, kdf) {
53
+ return (0, kdf_1.deriveSecret)(await kdf.extract(joinerSecret, pskSecret), "welcome", kdf);
54
+ }
55
+ //# sourceMappingURL=groupInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupInfo.js","sourceRoot":"","sources":["../../src/groupInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Decoder } from "./codec/tlsDecoder";
2
+ import { Encoder } from "./codec/tlsEncoder";
3
+ import { PreSharedKeyID } from "./presharedkey";
4
+ export type GroupSecrets = {
5
+ joinerSecret: Uint8Array;
6
+ pathSecret: Uint8Array | undefined;
7
+ psks: PreSharedKeyID[];
8
+ };
9
+ export declare const encodeGroupSecrets: Encoder<GroupSecrets>;
10
+ export declare const decodeGroupSecrets: Decoder<GroupSecrets>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupSecrets.d.ts","sourceRoot":"","sources":["../../src/groupSecrets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAe,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAqB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAA4B,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,UAAU,CAAA;IACxB,UAAU,EAAE,UAAU,GAAG,SAAS,CAAA;IAClC,IAAI,EAAE,cAAc,EAAE,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAGpD,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAGpD,CAAA"}