ts-mls 1.4.0 → 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 (159) 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/index.d.ts +1 -1
  83. package/dist/index.js +1 -1
  84. package/dist/index.js.map +1 -1
  85. package/dist/keyPackage.d.ts +12 -3
  86. package/dist/keyPackage.js +23 -18
  87. package/dist/keyPackage.js.map +1 -1
  88. package/dist/leafNode.d.ts +11 -1
  89. package/dist/leafNode.js +43 -27
  90. package/dist/leafNode.js.map +1 -1
  91. package/dist/leafNodeSource.d.ts +2 -1
  92. package/dist/leafNodeSource.js +4 -3
  93. package/dist/leafNodeSource.js.map +1 -1
  94. package/dist/lifetime.d.ts +2 -1
  95. package/dist/lifetime.js +4 -3
  96. package/dist/lifetime.js.map +1 -1
  97. package/dist/message.d.ts +9 -2
  98. package/dist/message.js +27 -20
  99. package/dist/message.js.map +1 -1
  100. package/dist/messageProtection.js +4 -3
  101. package/dist/messageProtection.js.map +1 -1
  102. package/dist/nodeType.d.ts +2 -1
  103. package/dist/nodeType.js +4 -3
  104. package/dist/nodeType.js.map +1 -1
  105. package/dist/parentHash.d.ts +2 -1
  106. package/dist/parentHash.js +5 -4
  107. package/dist/parentHash.js.map +1 -1
  108. package/dist/parentNode.d.ts +2 -1
  109. package/dist/parentNode.js +5 -4
  110. package/dist/parentNode.js.map +1 -1
  111. package/dist/presharedkey.d.ts +6 -1
  112. package/dist/presharedkey.js +16 -11
  113. package/dist/presharedkey.js.map +1 -1
  114. package/dist/privateMessage.d.ts +4 -1
  115. package/dist/privateMessage.js +29 -20
  116. package/dist/privateMessage.js.map +1 -1
  117. package/dist/processMessages.js +3 -2
  118. package/dist/processMessages.js.map +1 -1
  119. package/dist/proposal.d.ts +17 -1
  120. package/dist/proposal.js +50 -34
  121. package/dist/proposal.js.map +1 -1
  122. package/dist/proposalOrRefType.d.ts +5 -1
  123. package/dist/proposalOrRefType.js +14 -10
  124. package/dist/proposalOrRefType.js.map +1 -1
  125. package/dist/protocolVersion.d.ts +2 -1
  126. package/dist/protocolVersion.js +4 -3
  127. package/dist/protocolVersion.js.map +1 -1
  128. package/dist/publicMessage.d.ts +3 -1
  129. package/dist/publicMessage.js +9 -7
  130. package/dist/publicMessage.js.map +1 -1
  131. package/dist/ratchetTree.d.ts +3 -1
  132. package/dist/ratchetTree.js +13 -11
  133. package/dist/ratchetTree.js.map +1 -1
  134. package/dist/requiredCapabilities.d.ts +2 -1
  135. package/dist/requiredCapabilities.js +6 -5
  136. package/dist/requiredCapabilities.js.map +1 -1
  137. package/dist/sender.d.ts +6 -1
  138. package/dist/sender.js +24 -13
  139. package/dist/sender.js.map +1 -1
  140. package/dist/transcriptHash.d.ts +2 -1
  141. package/dist/transcriptHash.js +18 -8
  142. package/dist/transcriptHash.js.map +1 -1
  143. package/dist/treeHash.d.ts +4 -1
  144. package/dist/treeHash.js +17 -14
  145. package/dist/treeHash.js.map +1 -1
  146. package/dist/tsconfig.build.tsbuildinfo +1 -1
  147. package/dist/updatePath.d.ts +3 -1
  148. package/dist/updatePath.js +10 -8
  149. package/dist/updatePath.js.map +1 -1
  150. package/dist/util/byteArray.d.ts +2 -1
  151. package/dist/util/byteArray.js +21 -2
  152. package/dist/util/byteArray.js.map +1 -1
  153. package/dist/welcome.d.ts +3 -1
  154. package/dist/welcome.js +12 -10
  155. package/dist/welcome.js.map +1 -1
  156. package/dist/wireformat.d.ts +2 -1
  157. package/dist/wireformat.js +4 -3
  158. package/dist/wireformat.js.map +1 -1
  159. package/package.json +3 -3
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>;
package/dist/treeHash.js CHANGED
@@ -1,34 +1,37 @@
1
- import { encodeUint32, decodeUint32 } from "./codec/number.js";
2
- import { encodeOptional, decodeOptional } from "./codec/optional.js";
1
+ import { uint32Encoder, decodeUint32 } from "./codec/number.js";
2
+ import { optionalEncoder, decodeOptional } from "./codec/optional.js";
3
3
  import { mapDecoders, flatMapDecoder } from "./codec/tlsDecoder.js";
4
- import { contramapEncoders } from "./codec/tlsEncoder.js";
5
- import { encodeVarLenData, decodeVarLenData } from "./codec/variableLength.js";
6
- import { encodeLeafNode, decodeLeafNode } from "./leafNode.js";
4
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
5
+ import { varLenDataEncoder, decodeVarLenData } from "./codec/variableLength.js";
6
+ import { leafNodeEncoder, decodeLeafNode } from "./leafNode.js";
7
7
  import { InternalError } from "./mlsError.js";
8
- import { encodeNodeType, decodeNodeType } from "./nodeType.js";
9
- import { encodeParentNode, decodeParentNode } from "./parentNode.js";
8
+ import { nodeTypeEncoder, decodeNodeType } from "./nodeType.js";
9
+ import { parentNodeEncoder, decodeParentNode } from "./parentNode.js";
10
10
  import { rootFromNodeWidth, isLeaf, nodeToLeafIndex, left, right } from "./treemath.js";
11
- export const encodeLeafNodeHashInput = contramapEncoders([encodeNodeType, encodeUint32, encodeOptional(encodeLeafNode)], (input) => [input.nodeType, input.leafIndex, input.leafNode]);
11
+ export const leafNodeHashInputEncoder = contramapBufferEncoders([nodeTypeEncoder, uint32Encoder, optionalEncoder(leafNodeEncoder)], (input) => [input.nodeType, input.leafIndex, input.leafNode]);
12
+ export const encodeLeafNodeHashInput = encode(leafNodeHashInputEncoder);
12
13
  export const decodeLeafNodeHashInput = mapDecoders([decodeUint32, decodeOptional(decodeLeafNode)], (leafIndex, leafNode) => ({
13
14
  nodeType: "leaf",
14
15
  leafIndex,
15
16
  leafNode,
16
17
  }));
17
- export const encodeParentNodeHashInput = contramapEncoders([encodeNodeType, encodeOptional(encodeParentNode), encodeVarLenData, encodeVarLenData], (input) => [input.nodeType, input.parentNode, input.leftHash, input.rightHash]);
18
+ export const parentNodeHashInputEncoder = contramapBufferEncoders([nodeTypeEncoder, optionalEncoder(parentNodeEncoder), varLenDataEncoder, varLenDataEncoder], (input) => [input.nodeType, input.parentNode, input.leftHash, input.rightHash]);
19
+ export const encodeParentNodeHashInput = encode(parentNodeHashInputEncoder);
18
20
  export const decodeParentNodeHashInput = mapDecoders([decodeOptional(decodeParentNode), decodeVarLenData, decodeVarLenData], (parentNode, leftHash, rightHash) => ({
19
21
  nodeType: "parent",
20
22
  parentNode,
21
23
  leftHash,
22
24
  rightHash,
23
25
  }));
24
- export const encodeTreeHashInput = (input) => {
26
+ export const treeHashInputEncoder = (input) => {
25
27
  switch (input.nodeType) {
26
28
  case "leaf":
27
- return encodeLeafNodeHashInput(input);
29
+ return leafNodeHashInputEncoder(input);
28
30
  case "parent":
29
- return encodeParentNodeHashInput(input);
31
+ return parentNodeHashInputEncoder(input);
30
32
  }
31
33
  };
34
+ export const encodeTreeHashInput = encode(treeHashInputEncoder);
32
35
  export const decodeTreeHashInput = flatMapDecoder(decodeNodeType, (nodeType) => {
33
36
  switch (nodeType) {
34
37
  case "leaf":
@@ -45,7 +48,7 @@ export async function treeHash(tree, subtreeIndex, h) {
45
48
  const leafNode = tree[subtreeIndex];
46
49
  if (leafNode?.nodeType === "parent")
47
50
  throw new InternalError("Somehow found parent node in leaf position");
48
- const input = encodeLeafNodeHashInput({
51
+ const input = encode(leafNodeHashInputEncoder)({
49
52
  nodeType: "leaf",
50
53
  leafIndex: nodeToLeafIndex(subtreeIndex),
51
54
  leafNode: leafNode?.leaf,
@@ -64,7 +67,7 @@ export async function treeHash(tree, subtreeIndex, h) {
64
67
  leftHash: leftHash,
65
68
  rightHash: rightHash,
66
69
  };
67
- return await h.digest(encodeParentNodeHashInput(input));
70
+ return await h.digest(encode(parentNodeHashInputEncoder)(input));
68
71
  }
69
72
  }
70
73
  //# sourceMappingURL=treeHash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"treeHash.js","sourceRoot":"","sources":["../src/treeHash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"treeHash.js","sourceRoot":"","sources":["../src/treeHash.ts"],"names":[],"mappings":"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"}