ts-mls 1.4.1 → 1.4.3

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 (160) hide show
  1. package/README.md +1 -1
  2. package/dist/authenticatedContent.d.ts +3 -1
  3. package/dist/authenticatedContent.js +10 -8
  4. package/dist/authenticatedContent.js.map +1 -1
  5. package/dist/capabilities.d.ts +2 -1
  6. package/dist/capabilities.js +13 -12
  7. package/dist/capabilities.js.map +1 -1
  8. package/dist/clientState.d.ts +4 -3
  9. package/dist/clientState.js +87 -59
  10. package/dist/clientState.js.map +1 -1
  11. package/dist/codec/json.d.ts +4 -0
  12. package/dist/codec/json.js +190 -0
  13. package/dist/codec/json.js.map +1 -0
  14. package/dist/codec/number.d.ts +5 -1
  15. package/dist/codec/number.js +33 -24
  16. package/dist/codec/number.js.map +1 -1
  17. package/dist/codec/optional.d.ts +2 -2
  18. package/dist/codec/optional.js +24 -7
  19. package/dist/codec/optional.js.map +1 -1
  20. package/dist/codec/tlsEncoder.d.ts +11 -8
  21. package/dist/codec/tlsEncoder.js +39 -21
  22. package/dist/codec/tlsEncoder.js.map +1 -1
  23. package/dist/codec/variableLength.d.ts +4 -4
  24. package/dist/codec/variableLength.js +58 -28
  25. package/dist/codec/variableLength.js.map +1 -1
  26. package/dist/commit.d.ts +2 -1
  27. package/dist/commit.js +7 -6
  28. package/dist/commit.js.map +1 -1
  29. package/dist/contentType.d.ts +2 -1
  30. package/dist/contentType.js +4 -3
  31. package/dist/contentType.js.map +1 -1
  32. package/dist/createCommit.js +6 -5
  33. package/dist/createCommit.js.map +1 -1
  34. package/dist/credential.d.ts +5 -1
  35. package/dist/credential.js +14 -10
  36. package/dist/credential.js.map +1 -1
  37. package/dist/credentialType.d.ts +2 -1
  38. package/dist/credentialType.js +4 -3
  39. package/dist/credentialType.js.map +1 -1
  40. package/dist/crypto/ciphersuite.d.ts +2 -1
  41. package/dist/crypto/ciphersuite.js +4 -3
  42. package/dist/crypto/ciphersuite.js.map +1 -1
  43. package/dist/crypto/hash.js +4 -3
  44. package/dist/crypto/hash.js.map +1 -1
  45. package/dist/crypto/hpke.js +10 -4
  46. package/dist/crypto/hpke.js.map +1 -1
  47. package/dist/crypto/implementation/default/makeAead.js +9 -9
  48. package/dist/crypto/implementation/default/makeAead.js.map +1 -1
  49. package/dist/crypto/implementation/default/makeHashImpl.js +5 -5
  50. package/dist/crypto/implementation/default/makeHashImpl.js.map +1 -1
  51. package/dist/crypto/implementation/default/makeKdfImpl.js +3 -3
  52. package/dist/crypto/implementation/default/makeKdfImpl.js.map +1 -1
  53. package/dist/crypto/implementation/hpke.js +11 -11
  54. package/dist/crypto/implementation/hpke.js.map +1 -1
  55. package/dist/crypto/kdf.js +8 -7
  56. package/dist/crypto/kdf.js.map +1 -1
  57. package/dist/crypto/signature.js +10 -4
  58. package/dist/crypto/signature.js.map +1 -1
  59. package/dist/defaultExtensionType.d.ts +2 -1
  60. package/dist/defaultExtensionType.js +4 -3
  61. package/dist/defaultExtensionType.js.map +1 -1
  62. package/dist/defaultProposalType.d.ts +2 -1
  63. package/dist/defaultProposalType.js +4 -3
  64. package/dist/defaultProposalType.js.map +1 -1
  65. package/dist/extension.d.ts +3 -1
  66. package/dist/extension.js +8 -6
  67. package/dist/extension.js.map +1 -1
  68. package/dist/externalSender.d.ts +2 -1
  69. package/dist/externalSender.js +5 -4
  70. package/dist/externalSender.js.map +1 -1
  71. package/dist/framedContent.d.ts +9 -1
  72. package/dist/framedContent.js +35 -27
  73. package/dist/framedContent.js.map +1 -1
  74. package/dist/groupContext.d.ts +2 -1
  75. package/dist/groupContext.js +17 -16
  76. package/dist/groupContext.js.map +1 -1
  77. package/dist/groupInfo.d.ts +3 -1
  78. package/dist/groupInfo.js +11 -9
  79. package/dist/groupInfo.js.map +1 -1
  80. package/dist/groupSecrets.d.ts +2 -1
  81. package/dist/groupSecrets.js +6 -5
  82. package/dist/groupSecrets.js.map +1 -1
  83. package/dist/hpkeCiphertext.d.ts +2 -1
  84. package/dist/hpkeCiphertext.js +4 -3
  85. package/dist/hpkeCiphertext.js.map +1 -1
  86. package/dist/keyPackage.d.ts +6 -4
  87. package/dist/keyPackage.js +21 -19
  88. package/dist/keyPackage.js.map +1 -1
  89. package/dist/leafNode.d.ts +11 -1
  90. package/dist/leafNode.js +43 -27
  91. package/dist/leafNode.js.map +1 -1
  92. package/dist/leafNodeSource.d.ts +2 -1
  93. package/dist/leafNodeSource.js +4 -3
  94. package/dist/leafNodeSource.js.map +1 -1
  95. package/dist/lifetime.d.ts +2 -1
  96. package/dist/lifetime.js +4 -3
  97. package/dist/lifetime.js.map +1 -1
  98. package/dist/message.d.ts +9 -2
  99. package/dist/message.js +27 -20
  100. package/dist/message.js.map +1 -1
  101. package/dist/messageProtection.js +4 -3
  102. package/dist/messageProtection.js.map +1 -1
  103. package/dist/nodeType.d.ts +2 -1
  104. package/dist/nodeType.js +4 -3
  105. package/dist/nodeType.js.map +1 -1
  106. package/dist/parentHash.d.ts +2 -1
  107. package/dist/parentHash.js +5 -4
  108. package/dist/parentHash.js.map +1 -1
  109. package/dist/parentNode.d.ts +2 -1
  110. package/dist/parentNode.js +5 -4
  111. package/dist/parentNode.js.map +1 -1
  112. package/dist/presharedkey.d.ts +6 -1
  113. package/dist/presharedkey.js +16 -11
  114. package/dist/presharedkey.js.map +1 -1
  115. package/dist/privateMessage.d.ts +4 -1
  116. package/dist/privateMessage.js +29 -20
  117. package/dist/privateMessage.js.map +1 -1
  118. package/dist/processMessages.js +3 -2
  119. package/dist/processMessages.js.map +1 -1
  120. package/dist/proposal.d.ts +17 -1
  121. package/dist/proposal.js +50 -34
  122. package/dist/proposal.js.map +1 -1
  123. package/dist/proposalOrRefType.d.ts +5 -1
  124. package/dist/proposalOrRefType.js +14 -10
  125. package/dist/proposalOrRefType.js.map +1 -1
  126. package/dist/protocolVersion.d.ts +2 -1
  127. package/dist/protocolVersion.js +4 -3
  128. package/dist/protocolVersion.js.map +1 -1
  129. package/dist/publicMessage.d.ts +3 -1
  130. package/dist/publicMessage.js +9 -7
  131. package/dist/publicMessage.js.map +1 -1
  132. package/dist/ratchetTree.d.ts +3 -1
  133. package/dist/ratchetTree.js +13 -11
  134. package/dist/ratchetTree.js.map +1 -1
  135. package/dist/requiredCapabilities.d.ts +2 -1
  136. package/dist/requiredCapabilities.js +6 -5
  137. package/dist/requiredCapabilities.js.map +1 -1
  138. package/dist/sender.d.ts +6 -1
  139. package/dist/sender.js +24 -13
  140. package/dist/sender.js.map +1 -1
  141. package/dist/transcriptHash.d.ts +2 -1
  142. package/dist/transcriptHash.js +18 -8
  143. package/dist/transcriptHash.js.map +1 -1
  144. package/dist/treeHash.d.ts +4 -1
  145. package/dist/treeHash.js +17 -14
  146. package/dist/treeHash.js.map +1 -1
  147. package/dist/tsconfig.build.tsbuildinfo +1 -1
  148. package/dist/updatePath.d.ts +3 -1
  149. package/dist/updatePath.js +10 -8
  150. package/dist/updatePath.js.map +1 -1
  151. package/dist/util/byteArray.d.ts +2 -1
  152. package/dist/util/byteArray.js +21 -2
  153. package/dist/util/byteArray.js.map +1 -1
  154. package/dist/welcome.d.ts +3 -1
  155. package/dist/welcome.js +12 -10
  156. package/dist/welcome.js.map +1 -1
  157. package/dist/wireformat.d.ts +2 -1
  158. package/dist/wireformat.js +4 -3
  159. package/dist/wireformat.js.map +1 -1
  160. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"lifetime.js","sourceRoot":"","sources":["../src/lifetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAO5D,MAAM,CAAC,MAAM,cAAc,GAAsB,iBAAiB,CAChE,CAAC,YAAY,EAAE,YAAY,CAAC,EAC5B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAU,CAC7C,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAsB,WAAW,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnH,SAAS;IACT,QAAQ;CACT,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,oBAAoB;CAC/B,CAAA"}
1
+ {"version":3,"file":"lifetime.js","sourceRoot":"","sources":["../src/lifetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAiB,uBAAuB,EAAE,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAO5D,MAAM,CAAC,MAAM,eAAe,GAA4B,uBAAuB,CAC7E,CAAC,aAAa,EAAE,aAAa,CAAC,EAC9B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAU,CAC7C,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAsB,MAAM,CAAC,eAAe,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,cAAc,GAAsB,WAAW,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnH,SAAS;IACT,QAAQ;CACT,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,oBAAoB;CAC/B,CAAA"}
package/dist/message.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 { GroupInfo } from "./groupInfo.js";
4
4
  import { KeyPackage } from "./keyPackage.js";
5
5
  import { PrivateMessage } from "./privateMessage.js";
@@ -31,12 +31,19 @@ export interface MlsPublicMessage {
31
31
  }
32
32
  export type MlsMessageContent = MlsWelcome | MlsPrivateMessage | MlsGroupInfo | MlsKeyPackage | MlsPublicMessage;
33
33
  export type MLSMessage = MlsMessageProtocol & MlsMessageContent;
34
- export declare const encodeMlsMessageContent: Encoder<MlsMessageContent>;
34
+ export declare const mlsPublicMessageEncoder: BufferEncoder<MlsPublicMessage>;
35
35
  export declare const encodeMlsPublicMessage: Encoder<MlsPublicMessage>;
36
+ export declare const mlsWelcomeEncoder: BufferEncoder<MlsWelcome>;
36
37
  export declare const encodeMlsWelcome: Encoder<MlsWelcome>;
38
+ export declare const mlsPrivateMessageEncoder: BufferEncoder<MlsPrivateMessage>;
37
39
  export declare const encodeMlsPrivateMessage: Encoder<MlsPrivateMessage>;
40
+ export declare const mlsGroupInfoEncoder: BufferEncoder<MlsGroupInfo>;
38
41
  export declare const encodeMlsGroupInfo: Encoder<MlsGroupInfo>;
42
+ export declare const mlsKeyPackageEncoder: BufferEncoder<MlsKeyPackage>;
39
43
  export declare const encodeMlsKeyPackage: Encoder<MlsKeyPackage>;
44
+ export declare const mlsMessageContentEncoder: BufferEncoder<MlsMessageContent>;
45
+ export declare const encodeMlsMessageContent: Encoder<MlsMessageContent>;
40
46
  export declare const decodeMlsMessageContent: Decoder<MlsMessageContent>;
47
+ export declare const mlsMessageEncoder: BufferEncoder<MLSMessage>;
41
48
  export declare const encodeMlsMessage: Encoder<MLSMessage>;
42
49
  export declare const decodeMlsMessage: Decoder<MLSMessage>;
package/dist/message.js CHANGED
@@ -1,31 +1,37 @@
1
1
  import { flatMapDecoder, mapDecoder, mapDecoders } from "./codec/tlsDecoder.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
3
- import { decodeGroupInfo, encodeGroupInfo } from "./groupInfo.js";
4
- import { decodeKeyPackage, encodeKeyPackage } from "./keyPackage.js";
5
- import { decodePrivateMessage, encodePrivateMessage } from "./privateMessage.js";
6
- import { decodeProtocolVersion, encodeProtocolVersion } from "./protocolVersion.js";
7
- import { decodePublicMessage, encodePublicMessage } from "./publicMessage.js";
8
- import { decodeWelcome, encodeWelcome } from "./welcome.js";
9
- import { decodeWireformat, encodeWireformat } from "./wireformat.js";
10
- export const encodeMlsMessageContent = (mc) => {
2
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
3
+ import { decodeGroupInfo, groupInfoEncoder } from "./groupInfo.js";
4
+ import { decodeKeyPackage, keyPackageEncoder } from "./keyPackage.js";
5
+ import { decodePrivateMessage, privateMessageEncoder } from "./privateMessage.js";
6
+ import { decodeProtocolVersion, protocolVersionEncoder } from "./protocolVersion.js";
7
+ import { decodePublicMessage, publicMessageEncoder } from "./publicMessage.js";
8
+ import { decodeWelcome, welcomeEncoder } from "./welcome.js";
9
+ import { decodeWireformat, wireformatEncoder } from "./wireformat.js";
10
+ export const mlsPublicMessageEncoder = contramapBufferEncoders([wireformatEncoder, publicMessageEncoder], (msg) => [msg.wireformat, msg.publicMessage]);
11
+ export const encodeMlsPublicMessage = encode(mlsPublicMessageEncoder);
12
+ export const mlsWelcomeEncoder = contramapBufferEncoders([wireformatEncoder, welcomeEncoder], (wm) => [wm.wireformat, wm.welcome]);
13
+ export const encodeMlsWelcome = encode(mlsWelcomeEncoder);
14
+ export const mlsPrivateMessageEncoder = contramapBufferEncoders([wireformatEncoder, privateMessageEncoder], (pm) => [pm.wireformat, pm.privateMessage]);
15
+ export const encodeMlsPrivateMessage = encode(mlsPrivateMessageEncoder);
16
+ export const mlsGroupInfoEncoder = contramapBufferEncoders([wireformatEncoder, groupInfoEncoder], (gi) => [gi.wireformat, gi.groupInfo]);
17
+ export const encodeMlsGroupInfo = encode(mlsGroupInfoEncoder);
18
+ export const mlsKeyPackageEncoder = contramapBufferEncoders([wireformatEncoder, keyPackageEncoder], (kp) => [kp.wireformat, kp.keyPackage]);
19
+ export const encodeMlsKeyPackage = encode(mlsKeyPackageEncoder);
20
+ export const mlsMessageContentEncoder = (mc) => {
11
21
  switch (mc.wireformat) {
12
22
  case "mls_public_message":
13
- return encodeMlsPublicMessage(mc);
23
+ return mlsPublicMessageEncoder(mc);
14
24
  case "mls_welcome":
15
- return encodeMlsWelcome(mc);
25
+ return mlsWelcomeEncoder(mc);
16
26
  case "mls_private_message":
17
- return encodeMlsPrivateMessage(mc);
27
+ return mlsPrivateMessageEncoder(mc);
18
28
  case "mls_group_info":
19
- return encodeMlsGroupInfo(mc);
29
+ return mlsGroupInfoEncoder(mc);
20
30
  case "mls_key_package":
21
- return encodeMlsKeyPackage(mc);
31
+ return mlsKeyPackageEncoder(mc);
22
32
  }
23
33
  };
24
- export const encodeMlsPublicMessage = contramapEncoders([encodeWireformat, encodePublicMessage], (msg) => [msg.wireformat, msg.publicMessage]);
25
- export const encodeMlsWelcome = contramapEncoders([encodeWireformat, encodeWelcome], (wm) => [wm.wireformat, wm.welcome]);
26
- export const encodeMlsPrivateMessage = contramapEncoders([encodeWireformat, encodePrivateMessage], (pm) => [pm.wireformat, pm.privateMessage]);
27
- export const encodeMlsGroupInfo = contramapEncoders([encodeWireformat, encodeGroupInfo], (gi) => [gi.wireformat, gi.groupInfo]);
28
- export const encodeMlsKeyPackage = contramapEncoders([encodeWireformat, encodeKeyPackage], (kp) => [kp.wireformat, kp.keyPackage]);
34
+ export const encodeMlsMessageContent = encode(mlsMessageContentEncoder);
29
35
  export const decodeMlsMessageContent = flatMapDecoder(decodeWireformat, (wireformat) => {
30
36
  switch (wireformat) {
31
37
  case "mls_public_message":
@@ -40,6 +46,7 @@ export const decodeMlsMessageContent = flatMapDecoder(decodeWireformat, (wirefor
40
46
  return mapDecoder(decodeKeyPackage, (keyPackage) => ({ wireformat, keyPackage }));
41
47
  }
42
48
  });
43
- export const encodeMlsMessage = contramapEncoders([encodeProtocolVersion, encodeMlsMessageContent], (w) => [w.version, w]);
49
+ export const mlsMessageEncoder = contramapBufferEncoders([protocolVersionEncoder, mlsMessageContentEncoder], (w) => [w.version, w]);
50
+ export const encodeMlsMessage = encode(mlsMessageEncoder);
44
51
  export const decodeMlsMessage = mapDecoders([decodeProtocolVersion, decodeMlsMessageContent], (version, mc) => ({ ...mc, version }));
45
52
  //# sourceMappingURL=message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { makeProposalRef } from "./authenticatedContent.js";
2
2
  import { signFramedContentApplicationOrProposal, verifyFramedContentSignature, } from "./framedContent.js";
3
- import { decodePrivateMessageContent, decryptSenderData, encodePrivateContentAAD, encodePrivateMessageContent, encryptSenderData, toAuthenticatedContent, } from "./privateMessage.js";
3
+ import { decodePrivateMessageContent, decryptSenderData, encodePrivateMessageContent, encryptSenderData, privateContentAADEncoder, toAuthenticatedContent, } from "./privateMessage.js";
4
4
  import { consumeRatchet, ratchetToGeneration } from "./secretTree.js";
5
5
  import { getSignaturePublicKeyFromLeafIndex } from "./ratchetTree.js";
6
6
  import { leafToNodeIndex, toLeafIndex } from "./treemath.js";
7
7
  import { CryptoVerificationError, CodecError, ValidationError, InternalError } from "./mlsError.js";
8
+ import { encode } from "./codec/tlsEncoder.js";
8
9
  export async function protectApplicationData(signKey, senderDataSecret, applicationData, authenticatedData, groupContext, secretTree, leafIndex, paddingConfig, cs) {
9
10
  const tbs = {
10
11
  protocolVersion: groupContext.version,
@@ -72,7 +73,7 @@ export async function protect(senderDataSecret, authenticatedData, groupContext,
72
73
  contentType: content.contentType,
73
74
  authenticatedData: authenticatedData,
74
75
  };
75
- const ciphertext = await cs.hpke.encryptAead(key, nonce, encodePrivateContentAAD(aad), encodePrivateMessageContent(config)(content));
76
+ const ciphertext = await cs.hpke.encryptAead(key, nonce, encode(privateContentAADEncoder)(aad), encodePrivateMessageContent(config)(content));
76
77
  const senderData = {
77
78
  leafIndex,
78
79
  generation,
@@ -108,7 +109,7 @@ export async function unprotectPrivateMessage(senderDataSecret, msg, secretTree,
108
109
  contentType: msg.contentType,
109
110
  authenticatedData: msg.authenticatedData,
110
111
  };
111
- const decrypted = await cs.hpke.decryptAead(key, nonce, encodePrivateContentAAD(aad), msg.ciphertext);
112
+ const decrypted = await cs.hpke.decryptAead(key, nonce, encode(privateContentAADEncoder)(aad), msg.ciphertext);
112
113
  const pmc = decodePrivateMessageContent(msg.contentType)(decrypted, 0)?.[0];
113
114
  if (pmc === undefined)
114
115
  throw new CodecError("Could not decode PrivateMessageContent");
@@ -1 +1 @@
1
- {"version":3,"file":"messageProtection.js","sourceRoot":"","sources":["../src/messageProtection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageProtection.js","sourceRoot":"","sources":["../src/messageProtection.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
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
  declare const nodeTypes: {
4
4
  readonly leaf: 1;
5
5
  readonly parent: 2;
6
6
  };
7
7
  export type NodeTypeName = keyof typeof nodeTypes;
8
8
  export type NodeTypeValue = (typeof nodeTypes)[NodeTypeName];
9
+ export declare const nodeTypeEncoder: BufferEncoder<NodeTypeName>;
9
10
  export declare const encodeNodeType: Encoder<NodeTypeName>;
10
11
  export declare const decodeNodeType: Decoder<NodeTypeName>;
11
12
  export {};
package/dist/nodeType.js CHANGED
@@ -1,11 +1,12 @@
1
- import { decodeUint8, encodeUint8 } from "./codec/number.js";
1
+ import { decodeUint8, uint8Encoder } 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
  const nodeTypes = {
6
6
  leaf: 1,
7
7
  parent: 2,
8
8
  };
9
- export const encodeNodeType = contramapEncoder(encodeUint8, (t) => nodeTypes[t]);
9
+ export const nodeTypeEncoder = contramapBufferEncoder(uint8Encoder, (t) => nodeTypes[t]);
10
+ export const encodeNodeType = encode(nodeTypeEncoder);
10
11
  export const decodeNodeType = mapDecoderOption(decodeUint8, enumNumberToKey(nodeTypes));
11
12
  //# sourceMappingURL=nodeType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeType.js","sourceRoot":"","sources":["../src/nodeType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5D,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,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;CACD,CAAA;AAKV,MAAM,CAAC,MAAM,cAAc,GAA0B,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAEvG,MAAM,CAAC,MAAM,cAAc,GAA0B,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"nodeType.js","sourceRoot":"","sources":["../src/nodeType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC7D,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,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;CACD,CAAA;AAKV,MAAM,CAAC,MAAM,eAAe,GAAgC,sBAAsB,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAErH,MAAM,CAAC,MAAM,cAAc,GAA0B,MAAM,CAAC,eAAe,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,cAAc,GAA0B,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,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 { Hash } from "./crypto/hash.js";
4
4
  import { RatchetTree } from "./ratchetTree.js";
5
5
  import { NodeIndex } from "./treemath.js";
@@ -8,6 +8,7 @@ export interface ParentHashInput {
8
8
  parentHash: Uint8Array;
9
9
  originalSiblingTreeHash: Uint8Array;
10
10
  }
11
+ export declare const parentHashInputEncoder: BufferEncoder<ParentHashInput>;
11
12
  export declare const encodeParentHashInput: Encoder<ParentHashInput>;
12
13
  export declare const decodeParentHashInput: Decoder<ParentHashInput>;
13
14
  export declare function verifyParentHashes(tree: RatchetTree, h: Hash): Promise<boolean>;
@@ -1,12 +1,13 @@
1
1
  import { mapDecoders } from "./codec/tlsDecoder.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
3
- import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js";
2
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
3
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
4
4
  import { InternalError } from "./mlsError.js";
5
5
  import { findFirstNonBlankAncestor, removeLeaves } from "./ratchetTree.js";
6
6
  import { treeHash } from "./treeHash.js";
7
7
  import { isLeaf, leafToNodeIndex, leafWidth, left, right, root, toLeafIndex, toNodeIndex, } from "./treemath.js";
8
8
  import { constantTimeEqual } from "./util/constantTimeCompare.js";
9
- export const encodeParentHashInput = contramapEncoders([encodeVarLenData, encodeVarLenData, encodeVarLenData], (i) => [i.encryptionKey, i.parentHash, i.originalSiblingTreeHash]);
9
+ export const parentHashInputEncoder = contramapBufferEncoders([varLenDataEncoder, varLenDataEncoder, varLenDataEncoder], (i) => [i.encryptionKey, i.parentHash, i.originalSiblingTreeHash]);
10
+ export const encodeParentHashInput = encode(parentHashInputEncoder);
10
11
  export const decodeParentHashInput = mapDecoders([decodeVarLenData, decodeVarLenData, decodeVarLenData], (encryptionKey, parentHash, originalSiblingTreeHash) => ({
11
12
  encryptionKey,
12
13
  parentHash,
@@ -98,6 +99,6 @@ export async function calculateParentHash(tree, nodeIndex, h) {
98
99
  parentHash: parentNode.parent.parentHash,
99
100
  originalSiblingTreeHash,
100
101
  };
101
- return [await h.digest(encodeParentHashInput(input)), parentNodeIndex];
102
+ return [await h.digest(encode(parentHashInputEncoder)(input)), parentNodeIndex];
102
103
  }
103
104
  //# sourceMappingURL=parentHash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parentHash.js","sourceRoot":"","sources":["../src/parentHash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parentHash.js","sourceRoot":"","sources":["../src/parentHash.ts"],"names":[],"mappings":"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"}
@@ -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 interface ParentNode {
4
4
  hpkePublicKey: Uint8Array;
5
5
  parentHash: Uint8Array;
6
6
  unmergedLeaves: number[];
7
7
  }
8
+ export declare const parentNodeEncoder: BufferEncoder<ParentNode>;
8
9
  export declare const encodeParentNode: Encoder<ParentNode>;
9
10
  export declare const decodeParentNode: Decoder<ParentNode>;
@@ -1,8 +1,9 @@
1
- import { encodeUint32, decodeUint32 } from "./codec/number.js";
1
+ import { uint32Encoder, decodeUint32 } from "./codec/number.js";
2
2
  import { mapDecoders } from "./codec/tlsDecoder.js";
3
- import { contramapEncoders } from "./codec/tlsEncoder.js";
4
- import { encodeVarLenData, encodeVarLenType, decodeVarLenData, decodeVarLenType } from "./codec/variableLength.js";
5
- export const encodeParentNode = contramapEncoders([encodeVarLenData, encodeVarLenData, encodeVarLenType(encodeUint32)], (node) => [node.hpkePublicKey, node.parentHash, node.unmergedLeaves]);
3
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { varLenDataEncoder, varLenTypeEncoder, decodeVarLenData, decodeVarLenType } from "./codec/variableLength.js";
5
+ export const parentNodeEncoder = contramapBufferEncoders([varLenDataEncoder, varLenDataEncoder, varLenTypeEncoder(uint32Encoder)], (node) => [node.hpkePublicKey, node.parentHash, node.unmergedLeaves]);
6
+ export const encodeParentNode = encode(parentNodeEncoder);
6
7
  export const decodeParentNode = mapDecoders([decodeVarLenData, decodeVarLenData, decodeVarLenType(decodeUint32)], (hpkePublicKey, parentHash, unmergedLeaves) => ({
7
8
  hpkePublicKey,
8
9
  parentHash,
@@ -1 +1 @@
1
- {"version":3,"file":"parentNode.js","sourceRoot":"","sources":["../src/parentNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAQlH,MAAM,CAAC,MAAM,gBAAgB,GAAwB,iBAAiB,CACpE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,EACpE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAU,CAC9E,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAwB,WAAW,CAC9D,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,EACpE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAC9C,aAAa;IACb,UAAU;IACV,cAAc;CACf,CAAC,CACH,CAAA"}
1
+ {"version":3,"file":"parentNode.js","sourceRoot":"","sources":["../src/parentNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAiB,uBAAuB,EAAE,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAQpH,MAAM,CAAC,MAAM,iBAAiB,GAA8B,uBAAuB,CACjF,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,EACxE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAU,CAC9E,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAwB,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAwB,WAAW,CAC9D,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,EACpE,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAC9C,aAAa;IACb,UAAU;IACV,cAAc;CACf,CAAC,CACH,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 { CiphersuiteImpl } from "./crypto/ciphersuite.js";
4
4
  export declare const pskTypes: {
5
5
  readonly external: 1;
@@ -7,6 +7,7 @@ export declare const pskTypes: {
7
7
  };
8
8
  export type PSKTypeName = keyof typeof pskTypes;
9
9
  export type PSKType = (typeof pskTypes)[PSKTypeName];
10
+ export declare const pskTypeEncoder: BufferEncoder<PSKTypeName>;
10
11
  export declare const encodePskType: Encoder<PSKTypeName>;
11
12
  export declare const decodePskType: Decoder<PSKTypeName>;
12
13
  declare const resumptionPSKUsages: {
@@ -16,6 +17,7 @@ declare const resumptionPSKUsages: {
16
17
  };
17
18
  export type ResumptionPSKUsageName = keyof typeof resumptionPSKUsages;
18
19
  export type ResumptionPSKUsage = (typeof resumptionPSKUsages)[ResumptionPSKUsageName];
20
+ export declare const resumptionPSKUsageEncoder: BufferEncoder<ResumptionPSKUsageName>;
19
21
  export declare const encodeResumptionPSKUsage: Encoder<ResumptionPSKUsageName>;
20
22
  export declare const decodeResumptionPSKUsage: Decoder<ResumptionPSKUsageName>;
21
23
  export interface PSKInfoExternal {
@@ -29,12 +31,14 @@ export interface PSKInfoResumption {
29
31
  pskEpoch: bigint;
30
32
  }
31
33
  export type PSKInfo = PSKInfoExternal | PSKInfoResumption;
34
+ export declare const pskInfoEncoder: BufferEncoder<PSKInfo>;
32
35
  export declare const encodePskInfo: Encoder<PSKInfo>;
33
36
  export declare const decodePskInfo: Decoder<PSKInfo>;
34
37
  type PSKNonce = {
35
38
  pskNonce: Uint8Array;
36
39
  };
37
40
  export type PreSharedKeyID = PSKInfo & PSKNonce;
41
+ export declare const pskIdEncoder: BufferEncoder<PreSharedKeyID>;
38
42
  export declare const encodePskId: Encoder<PreSharedKeyID>;
39
43
  export declare const decodePskId: Decoder<PreSharedKeyID>;
40
44
  type PSKLabel = {
@@ -42,6 +46,7 @@ type PSKLabel = {
42
46
  index: number;
43
47
  count: number;
44
48
  };
49
+ export declare const pskLabelEncoder: BufferEncoder<PSKLabel>;
45
50
  export declare const encodePskLabel: Encoder<PSKLabel>;
46
51
  export declare const decodePskLabel: Decoder<PSKLabel>;
47
52
  export type PreSharedKeyIdExternal = PSKInfoExternal & PSKNonce;
@@ -1,28 +1,30 @@
1
- import { decodeUint16, decodeUint64, decodeUint8, encodeUint16, encodeUint64, encodeUint8 } from "./codec/number.js";
1
+ import { decodeUint16, decodeUint64, decodeUint8, uint16Encoder, 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";
3
+ import { contramapBufferEncoder, contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
5
5
  import { expandWithLabel } from "./crypto/kdf.js";
6
6
  import { enumNumberToKey } from "./util/enumHelpers.js";
7
7
  export const pskTypes = {
8
8
  external: 1,
9
9
  resumption: 2,
10
10
  };
11
- export const encodePskType = contramapEncoder(encodeUint8, (t) => pskTypes[t]);
11
+ export const pskTypeEncoder = contramapBufferEncoder(uint8Encoder, (t) => pskTypes[t]);
12
+ export const encodePskType = encode(pskTypeEncoder);
12
13
  export const decodePskType = mapDecoderOption(decodeUint8, enumNumberToKey(pskTypes));
13
14
  const resumptionPSKUsages = {
14
15
  application: 1,
15
16
  reinit: 2,
16
17
  branch: 3,
17
18
  };
18
- export const encodeResumptionPSKUsage = contramapEncoder(encodeUint8, (u) => resumptionPSKUsages[u]);
19
+ export const resumptionPSKUsageEncoder = contramapBufferEncoder(uint8Encoder, (u) => resumptionPSKUsages[u]);
20
+ export const encodeResumptionPSKUsage = encode(resumptionPSKUsageEncoder);
19
21
  export const decodeResumptionPSKUsage = mapDecoderOption(decodeUint8, enumNumberToKey(resumptionPSKUsages));
20
- const encodePskInfoExternal = contramapEncoders([encodePskType, encodeVarLenData], (i) => [i.psktype, i.pskId]);
21
- const encodePskInfoResumption = contramapEncoders([encodePskType, encodeResumptionPSKUsage, encodeVarLenData, encodeUint64], (info) => [info.psktype, info.usage, info.pskGroupId, info.pskEpoch]);
22
+ const encodePskInfoExternal = contramapBufferEncoders([pskTypeEncoder, varLenDataEncoder], (i) => [i.psktype, i.pskId]);
23
+ const encodePskInfoResumption = contramapBufferEncoders([pskTypeEncoder, resumptionPSKUsageEncoder, varLenDataEncoder, uint64Encoder], (info) => [info.psktype, info.usage, info.pskGroupId, info.pskEpoch]);
22
24
  const decodePskInfoResumption = mapDecoders([decodeResumptionPSKUsage, decodeVarLenData, decodeUint64], (usage, pskGroupId, pskEpoch) => {
23
25
  return { usage, pskGroupId, pskEpoch };
24
26
  });
25
- export const encodePskInfo = (info) => {
27
+ export const pskInfoEncoder = (info) => {
26
28
  switch (info.psktype) {
27
29
  case "external":
28
30
  return encodePskInfoExternal(info);
@@ -30,6 +32,7 @@ export const encodePskInfo = (info) => {
30
32
  return encodePskInfoResumption(info);
31
33
  }
32
34
  };
35
+ export const encodePskInfo = encode(pskInfoEncoder);
33
36
  export const decodePskInfo = flatMapDecoder(decodePskType, (psktype) => {
34
37
  switch (psktype) {
35
38
  case "external":
@@ -44,9 +47,11 @@ export const decodePskInfo = flatMapDecoder(decodePskType, (psktype) => {
44
47
  }));
45
48
  }
46
49
  });
47
- export const encodePskId = contramapEncoders([encodePskInfo, encodeVarLenData], (pskid) => [pskid, pskid.pskNonce]);
50
+ export const pskIdEncoder = contramapBufferEncoders([pskInfoEncoder, varLenDataEncoder], (pskid) => [pskid, pskid.pskNonce]);
51
+ export const encodePskId = encode(pskIdEncoder);
48
52
  export const decodePskId = mapDecoders([decodePskInfo, decodeVarLenData], (info, pskNonce) => ({ ...info, pskNonce }));
49
- export const encodePskLabel = contramapEncoders([encodePskId, encodeUint16, encodeUint16], (label) => [label.id, label.index, label.count]);
53
+ export const pskLabelEncoder = contramapBufferEncoders([pskIdEncoder, uint16Encoder, uint16Encoder], (label) => [label.id, label.index, label.count]);
54
+ export const encodePskLabel = encode(pskLabelEncoder);
50
55
  export const decodePskLabel = mapDecoders([decodePskId, decodeUint16, decodeUint16], (id, index, count) => ({ id, index, count }));
51
56
  export async function computePskSecret(psks, impl) {
52
57
  const zeroes = new Uint8Array(impl.kdf.size);
@@ -54,6 +59,6 @@ export async function computePskSecret(psks, impl) {
54
59
  }
55
60
  export async function updatePskSecret(secret, pskId, psk, index, count, impl) {
56
61
  const zeroes = new Uint8Array(impl.kdf.size);
57
- return impl.kdf.extract(await expandWithLabel(await impl.kdf.extract(zeroes, psk), "derived psk", encodePskLabel({ id: pskId, index, count }), impl.kdf.size, impl.kdf), secret);
62
+ return impl.kdf.extract(await expandWithLabel(await impl.kdf.extract(zeroes, psk), "derived psk", encode(pskLabelEncoder)({ id: pskId, index, count }), impl.kdf.size, impl.kdf), secret);
58
63
  }
59
64
  //# sourceMappingURL=presharedkey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"presharedkey.js","sourceRoot":"","sources":["../src/presharedkey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presharedkey.js","sourceRoot":"","sources":["../src/presharedkey.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { AuthenticatedContent } from "./authenticatedContent.js";
2
2
  import { Decoder } from "./codec/tlsDecoder.js";
3
- import { Encoder } from "./codec/tlsEncoder.js";
3
+ import { BufferEncoder, Encoder } from "./codec/tlsEncoder.js";
4
4
  import { ContentTypeName } from "./contentType.js";
5
5
  import { CiphersuiteImpl } from "./crypto/ciphersuite.js";
6
6
  import { FramedContentApplicationData, FramedContentAuthDataApplicationOrProposal, FramedContentAuthDataCommit, FramedContentCommitData, FramedContentProposalData } from "./framedContent.js";
@@ -14,6 +14,7 @@ export interface PrivateMessage {
14
14
  encryptedSenderData: Uint8Array;
15
15
  ciphertext: Uint8Array;
16
16
  }
17
+ export declare const privateMessageEncoder: BufferEncoder<PrivateMessage>;
17
18
  export declare const encodePrivateMessage: Encoder<PrivateMessage>;
18
19
  export declare const decodePrivateMessage: Decoder<PrivateMessage>;
19
20
  export interface PrivateContentAAD {
@@ -22,6 +23,7 @@ export interface PrivateContentAAD {
22
23
  contentType: ContentTypeName;
23
24
  authenticatedData: Uint8Array;
24
25
  }
26
+ export declare const privateContentAADEncoder: BufferEncoder<PrivateContentAAD>;
25
27
  export declare const encodePrivateContentAAD: Encoder<PrivateContentAAD>;
26
28
  export declare const decodePrivateContentAAD: Decoder<PrivateContentAAD>;
27
29
  export type PrivateMessageContent = PrivateMessageContentApplication | PrivateMessageContentProposal | PrivateMessageContentCommit;
@@ -35,6 +37,7 @@ export type PrivateMessageContentCommit = FramedContentCommitData & {
35
37
  auth: FramedContentAuthDataCommit;
36
38
  };
37
39
  export declare function decodePrivateMessageContent(contentType: ContentTypeName): Decoder<PrivateMessageContent>;
40
+ export declare function privateMessageContentEncoder(config: PaddingConfig): BufferEncoder<PrivateMessageContent>;
38
41
  export declare function encodePrivateMessageContent(config: PaddingConfig): Encoder<PrivateMessageContent>;
39
42
  export declare function decryptSenderData(msg: PrivateMessage, senderDataSecret: Uint8Array, cs: CiphersuiteImpl): Promise<SenderData | undefined>;
40
43
  export declare function encryptSenderData(senderDataSecret: Uint8Array, senderData: SenderData, aad: SenderDataAAD, ciphertext: Uint8Array, cs: CiphersuiteImpl): Promise<Uint8Array>;
@@ -1,14 +1,15 @@
1
- import { decodeUint64, encodeUint64 } from "./codec/number.js";
1
+ import { decodeUint64, uint64Encoder } from "./codec/number.js";
2
2
  import { mapDecoders } from "./codec/tlsDecoder.js";
3
- import { contramapEncoders } from "./codec/tlsEncoder.js";
4
- import { decodeVarLenData, encodeVarLenData } from "./codec/variableLength.js";
5
- import { decodeCommit, encodeCommit } from "./commit.js";
6
- import { decodeContentType, encodeContentType } from "./contentType.js";
7
- import { decodeFramedContentAuthDataCommit, encodeFramedContentAuthData, } from "./framedContent.js";
3
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
5
+ import { decodeCommit, commitEncoder } from "./commit.js";
6
+ import { contentTypeEncoder, decodeContentType } from "./contentType.js";
7
+ import { decodeFramedContentAuthDataCommit, framedContentAuthDataEncoder, } from "./framedContent.js";
8
8
  import { byteLengthToPad } from "./paddingConfig.js";
9
- import { decodeProposal, encodeProposal } from "./proposal.js";
10
- import { decodeSenderData, encodeSenderData, encodeSenderDataAAD, expandSenderDataKey, expandSenderDataNonce, } from "./sender.js";
11
- export const encodePrivateMessage = contramapEncoders([encodeVarLenData, encodeUint64, encodeContentType, encodeVarLenData, encodeVarLenData, encodeVarLenData], (msg) => [msg.groupId, msg.epoch, msg.contentType, msg.authenticatedData, msg.encryptedSenderData, msg.ciphertext]);
9
+ import { decodeProposal, proposalEncoder } from "./proposal.js";
10
+ import { decodeSenderData, senderDataEncoder, senderDataAADEncoder, expandSenderDataKey, expandSenderDataNonce, } from "./sender.js";
11
+ export const privateMessageEncoder = contramapBufferEncoders([varLenDataEncoder, uint64Encoder, contentTypeEncoder, varLenDataEncoder, varLenDataEncoder, varLenDataEncoder], (msg) => [msg.groupId, msg.epoch, msg.contentType, msg.authenticatedData, msg.encryptedSenderData, msg.ciphertext]);
12
+ export const encodePrivateMessage = encode(privateMessageEncoder);
12
13
  export const decodePrivateMessage = mapDecoders([decodeVarLenData, decodeUint64, decodeContentType, decodeVarLenData, decodeVarLenData, decodeVarLenData], (groupId, epoch, contentType, authenticatedData, encryptedSenderData, ciphertext) => ({
13
14
  groupId,
14
15
  epoch,
@@ -17,7 +18,8 @@ export const decodePrivateMessage = mapDecoders([decodeVarLenData, decodeUint64,
17
18
  encryptedSenderData,
18
19
  ciphertext,
19
20
  }));
20
- export const encodePrivateContentAAD = contramapEncoders([encodeVarLenData, encodeUint64, encodeContentType, encodeVarLenData], (aad) => [aad.groupId, aad.epoch, aad.contentType, aad.authenticatedData]);
21
+ export const privateContentAADEncoder = contramapBufferEncoders([varLenDataEncoder, uint64Encoder, contentTypeEncoder, varLenDataEncoder], (aad) => [aad.groupId, aad.epoch, aad.contentType, aad.authenticatedData]);
22
+ export const encodePrivateContentAAD = encode(privateContentAADEncoder);
21
23
  export const decodePrivateContentAAD = mapDecoders([decodeVarLenData, decodeUint64, decodeContentType, decodeVarLenData], (groupId, epoch, contentType, authenticatedData) => ({
22
24
  groupId,
23
25
  epoch,
@@ -46,18 +48,21 @@ export function decodePrivateMessageContent(contentType) {
46
48
  })));
47
49
  }
48
50
  }
49
- export function encodePrivateMessageContent(config) {
51
+ export function privateMessageContentEncoder(config) {
50
52
  return (msg) => {
51
53
  switch (msg.contentType) {
52
54
  case "application":
53
- return encoderWithPadding(contramapEncoders([encodeVarLenData, encodeFramedContentAuthData], (m) => [m.applicationData, m.auth]), config)(msg);
55
+ return encoderWithPadding(contramapBufferEncoders([varLenDataEncoder, framedContentAuthDataEncoder], (m) => [m.applicationData, m.auth]), config)(msg);
54
56
  case "proposal":
55
- return encoderWithPadding(contramapEncoders([encodeProposal, encodeFramedContentAuthData], (m) => [m.proposal, m.auth]), config)(msg);
57
+ return encoderWithPadding(contramapBufferEncoders([proposalEncoder, framedContentAuthDataEncoder], (m) => [m.proposal, m.auth]), config)(msg);
56
58
  case "commit":
57
- return encoderWithPadding(contramapEncoders([encodeCommit, encodeFramedContentAuthData], (m) => [m.commit, m.auth]), config)(msg);
59
+ return encoderWithPadding(contramapBufferEncoders([commitEncoder, framedContentAuthDataEncoder], (m) => [m.commit, m.auth]), config)(msg);
58
60
  }
59
61
  };
60
62
  }
63
+ export function encodePrivateMessageContent(config) {
64
+ return encode(privateMessageContentEncoder(config));
65
+ }
61
66
  export async function decryptSenderData(msg, senderDataSecret, cs) {
62
67
  const key = await expandSenderDataKey(cs, senderDataSecret, msg.ciphertext);
63
68
  const nonce = await expandSenderDataNonce(cs, senderDataSecret, msg.ciphertext);
@@ -66,13 +71,13 @@ export async function decryptSenderData(msg, senderDataSecret, cs) {
66
71
  epoch: msg.epoch,
67
72
  contentType: msg.contentType,
68
73
  };
69
- const decrypted = await cs.hpke.decryptAead(key, nonce, encodeSenderDataAAD(aad), msg.encryptedSenderData);
74
+ const decrypted = await cs.hpke.decryptAead(key, nonce, encode(senderDataAADEncoder)(aad), msg.encryptedSenderData);
70
75
  return decodeSenderData(decrypted, 0)?.[0];
71
76
  }
72
77
  export async function encryptSenderData(senderDataSecret, senderData, aad, ciphertext, cs) {
73
78
  const key = await expandSenderDataKey(cs, senderDataSecret, ciphertext);
74
79
  const nonce = await expandSenderDataNonce(cs, senderDataSecret, ciphertext);
75
- return await cs.hpke.encryptAead(key, nonce, encodeSenderDataAAD(aad), encodeSenderData(senderData));
80
+ return await cs.hpke.encryptAead(key, nonce, encode(senderDataAADEncoder)(aad), encode(senderDataEncoder)(senderData));
76
81
  }
77
82
  export function toAuthenticatedContent(content, msg, senderLeafIndex) {
78
83
  return {
@@ -92,10 +97,14 @@ export function toAuthenticatedContent(content, msg, senderLeafIndex) {
92
97
  }
93
98
  function encoderWithPadding(encoder, config) {
94
99
  return (t) => {
95
- const encoded = encoder(t);
96
- const result = new Uint8Array(encoded.length + byteLengthToPad(encoded.length, config));
97
- result.set(encoded, 0);
98
- return result;
100
+ const [len, write] = encoder(t);
101
+ const totalLength = len + byteLengthToPad(len, config);
102
+ return [
103
+ totalLength,
104
+ (offset, buffer) => {
105
+ write(offset, buffer);
106
+ },
107
+ ];
99
108
  };
100
109
  }
101
110
  function decoderWithPadding(decoder) {