ts-mls 1.4.1 → 1.4.2

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 (156) hide show
  1. package/dist/authenticatedContent.d.ts +3 -1
  2. package/dist/authenticatedContent.js +10 -8
  3. package/dist/authenticatedContent.js.map +1 -1
  4. package/dist/capabilities.d.ts +2 -1
  5. package/dist/capabilities.js +13 -12
  6. package/dist/capabilities.js.map +1 -1
  7. package/dist/clientState.d.ts +4 -3
  8. package/dist/clientState.js +87 -59
  9. package/dist/clientState.js.map +1 -1
  10. package/dist/codec/number.d.ts +5 -1
  11. package/dist/codec/number.js +33 -24
  12. package/dist/codec/number.js.map +1 -1
  13. package/dist/codec/optional.d.ts +2 -2
  14. package/dist/codec/optional.js +24 -7
  15. package/dist/codec/optional.js.map +1 -1
  16. package/dist/codec/tlsEncoder.d.ts +11 -8
  17. package/dist/codec/tlsEncoder.js +39 -21
  18. package/dist/codec/tlsEncoder.js.map +1 -1
  19. package/dist/codec/variableLength.d.ts +4 -4
  20. package/dist/codec/variableLength.js +58 -28
  21. package/dist/codec/variableLength.js.map +1 -1
  22. package/dist/commit.d.ts +2 -1
  23. package/dist/commit.js +7 -6
  24. package/dist/commit.js.map +1 -1
  25. package/dist/contentType.d.ts +2 -1
  26. package/dist/contentType.js +4 -3
  27. package/dist/contentType.js.map +1 -1
  28. package/dist/createCommit.js +6 -5
  29. package/dist/createCommit.js.map +1 -1
  30. package/dist/credential.d.ts +5 -1
  31. package/dist/credential.js +14 -10
  32. package/dist/credential.js.map +1 -1
  33. package/dist/credentialType.d.ts +2 -1
  34. package/dist/credentialType.js +4 -3
  35. package/dist/credentialType.js.map +1 -1
  36. package/dist/crypto/ciphersuite.d.ts +2 -1
  37. package/dist/crypto/ciphersuite.js +4 -3
  38. package/dist/crypto/ciphersuite.js.map +1 -1
  39. package/dist/crypto/hash.js +4 -3
  40. package/dist/crypto/hash.js.map +1 -1
  41. package/dist/crypto/hpke.js +10 -4
  42. package/dist/crypto/hpke.js.map +1 -1
  43. package/dist/crypto/implementation/default/makeAead.js +9 -9
  44. package/dist/crypto/implementation/default/makeAead.js.map +1 -1
  45. package/dist/crypto/implementation/default/makeHashImpl.js +5 -5
  46. package/dist/crypto/implementation/default/makeHashImpl.js.map +1 -1
  47. package/dist/crypto/implementation/default/makeKdfImpl.js +3 -3
  48. package/dist/crypto/implementation/default/makeKdfImpl.js.map +1 -1
  49. package/dist/crypto/implementation/hpke.js +11 -11
  50. package/dist/crypto/implementation/hpke.js.map +1 -1
  51. package/dist/crypto/kdf.js +8 -7
  52. package/dist/crypto/kdf.js.map +1 -1
  53. package/dist/crypto/signature.js +10 -4
  54. package/dist/crypto/signature.js.map +1 -1
  55. package/dist/defaultExtensionType.d.ts +2 -1
  56. package/dist/defaultExtensionType.js +4 -3
  57. package/dist/defaultExtensionType.js.map +1 -1
  58. package/dist/defaultProposalType.d.ts +2 -1
  59. package/dist/defaultProposalType.js +4 -3
  60. package/dist/defaultProposalType.js.map +1 -1
  61. package/dist/extension.d.ts +3 -1
  62. package/dist/extension.js +8 -6
  63. package/dist/extension.js.map +1 -1
  64. package/dist/externalSender.d.ts +2 -1
  65. package/dist/externalSender.js +5 -4
  66. package/dist/externalSender.js.map +1 -1
  67. package/dist/framedContent.d.ts +9 -1
  68. package/dist/framedContent.js +35 -27
  69. package/dist/framedContent.js.map +1 -1
  70. package/dist/groupContext.d.ts +2 -1
  71. package/dist/groupContext.js +17 -16
  72. package/dist/groupContext.js.map +1 -1
  73. package/dist/groupInfo.d.ts +3 -1
  74. package/dist/groupInfo.js +11 -9
  75. package/dist/groupInfo.js.map +1 -1
  76. package/dist/groupSecrets.d.ts +2 -1
  77. package/dist/groupSecrets.js +6 -5
  78. package/dist/groupSecrets.js.map +1 -1
  79. package/dist/hpkeCiphertext.d.ts +2 -1
  80. package/dist/hpkeCiphertext.js +4 -3
  81. package/dist/hpkeCiphertext.js.map +1 -1
  82. package/dist/keyPackage.d.ts +5 -3
  83. package/dist/keyPackage.js +17 -15
  84. package/dist/keyPackage.js.map +1 -1
  85. package/dist/leafNode.d.ts +11 -1
  86. package/dist/leafNode.js +43 -27
  87. package/dist/leafNode.js.map +1 -1
  88. package/dist/leafNodeSource.d.ts +2 -1
  89. package/dist/leafNodeSource.js +4 -3
  90. package/dist/leafNodeSource.js.map +1 -1
  91. package/dist/lifetime.d.ts +2 -1
  92. package/dist/lifetime.js +4 -3
  93. package/dist/lifetime.js.map +1 -1
  94. package/dist/message.d.ts +9 -2
  95. package/dist/message.js +27 -20
  96. package/dist/message.js.map +1 -1
  97. package/dist/messageProtection.js +4 -3
  98. package/dist/messageProtection.js.map +1 -1
  99. package/dist/nodeType.d.ts +2 -1
  100. package/dist/nodeType.js +4 -3
  101. package/dist/nodeType.js.map +1 -1
  102. package/dist/parentHash.d.ts +2 -1
  103. package/dist/parentHash.js +5 -4
  104. package/dist/parentHash.js.map +1 -1
  105. package/dist/parentNode.d.ts +2 -1
  106. package/dist/parentNode.js +5 -4
  107. package/dist/parentNode.js.map +1 -1
  108. package/dist/presharedkey.d.ts +6 -1
  109. package/dist/presharedkey.js +16 -11
  110. package/dist/presharedkey.js.map +1 -1
  111. package/dist/privateMessage.d.ts +4 -1
  112. package/dist/privateMessage.js +29 -20
  113. package/dist/privateMessage.js.map +1 -1
  114. package/dist/processMessages.js +3 -2
  115. package/dist/processMessages.js.map +1 -1
  116. package/dist/proposal.d.ts +17 -1
  117. package/dist/proposal.js +50 -34
  118. package/dist/proposal.js.map +1 -1
  119. package/dist/proposalOrRefType.d.ts +5 -1
  120. package/dist/proposalOrRefType.js +14 -10
  121. package/dist/proposalOrRefType.js.map +1 -1
  122. package/dist/protocolVersion.d.ts +2 -1
  123. package/dist/protocolVersion.js +4 -3
  124. package/dist/protocolVersion.js.map +1 -1
  125. package/dist/publicMessage.d.ts +3 -1
  126. package/dist/publicMessage.js +9 -7
  127. package/dist/publicMessage.js.map +1 -1
  128. package/dist/ratchetTree.d.ts +3 -1
  129. package/dist/ratchetTree.js +13 -11
  130. package/dist/ratchetTree.js.map +1 -1
  131. package/dist/requiredCapabilities.d.ts +2 -1
  132. package/dist/requiredCapabilities.js +6 -5
  133. package/dist/requiredCapabilities.js.map +1 -1
  134. package/dist/sender.d.ts +6 -1
  135. package/dist/sender.js +24 -13
  136. package/dist/sender.js.map +1 -1
  137. package/dist/transcriptHash.d.ts +2 -1
  138. package/dist/transcriptHash.js +18 -8
  139. package/dist/transcriptHash.js.map +1 -1
  140. package/dist/treeHash.d.ts +4 -1
  141. package/dist/treeHash.js +17 -14
  142. package/dist/treeHash.js.map +1 -1
  143. package/dist/tsconfig.build.tsbuildinfo +1 -1
  144. package/dist/updatePath.d.ts +3 -1
  145. package/dist/updatePath.js +10 -8
  146. package/dist/updatePath.js.map +1 -1
  147. package/dist/util/byteArray.d.ts +2 -1
  148. package/dist/util/byteArray.js +21 -2
  149. package/dist/util/byteArray.js.map +1 -1
  150. package/dist/welcome.d.ts +3 -1
  151. package/dist/welcome.js +12 -10
  152. package/dist/welcome.js.map +1 -1
  153. package/dist/wireformat.d.ts +2 -1
  154. package/dist/wireformat.js +4 -3
  155. package/dist/wireformat.js.map +1 -1
  156. package/package.json +3 -3
@@ -1,5 +1,5 @@
1
1
  import { Decoder } from "./codec/tlsDecoder.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  import { Proposal } from "./proposal.js";
4
4
  declare const proposalOrRefTypes: {
5
5
  readonly proposal: 1;
@@ -7,6 +7,7 @@ declare const proposalOrRefTypes: {
7
7
  };
8
8
  export type ProposalOrRefTypeName = keyof typeof proposalOrRefTypes;
9
9
  export type ProposalOrRefTypeValue = (typeof proposalOrRefTypes)[ProposalOrRefTypeName];
10
+ export declare const proposalOrRefTypeEncoder: BufferEncoder<ProposalOrRefTypeName>;
10
11
  export declare const encodeProposalOrRefType: Encoder<ProposalOrRefTypeName>;
11
12
  export declare const decodeProposalOrRefType: Decoder<ProposalOrRefTypeName>;
12
13
  export interface ProposalOrRefProposal {
@@ -18,8 +19,11 @@ export interface ProposalOrRefProposalRef {
18
19
  reference: Uint8Array;
19
20
  }
20
21
  export type ProposalOrRef = ProposalOrRefProposal | ProposalOrRefProposalRef;
22
+ export declare const proposalOrRefProposalEncoder: BufferEncoder<ProposalOrRefProposal>;
21
23
  export declare const encodeProposalOrRefProposal: Encoder<ProposalOrRefProposal>;
24
+ export declare const proposalOrRefProposalRefEncoder: BufferEncoder<ProposalOrRefProposalRef>;
22
25
  export declare const encodeProposalOrRefProposalRef: Encoder<ProposalOrRefProposalRef>;
26
+ export declare const proposalOrRefEncoder: BufferEncoder<ProposalOrRef>;
23
27
  export declare const encodeProposalOrRef: Encoder<ProposalOrRef>;
24
28
  export declare const decodeProposalOrRef: Decoder<ProposalOrRef>;
25
29
  export {};
@@ -1,25 +1,29 @@
1
- import { decodeUint8, encodeUint8 } from "./codec/number.js";
1
+ import { decodeUint8, uint8Encoder } from "./codec/number.js";
2
2
  import { flatMapDecoder, mapDecoder, mapDecoderOption } from "./codec/tlsDecoder.js";
3
- import { contramapEncoder, contramapEncoders } from "./codec/tlsEncoder.js";
4
- import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js";
5
- import { decodeProposal, encodeProposal } from "./proposal.js";
3
+ import { contramapBufferEncoder, contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
5
+ import { decodeProposal, proposalEncoder } from "./proposal.js";
6
6
  import { enumNumberToKey } from "./util/enumHelpers.js";
7
7
  const proposalOrRefTypes = {
8
8
  proposal: 1,
9
9
  reference: 2,
10
10
  };
11
- export const encodeProposalOrRefType = contramapEncoder(encodeUint8, (t) => proposalOrRefTypes[t]);
11
+ export const proposalOrRefTypeEncoder = contramapBufferEncoder(uint8Encoder, (t) => proposalOrRefTypes[t]);
12
+ export const encodeProposalOrRefType = encode(proposalOrRefTypeEncoder);
12
13
  export const decodeProposalOrRefType = mapDecoderOption(decodeUint8, enumNumberToKey(proposalOrRefTypes));
13
- export const encodeProposalOrRefProposal = contramapEncoders([encodeProposalOrRefType, encodeProposal], (p) => [p.proposalOrRefType, p.proposal]);
14
- export const encodeProposalOrRefProposalRef = contramapEncoders([encodeProposalOrRefType, encodeVarLenData], (r) => [r.proposalOrRefType, r.reference]);
15
- export const encodeProposalOrRef = (input) => {
14
+ export const proposalOrRefProposalEncoder = contramapBufferEncoders([proposalOrRefTypeEncoder, proposalEncoder], (p) => [p.proposalOrRefType, p.proposal]);
15
+ export const encodeProposalOrRefProposal = encode(proposalOrRefProposalEncoder);
16
+ export const proposalOrRefProposalRefEncoder = contramapBufferEncoders([proposalOrRefTypeEncoder, varLenDataEncoder], (r) => [r.proposalOrRefType, r.reference]);
17
+ export const encodeProposalOrRefProposalRef = encode(proposalOrRefProposalRefEncoder);
18
+ export const proposalOrRefEncoder = (input) => {
16
19
  switch (input.proposalOrRefType) {
17
20
  case "proposal":
18
- return encodeProposalOrRefProposal(input);
21
+ return proposalOrRefProposalEncoder(input);
19
22
  case "reference":
20
- return encodeProposalOrRefProposalRef(input);
23
+ return proposalOrRefProposalRefEncoder(input);
21
24
  }
22
25
  };
26
+ export const encodeProposalOrRef = encode(proposalOrRefEncoder);
23
27
  export const decodeProposalOrRef = flatMapDecoder(decodeProposalOrRefType, (proposalOrRefType) => {
24
28
  switch (proposalOrRefType) {
25
29
  case "proposal":
@@ -1 +1 @@
1
- {"version":3,"file":"proposalOrRefType.js","sourceRoot":"","sources":["../src/proposalOrRefType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAW,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAW,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAY,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;CACJ,CAAA;AAKV,MAAM,CAAC,MAAM,uBAAuB,GAAmC,gBAAgB,CACrF,WAAW,EACX,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAmC,gBAAgB,CACrF,WAAW,EACX,eAAe,CAAC,kBAAkB,CAAC,CACpC,CAAA;AAaD,MAAM,CAAC,MAAM,2BAA2B,GAAmC,iBAAiB,CAC1F,CAAC,uBAAuB,EAAE,cAAc,CAAC,EACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAU,CAClD,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAsC,iBAAiB,CAChG,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,EAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,SAAS,CAAU,CACnD,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA2B,CAAC,KAAK,EAAE,EAAE;IACnE,QAAQ,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,2BAA2B,CAAC,KAAK,CAAC,CAAA;QAC3C,KAAK,WAAW;YACd,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAA;IAChD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA2B,cAAc,CACvE,uBAAuB,EACvB,CAAC,iBAAiB,EAA0B,EAAE;IAC5C,QAAQ,iBAAiB,EAAE,CAAC;QAC1B,KAAK,UAAU;YACb,OAAO,UAAU,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACpF,KAAK,WAAW;YACd,OAAO,UAAU,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC,CACF,CAAA"}
1
+ {"version":3,"file":"proposalOrRefType.js","sourceRoot":"","sources":["../src/proposalOrRefType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAW,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7F,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAiB,MAAM,EAAW,MAAM,uBAAuB,CAAA;AACvH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAY,eAAe,EAAE,MAAM,eAAe,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;CACJ,CAAA;AAKV,MAAM,CAAC,MAAM,wBAAwB,GAAyC,sBAAsB,CAClG,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAmC,MAAM,CAAC,wBAAwB,CAAC,CAAA;AAEvG,MAAM,CAAC,MAAM,uBAAuB,GAAmC,gBAAgB,CACrF,WAAW,EACX,eAAe,CAAC,kBAAkB,CAAC,CACpC,CAAA;AAaD,MAAM,CAAC,MAAM,4BAA4B,GAAyC,uBAAuB,CACvG,CAAC,wBAAwB,EAAE,eAAe,CAAC,EAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAU,CAClD,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAmC,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAE/G,MAAM,CAAC,MAAM,+BAA+B,GAA4C,uBAAuB,CAC7G,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,EAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,SAAS,CAAU,CACnD,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAsC,MAAM,CAAC,+BAA+B,CAAC,CAAA;AAExH,MAAM,CAAC,MAAM,oBAAoB,GAAiC,CAAC,KAAK,EAAE,EAAE;IAC1E,QAAQ,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAA;QAC5C,KAAK,WAAW;YACd,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA2B,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAEvF,MAAM,CAAC,MAAM,mBAAmB,GAA2B,cAAc,CACvE,uBAAuB,EACvB,CAAC,iBAAiB,EAA0B,EAAE;IAC5C,QAAQ,iBAAiB,EAAE,CAAC;QAC1B,KAAK,UAAU;YACb,OAAO,UAAU,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACpF,KAAK,WAAW;YACd,OAAO,UAAU,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC,CACF,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import { Decoder } from "./codec/tlsDecoder.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  export declare const protocolVersions: {
4
4
  readonly mls10: 1;
5
5
  };
6
6
  export type ProtocolVersionName = keyof typeof protocolVersions;
7
7
  export type ProtocolVersionValue = (typeof protocolVersions)[ProtocolVersionName];
8
+ export declare const protocolVersionEncoder: BufferEncoder<ProtocolVersionName>;
8
9
  export declare const encodeProtocolVersion: Encoder<ProtocolVersionName>;
9
10
  export declare const decodeProtocolVersion: Decoder<ProtocolVersionName>;
@@ -1,10 +1,11 @@
1
- import { decodeUint16, encodeUint16 } from "./codec/number.js";
1
+ import { decodeUint16, uint16Encoder } from "./codec/number.js";
2
2
  import { mapDecoderOption } from "./codec/tlsDecoder.js";
3
- import { contramapEncoder } from "./codec/tlsEncoder.js";
3
+ import { contramapBufferEncoder, encode } from "./codec/tlsEncoder.js";
4
4
  import { enumNumberToKey } from "./util/enumHelpers.js";
5
5
  export const protocolVersions = {
6
6
  mls10: 1,
7
7
  };
8
- export const encodeProtocolVersion = contramapEncoder(encodeUint16, (t) => protocolVersions[t]);
8
+ export const protocolVersionEncoder = contramapBufferEncoder(uint16Encoder, (t) => protocolVersions[t]);
9
+ export const encodeProtocolVersion = encode(protocolVersionEncoder);
9
10
  export const decodeProtocolVersion = mapDecoderOption(decodeUint16, enumNumberToKey(protocolVersions));
10
11
  //# sourceMappingURL=protocolVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocolVersion.js","sourceRoot":"","sources":["../src/protocolVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAW,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAW,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,CAAC;CACA,CAAA;AAKV,MAAM,CAAC,MAAM,qBAAqB,GAAiC,gBAAgB,CACjF,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAC3B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAiC,gBAAgB,CACjF,YAAY,EACZ,eAAe,CAAC,gBAAgB,CAAC,CAClC,CAAA"}
1
+ {"version":3,"file":"protocolVersion.js","sourceRoot":"","sources":["../src/protocolVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAW,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAiB,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK,EAAE,CAAC;CACA,CAAA;AAKV,MAAM,CAAC,MAAM,sBAAsB,GAAuC,sBAAsB,CAC9F,aAAa,EACb,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAC3B,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAiC,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAEjG,MAAM,CAAC,MAAM,qBAAqB,GAAiC,gBAAgB,CACjF,YAAY,EACZ,eAAe,CAAC,gBAAgB,CAAC,CAClC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { Decoder } from "./codec/tlsDecoder.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  import { Extension } from "./extension.js";
4
4
  import { ExternalSender } from "./externalSender.js";
5
5
  import { FramedContent, FramedContentAuthData } from "./framedContent.js";
@@ -14,6 +14,7 @@ type PublicMessageInfoMember = {
14
14
  type PublicMessageInfoMemberOther = {
15
15
  senderType: Exclude<SenderTypeName, "member">;
16
16
  };
17
+ export declare const publicMessageInfoEncoder: BufferEncoder<PublicMessageInfo>;
17
18
  export declare const encodePublicMessageInfo: Encoder<PublicMessageInfo>;
18
19
  export declare function decodePublicMessageInfo(senderType: SenderTypeName): Decoder<PublicMessageInfo>;
19
20
  export type PublicMessage = {
@@ -22,6 +23,7 @@ export type PublicMessage = {
22
23
  } & PublicMessageInfo;
23
24
  export type MemberPublicMessage = PublicMessage & PublicMessageInfoMember;
24
25
  export type ExternalPublicMessage = PublicMessage & PublicMessageInfoMemberOther;
26
+ export declare const publicMessageEncoder: BufferEncoder<PublicMessage>;
25
27
  export declare const encodePublicMessage: Encoder<PublicMessage>;
26
28
  export declare const decodePublicMessage: Decoder<PublicMessage>;
27
29
  export declare function findSignaturePublicKey(ratchetTree: RatchetTree, groupContext: GroupContext, framedContent: FramedContent): Uint8Array;
@@ -1,21 +1,22 @@
1
1
  import { flatMapDecoder, mapDecoder, mapDecoders, succeedDecoder } from "./codec/tlsDecoder.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
3
- import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js";
2
+ import { contramapBufferEncoders, encode, encVoid } from "./codec/tlsEncoder.js";
3
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
4
4
  import { decodeExternalSender } from "./externalSender.js";
5
- import { decodeFramedContent, decodeFramedContentAuthData, encodeFramedContent, encodeFramedContentAuthData, } from "./framedContent.js";
5
+ import { decodeFramedContent, decodeFramedContentAuthData, framedContentEncoder, framedContentAuthDataEncoder, } from "./framedContent.js";
6
6
  import { CodecError, ValidationError } from "./mlsError.js";
7
7
  import { getSignaturePublicKeyFromLeafIndex } from "./ratchetTree.js";
8
8
  import { toLeafIndex } from "./treemath.js";
9
- export const encodePublicMessageInfo = (info) => {
9
+ export const publicMessageInfoEncoder = (info) => {
10
10
  switch (info.senderType) {
11
11
  case "member":
12
- return encodeVarLenData(info.membershipTag);
12
+ return varLenDataEncoder(info.membershipTag);
13
13
  case "external":
14
14
  case "new_member_proposal":
15
15
  case "new_member_commit":
16
- return new Uint8Array();
16
+ return encVoid;
17
17
  }
18
18
  };
19
+ export const encodePublicMessageInfo = encode(publicMessageInfoEncoder);
19
20
  export function decodePublicMessageInfo(senderType) {
20
21
  switch (senderType) {
21
22
  case "member":
@@ -29,7 +30,8 @@ export function decodePublicMessageInfo(senderType) {
29
30
  return succeedDecoder({ senderType });
30
31
  }
31
32
  }
32
- export const encodePublicMessage = contramapEncoders([encodeFramedContent, encodeFramedContentAuthData, encodePublicMessageInfo], (msg) => [msg.content, msg.auth, msg]);
33
+ export const publicMessageEncoder = contramapBufferEncoders([framedContentEncoder, framedContentAuthDataEncoder, publicMessageInfoEncoder], (msg) => [msg.content, msg.auth, msg]);
34
+ export const encodePublicMessage = encode(publicMessageEncoder);
33
35
  export const decodePublicMessage = flatMapDecoder(decodeFramedContent, (content) => mapDecoders([decodeFramedContentAuthData(content.contentType), decodePublicMessageInfo(content.sender.senderType)], (auth, info) => ({
34
36
  ...info,
35
37
  content,
@@ -1 +1 @@
1
- {"version":3,"file":"publicMessage.js","sourceRoot":"","sources":["../src/publicMessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publicMessage.js","sourceRoot":"","sources":["../src/publicMessage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Encoder } from "./codec/tlsEncoder.js";
1
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
2
2
  import { Decoder } from "./codec/tlsDecoder.js";
3
3
  import { ParentNode } from "./parentNode.js";
4
4
  import { LeafIndex, NodeIndex } from "./treemath.js";
@@ -12,6 +12,7 @@ type NodeLeaf = {
12
12
  nodeType: "leaf";
13
13
  leaf: LeafNode;
14
14
  };
15
+ export declare const nodeEncoder: BufferEncoder<Node>;
15
16
  export declare const encodeNode: Encoder<Node>;
16
17
  export declare const decodeNode: Decoder<Node>;
17
18
  export declare function getHpkePublicKey(n: Node): Uint8Array;
@@ -24,6 +25,7 @@ export declare function extendRatchetTree(tree: RatchetTree): RatchetTree;
24
25
  * (Obviously, this may be done "virtually", by synthesizing blank nodes when required, as opposed to actually changing the structure in memory.)
25
26
  */
26
27
  export declare function stripBlankNodes(tree: RatchetTree): RatchetTree;
28
+ export declare const ratchetTreeEncoder: BufferEncoder<RatchetTree>;
27
29
  export declare const encodeRatchetTree: Encoder<RatchetTree>;
28
30
  export declare const decodeRatchetTree: Decoder<RatchetTree>;
29
31
  export declare function findBlankLeafNodeIndex(tree: RatchetTree): NodeIndex | undefined;
@@ -1,21 +1,22 @@
1
- import { contramapEncoder, contramapEncoders } from "./codec/tlsEncoder.js";
1
+ import { contramapBufferEncoder, contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
2
2
  import { flatMapDecoder, mapDecoder } from "./codec/tlsDecoder.js";
3
- import { decodeVarLenType, encodeVarLenType } from "./codec/variableLength.js";
4
- import { decodeNodeType, encodeNodeType } from "./nodeType.js";
5
- import { decodeOptional, encodeOptional } from "./codec/optional.js";
6
- import { encodeParentNode, decodeParentNode } from "./parentNode.js";
3
+ import { decodeVarLenType, varLenTypeEncoder } from "./codec/variableLength.js";
4
+ import { decodeNodeType, nodeTypeEncoder } from "./nodeType.js";
5
+ import { decodeOptional, optionalEncoder } from "./codec/optional.js";
6
+ import { parentNodeEncoder, decodeParentNode } from "./parentNode.js";
7
7
  import { copath, directPath, isLeaf, leafToNodeIndex, leafWidth, left, nodeToLeafIndex, parent, right, root, toLeafIndex, toNodeIndex, } from "./treemath.js";
8
- import { encodeLeafNode, decodeLeafNode } from "./leafNode.js";
8
+ import { leafNodeEncoder, decodeLeafNode } from "./leafNode.js";
9
9
  import { constantTimeEqual } from "./util/constantTimeCompare.js";
10
10
  import { InternalError, ValidationError } from "./mlsError.js";
11
- export const encodeNode = (node) => {
11
+ export const nodeEncoder = (node) => {
12
12
  switch (node.nodeType) {
13
13
  case "parent":
14
- return contramapEncoders([encodeNodeType, encodeParentNode], (n) => [n.nodeType, n.parent])(node);
14
+ return contramapBufferEncoders([nodeTypeEncoder, parentNodeEncoder], (n) => [n.nodeType, n.parent])(node);
15
15
  case "leaf":
16
- return contramapEncoders([encodeNodeType, encodeLeafNode], (n) => [n.nodeType, n.leaf])(node);
16
+ return contramapBufferEncoders([nodeTypeEncoder, leafNodeEncoder], (n) => [n.nodeType, n.leaf])(node);
17
17
  }
18
18
  };
19
+ export const encodeNode = encode(nodeEncoder);
19
20
  export const decodeNode = flatMapDecoder(decodeNodeType, (nodeType) => {
20
21
  switch (nodeType) {
21
22
  case "parent":
@@ -73,7 +74,8 @@ export function stripBlankNodes(tree) {
73
74
  }
74
75
  return tree.slice(0, lastNonBlank + 1);
75
76
  }
76
- export const encodeRatchetTree = contramapEncoder(encodeVarLenType(encodeOptional(encodeNode)), stripBlankNodes);
77
+ export const ratchetTreeEncoder = contramapBufferEncoder(varLenTypeEncoder(optionalEncoder(nodeEncoder)), stripBlankNodes);
78
+ export const encodeRatchetTree = encode(ratchetTreeEncoder);
77
79
  export const decodeRatchetTree = mapDecoder(decodeVarLenType(decodeOptional(decodeNode)), extendRatchetTree);
78
80
  export function findBlankLeafNodeIndex(tree) {
79
81
  const nodeIndex = tree.findIndex((node, nodeIndex) => node === undefined && isLeaf(toNodeIndex(nodeIndex)));
@@ -239,7 +241,7 @@ export function findLeafIndex(tree, leaf) {
239
241
  if (node.nodeType === "parent")
240
242
  throw new InternalError("Found parent node in leaf node position");
241
243
  //todo is there a better (faster) comparison method?
242
- return constantTimeEqual(encodeLeafNode(node.leaf), encodeLeafNode(leaf));
244
+ return constantTimeEqual(encode(leafNodeEncoder)(node.leaf), encode(leafNodeEncoder)(leaf));
243
245
  }
244
246
  return false;
245
247
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ratchetTree.js","sourceRoot":"","sources":["../src/ratchetTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAW,cAAc,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAc,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EACL,MAAM,EACN,UAAU,EACV,MAAM,EAEN,eAAe,EACf,SAAS,EACT,IAAI,EAEJ,eAAe,EACf,MAAM,EACN,KAAK,EACL,IAAI,EACJ,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAA;AACtB,OAAO,EAAY,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAM9D,MAAM,CAAC,MAAM,UAAU,GAAkB,CAAC,IAAI,EAAE,EAAE;IAChD,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,iBAAiB,CACtB,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAClC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAU,CACnD,CAAC,IAAI,CAAC,CAAA;QACT,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAU,CAAC,CAAC,IAAI,CAAC,CAAA;IACpH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAkB,cAAc,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAiB,EAAE;IAClG,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,UAAU,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC/C,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC,CAAA;QACL,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3C,QAAQ;gBACR,IAAI;aACL,CAAC,CAAC,CAAA;IACP,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,gBAAgB,CAAC,CAAO;IACtC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAA;QAC/B,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAA;IAC/B,CAAC;AACH,CAAC;AAID,MAAM,UAAU,iBAAiB,CAAC,IAAiB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAEjC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CAAC,sDAAsD,CAAC,CAAA;IACjF,CAAC;IAED,+DAA+D;IAC/D,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEtD,uDAAuD;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IACzB,OAAO,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,0CAA0C;AAC1C,SAAS,sBAAsB,CAAC,CAAS;IACvC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,CAAC,EAAE,CAAA;IACL,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAClC,OAAO,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7D,YAAY,EAAE,CAAA;IAChB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAyB,gBAAgB,CACrE,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAC5C,eAAe,CAChB,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAyB,UAAU,CAC/D,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,EAC5C,iBAAiB,CAClB,CAAA;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAiB;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC3G,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;;QAC9B,OAAO,WAAW,CAAC,SAAS,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAiB;IAC9D,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAiB,EAAE,QAAkB;IAC9D,MAAM,OAAO,GAAG,SAAS,CAAA;IACzB,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtD,MAAM,OAAO,GAAgB;QAC3B,GAAG,IAAI;QACP,OAAO;QACP,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpC,GAAG,IAAI,KAAK,CAAmB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KAChD,CAAA;IACD,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,QAAkB;IAC/D,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAExD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAEzB,KAAK,MAAM,SAAS,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAkB,CAAA;YAErC,MAAM,OAAO,GAAe;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE;aAC3G,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAEtD,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAiB,EAAE,QAAkB,EAAE,SAAoB;IACxF,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAErE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAEzB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAE1D,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAiB,EAAE,gBAA2B;IAC3E,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAErE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAEzB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,SAAS,CAAA;IAE/B,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,IAAiB;IACvD,OAAO,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAA0B,EAAE,SAAoB;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;IAE5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QACzB,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACpC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,SAAS,CAAC,CAAA;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,OAAO,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAoB,EAAE,IAAiB;IACxE,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IAC3C,uEAAuE;IACvE,+EAA+E;IAC/E,OAAO,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;AAC9G,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,SAAoB,EACpB,IAAiB;IAEjB,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAExC,uEAAuE;IACvE,+EAA+E;IAC/E,OAAO,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAA;QAClC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAA;;YACzB,OAAO,CAAC,GAAG,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAA;IACzD,CAAC,EACD,EAAyD,CAC1D,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAiB,EAAE,WAAwB;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IACzB,SAAS,eAAe,CAAC,SAAiB;QACxC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,SAAS,CAAA;IAC/D,CAAC;IACD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;YAChC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;YACrB,CAAC;iBAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,CAAC,CAAC,CAAC,GAAG;oBACR,GAAG,CAAC;oBACJ,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;iBACpG,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,8BAA8B,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAiB,EACjB,SAAoB,EACpB,CAA4D;IAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9C,IAAI,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,YAAY,IAAI,SAAS,EAAE,CAAC;QACjC,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QACtC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACpC,MAAM,IAAI,aAAa,CAAC,sBAAsB,CAAC,CAAA;YACjD,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;YAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,IAAiB,EAAE,SAAoB;IAC/E,OAAO,CACL,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,SAAoB,EAAE,KAAiB,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAC7B,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAiB,EAAE,IAAc;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACpD,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBAAE,MAAM,IAAI,aAAa,CAAC,yCAAyC,CAAC,CAAA;YAClG,oDAAoD;YACpD,OAAO,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,WAAwB,EAAE,SAAoB;IACvF,MAAM,cAAc,GAAG,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;IAE9D,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,KAAK,QAAQ;QACtE,MAAM,IAAI,eAAe,CAAC,uCAAuC,CAAC,CAAA;IACpE,OAAO,cAAc,CAAC,IAAI,CAAC,UAAU,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,WAAwB,EAAE,SAAoB;IAC/F,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;IAExD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QAC1D,MAAM,IAAI,eAAe,CAAC,uCAAuC,CAAC,CAAA;IACpE,OAAO,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAA;AACzC,CAAC"}
1
+ {"version":3,"file":"ratchetTree.js","sourceRoot":"","sources":["../src/ratchetTree.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { CredentialTypeName } from "./credentialType.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  import { Decoder } from "./codec/tlsDecoder.js";
4
4
  export interface RequiredCapabilities {
5
5
  extensionTypes: number[];
6
6
  proposalTypes: number[];
7
7
  credentialTypes: CredentialTypeName[];
8
8
  }
9
+ export declare const requiredCapabilitiesEncoder: BufferEncoder<RequiredCapabilities>;
9
10
  export declare const encodeRequiredCapabilities: Encoder<RequiredCapabilities>;
10
11
  export declare const decodeRequiredCapabilities: Decoder<RequiredCapabilities>;
@@ -1,8 +1,9 @@
1
- import { encodeCredentialType, decodeCredentialType } from "./credentialType.js";
2
- import { encodeVarLenType, decodeVarLenType } from "./codec/variableLength.js";
3
- import { contramapEncoders } from "./codec/tlsEncoder.js";
1
+ import { credentialTypeEncoder, decodeCredentialType } from "./credentialType.js";
2
+ import { varLenTypeEncoder, decodeVarLenType } from "./codec/variableLength.js";
3
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
4
  import { mapDecoders } from "./codec/tlsDecoder.js";
5
- import { decodeUint16, encodeUint16 } from "./codec/number.js";
6
- export const encodeRequiredCapabilities = contramapEncoders([encodeVarLenType(encodeUint16), encodeVarLenType(encodeUint16), encodeVarLenType(encodeCredentialType)], (rc) => [rc.extensionTypes, rc.proposalTypes, rc.credentialTypes]);
5
+ import { decodeUint16, uint16Encoder } from "./codec/number.js";
6
+ export const requiredCapabilitiesEncoder = contramapBufferEncoders([varLenTypeEncoder(uint16Encoder), varLenTypeEncoder(uint16Encoder), varLenTypeEncoder(credentialTypeEncoder)], (rc) => [rc.extensionTypes, rc.proposalTypes, rc.credentialTypes]);
7
+ export const encodeRequiredCapabilities = encode(requiredCapabilitiesEncoder);
7
8
  export const decodeRequiredCapabilities = mapDecoders([decodeVarLenType(decodeUint16), decodeVarLenType(decodeUint16), decodeVarLenType(decodeCredentialType)], (extensionTypes, proposalTypes, credentialTypes) => ({ extensionTypes, proposalTypes, credentialTypes }));
8
9
  //# sourceMappingURL=requiredCapabilities.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requiredCapabilities.js","sourceRoot":"","sources":["../src/requiredCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACpG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAQ9D,MAAM,CAAC,MAAM,0BAA0B,GAAkC,iBAAiB,CACxF,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,EACxG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,eAAe,CAAU,CAC3E,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAkC,WAAW,CAClF,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,EACxG,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CACzG,CAAA"}
1
+ {"version":3,"file":"requiredCapabilities.js","sourceRoot":"","sources":["../src/requiredCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACrG,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAiB,uBAAuB,EAAE,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQ/D,MAAM,CAAC,MAAM,2BAA2B,GAAwC,uBAAuB,CACrG,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,EAC9G,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,eAAe,CAAU,CAC3E,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAkC,MAAM,CAAC,2BAA2B,CAAC,CAAA;AAE5G,MAAM,CAAC,MAAM,0BAA0B,GAAkC,WAAW,CAClF,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,EACxG,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,CACzG,CAAA"}
package/dist/sender.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Decoder } from "./codec/tlsDecoder.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  import { ContentTypeName } from "./contentType.js";
4
4
  import { CiphersuiteImpl } from "./crypto/ciphersuite.js";
5
5
  declare const senderTypes: {
@@ -10,6 +10,7 @@ declare const senderTypes: {
10
10
  };
11
11
  export type SenderTypeName = keyof typeof senderTypes;
12
12
  export type SenderTypeValue = (typeof senderTypes)[SenderTypeName];
13
+ export declare const senderTypeEncoder: BufferEncoder<SenderTypeName>;
13
14
  export declare const encodeSenderType: Encoder<SenderTypeName>;
14
15
  export declare const decodeSenderType: Decoder<SenderTypeName>;
15
16
  export interface SenderMember {
@@ -28,6 +29,7 @@ export interface SenderNewMemberCommit {
28
29
  senderType: "new_member_commit";
29
30
  }
30
31
  export type Sender = SenderMember | SenderNonMember;
32
+ export declare const senderEncoder: BufferEncoder<Sender>;
31
33
  export declare const encodeSender: Encoder<Sender>;
32
34
  export declare const decodeSender: Decoder<Sender>;
33
35
  export declare function getSenderLeafNodeIndex(sender: Sender): number | undefined;
@@ -39,8 +41,10 @@ export interface SenderData {
39
41
  export type ReuseGuard = Uint8Array & {
40
42
  length: 4;
41
43
  };
44
+ export declare const reuseGuardEncoder: BufferEncoder<ReuseGuard>;
42
45
  export declare const encodeReuseGuard: Encoder<ReuseGuard>;
43
46
  export declare const decodeReuseGuard: Decoder<ReuseGuard>;
47
+ export declare const senderDataEncoder: BufferEncoder<SenderData>;
44
48
  export declare const encodeSenderData: Encoder<SenderData>;
45
49
  export declare const decodeSenderData: Decoder<SenderData>;
46
50
  export interface SenderDataAAD {
@@ -48,6 +52,7 @@ export interface SenderDataAAD {
48
52
  epoch: bigint;
49
53
  contentType: ContentTypeName;
50
54
  }
55
+ export declare const senderDataAADEncoder: BufferEncoder<SenderDataAAD>;
51
56
  export declare const encodeSenderDataAAD: Encoder<SenderDataAAD>;
52
57
  export declare const decodeSenderDataAAD: Decoder<SenderDataAAD>;
53
58
  export declare function sampleCiphertext(cs: CiphersuiteImpl, ciphertext: Uint8Array): Uint8Array;
package/dist/sender.js CHANGED
@@ -1,8 +1,8 @@
1
- import { decodeUint32, decodeUint64, decodeUint8, encodeUint32, encodeUint64, encodeUint8 } from "./codec/number.js";
1
+ import { decodeUint32, decodeUint64, decodeUint8, uint32Encoder, uint64Encoder, uint8Encoder } from "./codec/number.js";
2
2
  import { flatMapDecoder, mapDecoder, mapDecoderOption, mapDecoders } from "./codec/tlsDecoder.js";
3
- import { contramapEncoder, contramapEncoders } from "./codec/tlsEncoder.js";
4
- import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js";
5
- import { decodeContentType, encodeContentType } from "./contentType.js";
3
+ import { contramapBufferEncoder, contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
5
+ import { contentTypeEncoder, decodeContentType } from "./contentType.js";
6
6
  import { expandWithLabel } from "./crypto/kdf.js";
7
7
  import { enumNumberToKey } from "./util/enumHelpers.js";
8
8
  const senderTypes = {
@@ -11,19 +11,21 @@ const senderTypes = {
11
11
  new_member_proposal: 3,
12
12
  new_member_commit: 4,
13
13
  };
14
- export const encodeSenderType = contramapEncoder(encodeUint8, (t) => senderTypes[t]);
14
+ export const senderTypeEncoder = contramapBufferEncoder(uint8Encoder, (t) => senderTypes[t]);
15
+ export const encodeSenderType = encode(senderTypeEncoder);
15
16
  export const decodeSenderType = mapDecoderOption(decodeUint8, enumNumberToKey(senderTypes));
16
- export const encodeSender = (s) => {
17
+ export const senderEncoder = (s) => {
17
18
  switch (s.senderType) {
18
19
  case "member":
19
- return contramapEncoders([encodeSenderType, encodeUint32], (s) => [s.senderType, s.leafIndex])(s);
20
+ return contramapBufferEncoders([senderTypeEncoder, uint32Encoder], (s) => [s.senderType, s.leafIndex])(s);
20
21
  case "external":
21
- return contramapEncoders([encodeSenderType, encodeUint32], (s) => [s.senderType, s.senderIndex])(s);
22
+ return contramapBufferEncoders([senderTypeEncoder, uint32Encoder], (s) => [s.senderType, s.senderIndex])(s);
22
23
  case "new_member_proposal":
23
24
  case "new_member_commit":
24
- return encodeSenderType(s.senderType);
25
+ return senderTypeEncoder(s.senderType);
25
26
  }
26
27
  };
28
+ export const encodeSender = encode(senderEncoder);
27
29
  export const decodeSender = flatMapDecoder(decodeSenderType, (senderType) => {
28
30
  switch (senderType) {
29
31
  case "member":
@@ -49,24 +51,33 @@ export const decodeSender = flatMapDecoder(decodeSenderType, (senderType) => {
49
51
  export function getSenderLeafNodeIndex(sender) {
50
52
  return sender.senderType === "member" ? sender.leafIndex : undefined;
51
53
  }
52
- export const encodeReuseGuard = (g) => g;
54
+ export const reuseGuardEncoder = (g) => [
55
+ 4,
56
+ (offset, buffer) => {
57
+ const view = new Uint8Array(buffer, offset, 4);
58
+ view.set(g, 0);
59
+ },
60
+ ];
61
+ export const encodeReuseGuard = encode(reuseGuardEncoder);
53
62
  export const decodeReuseGuard = (b, offset) => {
54
63
  return [b.subarray(offset, offset + 4), 4];
55
64
  };
56
- export const encodeSenderData = contramapEncoders([encodeUint32, encodeUint32, encodeReuseGuard], (s) => [s.leafIndex, s.generation, s.reuseGuard]);
65
+ export const senderDataEncoder = contramapBufferEncoders([uint32Encoder, uint32Encoder, reuseGuardEncoder], (s) => [s.leafIndex, s.generation, s.reuseGuard]);
66
+ export const encodeSenderData = encode(senderDataEncoder);
57
67
  export const decodeSenderData = mapDecoders([decodeUint32, decodeUint32, decodeReuseGuard], (leafIndex, generation, reuseGuard) => ({
58
68
  leafIndex,
59
69
  generation,
60
70
  reuseGuard,
61
71
  }));
62
- export const encodeSenderDataAAD = contramapEncoders([encodeVarLenData, encodeUint64, encodeContentType], (aad) => [aad.groupId, aad.epoch, aad.contentType]);
72
+ export const senderDataAADEncoder = contramapBufferEncoders([varLenDataEncoder, uint64Encoder, contentTypeEncoder], (aad) => [aad.groupId, aad.epoch, aad.contentType]);
73
+ export const encodeSenderDataAAD = encode(senderDataAADEncoder);
63
74
  export const decodeSenderDataAAD = mapDecoders([decodeVarLenData, decodeUint64, decodeContentType], (groupId, epoch, contentType) => ({
64
75
  groupId,
65
76
  epoch,
66
77
  contentType,
67
78
  }));
68
79
  export function sampleCiphertext(cs, ciphertext) {
69
- return ciphertext.length < cs.kdf.size ? ciphertext : ciphertext.slice(0, cs.kdf.size);
80
+ return ciphertext.length < cs.kdf.size ? ciphertext : ciphertext.subarray(0, cs.kdf.size);
70
81
  }
71
82
  export async function expandSenderDataKey(cs, senderDataSecret, ciphertext) {
72
83
  const ciphertextSample = sampleCiphertext(cs, ciphertext);
@@ -1 +1 @@
1
- {"version":3,"file":"sender.js","sourceRoot":"","sources":["../src/sender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sender.js","sourceRoot":"","sources":["../src/sender.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Decoder } from "./codec/tlsDecoder.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  import { Hash } from "./crypto/hash.js";
4
4
  import { FramedContentCommit } from "./framedContent.js";
5
5
  import { WireformatName } from "./wireformat.js";
@@ -8,6 +8,7 @@ export interface ConfirmedTranscriptHashInput {
8
8
  content: FramedContentCommit;
9
9
  signature: Uint8Array;
10
10
  }
11
+ export declare const confirmedTranscriptHashInputEncoder: BufferEncoder<ConfirmedTranscriptHashInput>;
11
12
  export declare const encodeConfirmedTranscriptHashInput: Encoder<ConfirmedTranscriptHashInput>;
12
13
  export declare const decodeConfirmedTranscriptHashInput: Decoder<ConfirmedTranscriptHashInput>;
13
14
  export declare function createConfirmedHash(interimTranscriptHash: Uint8Array, input: ConfirmedTranscriptHashInput, hash: Hash): Promise<Uint8Array>;
@@ -1,10 +1,10 @@
1
1
  import { mapDecodersOption } from "./codec/tlsDecoder.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
3
- import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js";
4
- import { decodeFramedContent, encodeFramedContent } from "./framedContent.js";
5
- import { concatUint8Arrays } from "./util/byteArray.js";
6
- import { decodeWireformat, encodeWireformat } from "./wireformat.js";
7
- export const encodeConfirmedTranscriptHashInput = contramapEncoders([encodeWireformat, encodeFramedContent, encodeVarLenData], (input) => [input.wireformat, input.content, input.signature]);
2
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
3
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
4
+ import { decodeFramedContent, framedContentEncoder } from "./framedContent.js";
5
+ import { decodeWireformat, wireformatEncoder } from "./wireformat.js";
6
+ export const confirmedTranscriptHashInputEncoder = contramapBufferEncoders([wireformatEncoder, framedContentEncoder, varLenDataEncoder], (input) => [input.wireformat, input.content, input.signature]);
7
+ export const encodeConfirmedTranscriptHashInput = encode(confirmedTranscriptHashInputEncoder);
8
8
  export const decodeConfirmedTranscriptHashInput = mapDecodersOption([decodeWireformat, decodeFramedContent, decodeVarLenData], (wireformat, content, signature) => {
9
9
  if (content.contentType === "commit")
10
10
  return {
@@ -16,9 +16,19 @@ export const decodeConfirmedTranscriptHashInput = mapDecodersOption([decodeWiref
16
16
  return undefined;
17
17
  });
18
18
  export function createConfirmedHash(interimTranscriptHash, input, hash) {
19
- return hash.digest(concatUint8Arrays(interimTranscriptHash, encodeConfirmedTranscriptHashInput(input)));
19
+ const [len, write] = confirmedTranscriptHashInputEncoder(input);
20
+ const buf = new ArrayBuffer(interimTranscriptHash.byteLength + len);
21
+ const arr = new Uint8Array(buf);
22
+ arr.set(interimTranscriptHash, 0);
23
+ write(interimTranscriptHash.byteLength, buf);
24
+ return hash.digest(arr);
20
25
  }
21
26
  export function createInterimHash(confirmedHash, confirmationTag, hash) {
22
- return hash.digest(concatUint8Arrays(confirmedHash, encodeVarLenData(confirmationTag)));
27
+ const [len, write] = varLenDataEncoder(confirmationTag);
28
+ const buf = new ArrayBuffer(confirmedHash.byteLength + len);
29
+ const arr = new Uint8Array(buf);
30
+ arr.set(confirmedHash, 0);
31
+ write(confirmedHash.byteLength, buf);
32
+ return hash.digest(arr);
23
33
  }
24
34
  //# sourceMappingURL=transcriptHash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcriptHash.js","sourceRoot":"","sources":["../src/transcriptHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAW,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE9E,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAuB,MAAM,oBAAoB,CAAA;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAkB,MAAM,iBAAiB,CAAA;AAQpF,MAAM,CAAC,MAAM,kCAAkC,GAA0C,iBAAiB,CACxG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EACzD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAU,CACvE,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAA0C,iBAAiB,CACxG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EACzD,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IACjC,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ;QAClC,OAAO;YACL,UAAU;YACV,OAAO;YACP,SAAS;SACV,CAAA;;QACE,OAAO,SAAS,CAAA;AACvB,CAAC,CACF,CAAA;AAED,MAAM,UAAU,mBAAmB,CACjC,qBAAiC,EACjC,KAAmC,EACnC,IAAU;IAEV,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,kCAAkC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACzG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EACzB,eAA2B,EAC3B,IAAU;IAEV,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;AACzF,CAAC"}
1
+ {"version":3,"file":"transcriptHash.js","sourceRoot":"","sources":["../src/transcriptHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAiB,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAE,mBAAmB,EAAuB,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAA;AAQrF,MAAM,CAAC,MAAM,mCAAmC,GAAgD,uBAAuB,CACrH,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAC5D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAU,CACvE,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAA0C,MAAM,CAC7F,mCAAmC,CACpC,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAA0C,iBAAiB,CACxG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EACzD,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IACjC,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ;QAClC,OAAO;YACL,UAAU;YACV,OAAO;YACP,SAAS;SACV,CAAA;;QACE,OAAO,SAAS,CAAA;AACvB,CAAC,CACF,CAAA;AAED,MAAM,UAAU,mBAAmB,CACjC,qBAAiC,EACjC,KAAmC,EACnC,IAAU;IAEV,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,qBAAqB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAA;IACnE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;IACjC,KAAK,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAE5C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EACzB,eAA2B,EAC3B,IAAU;IAEV,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAA;IACvD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;IACzB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Decoder } from "./codec/tlsDecoder.js";
2
- import { Encoder } from "./codec/tlsEncoder.js";
2
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
3
3
  import { Hash } from "./crypto/hash.js";
4
4
  import { LeafNode } from "./leafNode.js";
5
5
  import { ParentNode } from "./parentNode.js";
@@ -17,10 +17,13 @@ type ParentNodeHashInput = {
17
17
  leftHash: Uint8Array;
18
18
  rightHash: Uint8Array;
19
19
  };
20
+ export declare const leafNodeHashInputEncoder: BufferEncoder<LeafNodeHashInput>;
20
21
  export declare const encodeLeafNodeHashInput: Encoder<LeafNodeHashInput>;
21
22
  export declare const decodeLeafNodeHashInput: Decoder<LeafNodeHashInput>;
23
+ export declare const parentNodeHashInputEncoder: BufferEncoder<ParentNodeHashInput>;
22
24
  export declare const encodeParentNodeHashInput: Encoder<ParentNodeHashInput>;
23
25
  export declare const decodeParentNodeHashInput: Decoder<ParentNodeHashInput>;
26
+ export declare const treeHashInputEncoder: BufferEncoder<TreeHashInput>;
24
27
  export declare const encodeTreeHashInput: Encoder<TreeHashInput>;
25
28
  export declare const decodeTreeHashInput: Decoder<TreeHashInput>;
26
29
  export declare function treeHashRoot(tree: RatchetTree, h: Hash): Promise<Uint8Array>;