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":"groupContext.js","sourceRoot":"","sources":["../src/groupContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAW,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAmB,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE/F,OAAO,EAAE,eAAe,EAAO,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAa,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAuB,MAAM,sBAAsB,CAAA;AAYxG,MAAM,CAAC,MAAM,kBAAkB,GAA0B,iBAAiB,CACxE;IACE,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,WAAW;IAC7B,gBAAgB,EAAE,0BAA0B;IAC5C,gBAAgB,CAAC,eAAe,CAAC;CAClC,EACD,CAAC,EAAE,EAAE,EAAE,CACL,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,uBAAuB,EAAE,EAAE,CAAC,UAAU,CAAU,CACtH,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA0B,WAAW,CAClE;IACE,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,WAAW;IAC7B,gBAAgB,EAAE,0BAA0B;IAC5C,gBAAgB,CAAC,eAAe,CAAC;CAClC,EACD,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO;IACP,WAAW;IACX,OAAO;IACP,KAAK;IACL,QAAQ;IACR,uBAAuB;IACvB,UAAU;CACX,CAAC,CACH,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAqB,EACrB,YAAwB,EACxB,GAAQ,EACR,SAAsB;IAEtB,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IAEtD,OAAO,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAqB,EACrB,kBAA8B,EAC9B,YAAwB,EACxB,GAAQ;IAER,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;IAErE,OAAO,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACzF,CAAC"}
1
+ {"version":3,"file":"groupContext.js","sourceRoot":"","sources":["../src/groupContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAiB,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACpH,OAAO,EAAmB,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAEhG,OAAO,EAAE,eAAe,EAAO,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAa,MAAM,gBAAgB,CAAA;AAE7E,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAuB,MAAM,sBAAsB,CAAA;AAYzG,MAAM,CAAC,MAAM,mBAAmB,GAAgC,uBAAuB,CACrF;IACE,sBAAsB;IACtB,kBAAkB;IAClB,iBAAiB,EAAE,UAAU;IAC7B,aAAa,EAAE,QAAQ;IACvB,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,0BAA0B;IAC7C,iBAAiB,CAAC,gBAAgB,CAAC;CACpC,EACD,CAAC,EAAE,EAAE,EAAE,CACL,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,uBAAuB,EAAE,EAAE,CAAC,UAAU,CAAU,CACtH,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA0B,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,kBAAkB,GAA0B,WAAW,CAClE;IACE,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,WAAW;IAC7B,gBAAgB,EAAE,0BAA0B;IAC5C,gBAAgB,CAAC,eAAe,CAAC;CAClC,EACD,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO;IACP,WAAW;IACX,OAAO;IACP,KAAK;IACL,QAAQ;IACR,uBAAuB;IACvB,UAAU;CACX,CAAC,CACH,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAqB,EACrB,YAAwB,EACxB,GAAQ,EACR,SAAsB;IAEtB,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IAEtD,OAAO,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACjG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAqB,EACrB,kBAA8B,EAC9B,YAAwB,EACxB,GAAQ;IAER,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAA;IAErE,OAAO,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAClG,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 { CiphersuiteImpl } from "./crypto/ciphersuite.js";
4
4
  import { Kdf } from "./crypto/kdf.js";
5
5
  import { Signature } from "./crypto/signature.js";
@@ -12,11 +12,13 @@ export interface GroupInfoTBS {
12
12
  confirmationTag: Uint8Array;
13
13
  signer: number;
14
14
  }
15
+ export declare const groupInfoTBSEncoder: BufferEncoder<GroupInfoTBS>;
15
16
  export declare const encodeGroupInfoTBS: Encoder<GroupInfoTBS>;
16
17
  export declare const decodeGroupInfoTBS: Decoder<GroupInfoTBS>;
17
18
  export type GroupInfo = GroupInfoTBS & {
18
19
  signature: Uint8Array;
19
20
  };
21
+ export declare const groupInfoEncoder: BufferEncoder<GroupInfo>;
20
22
  export declare const encodeGroupInfo: Encoder<GroupInfo>;
21
23
  export declare const decodeGroupInfo: Decoder<GroupInfo>;
22
24
  export declare function ratchetTreeFromExtension(info: GroupInfo): RatchetTree | undefined;
package/dist/groupInfo.js CHANGED
@@ -1,21 +1,23 @@
1
- import { decodeUint32, encodeUint32 } from "./codec/number.js";
1
+ import { decodeUint32, uint32Encoder } from "./codec/number.js";
2
2
  import { mapDecoders } from "./codec/tlsDecoder.js";
3
- import { contramapEncoders } from "./codec/tlsEncoder.js";
4
- import { decodeVarLenData, decodeVarLenType, encodeVarLenData, encodeVarLenType } from "./codec/variableLength.js";
3
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { decodeVarLenData, decodeVarLenType, varLenDataEncoder, varLenTypeEncoder } from "./codec/variableLength.js";
5
5
  import { deriveSecret } from "./crypto/kdf.js";
6
6
  import { signWithLabel, verifyWithLabel } from "./crypto/signature.js";
7
- import { decodeExtension, encodeExtension } from "./extension.js";
8
- import { decodeGroupContext, encodeGroupContext, extractEpochSecret } from "./groupContext.js";
7
+ import { decodeExtension, extensionEncoder } from "./extension.js";
8
+ import { decodeGroupContext, groupContextEncoder, extractEpochSecret } from "./groupContext.js";
9
9
  import { CodecError } from "./mlsError.js";
10
10
  import { decodeRatchetTree } from "./ratchetTree.js";
11
- export const encodeGroupInfoTBS = contramapEncoders([encodeGroupContext, encodeVarLenType(encodeExtension), encodeVarLenData, encodeUint32], (g) => [g.groupContext, g.extensions, g.confirmationTag, g.signer]);
11
+ export const groupInfoTBSEncoder = contramapBufferEncoders([groupContextEncoder, varLenTypeEncoder(extensionEncoder), varLenDataEncoder, uint32Encoder], (g) => [g.groupContext, g.extensions, g.confirmationTag, g.signer]);
12
+ export const encodeGroupInfoTBS = encode(groupInfoTBSEncoder);
12
13
  export const decodeGroupInfoTBS = mapDecoders([decodeGroupContext, decodeVarLenType(decodeExtension), decodeVarLenData, decodeUint32], (groupContext, extensions, confirmationTag, signer) => ({
13
14
  groupContext,
14
15
  extensions,
15
16
  confirmationTag,
16
17
  signer,
17
18
  }));
18
- export const encodeGroupInfo = contramapEncoders([encodeGroupInfoTBS, encodeVarLenData], (g) => [g, g.signature]);
19
+ export const groupInfoEncoder = contramapBufferEncoders([groupInfoTBSEncoder, varLenDataEncoder], (g) => [g, g.signature]);
20
+ export const encodeGroupInfo = encode(groupInfoEncoder);
19
21
  export const decodeGroupInfo = mapDecoders([decodeGroupInfoTBS, decodeVarLenData], (tbs, signature) => ({
20
22
  ...tbs,
21
23
  signature,
@@ -30,11 +32,11 @@ export function ratchetTreeFromExtension(info) {
30
32
  }
31
33
  }
32
34
  export async function signGroupInfo(tbs, privateKey, s) {
33
- const signature = await signWithLabel(privateKey, "GroupInfoTBS", encodeGroupInfoTBS(tbs), s);
35
+ const signature = await signWithLabel(privateKey, "GroupInfoTBS", encode(groupInfoTBSEncoder)(tbs), s);
34
36
  return { ...tbs, signature };
35
37
  }
36
38
  export function verifyGroupInfoSignature(gi, publicKey, s) {
37
- return verifyWithLabel(publicKey, "GroupInfoTBS", encodeGroupInfoTBS(gi), gi.signature, s);
39
+ return verifyWithLabel(publicKey, "GroupInfoTBS", encode(groupInfoTBSEncoder)(gi), gi.signature, s);
38
40
  }
39
41
  export async function verifyGroupInfoConfirmationTag(gi, joinerSecret, pskSecret, cs) {
40
42
  const epochSecret = await extractEpochSecret(gi.groupContext, joinerSecret, cs.kdf, pskSecret);
@@ -1 +1 @@
1
- {"version":3,"file":"groupInfo.js","sourceRoot":"","sources":["../src/groupInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"groupInfo.js","sourceRoot":"","sources":["../src/groupInfo.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
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 { PreSharedKeyID } from "./presharedkey.js";
4
4
  export interface GroupSecrets {
5
5
  joinerSecret: Uint8Array;
6
6
  pathSecret: Uint8Array | undefined;
7
7
  psks: PreSharedKeyID[];
8
8
  }
9
+ export declare const groupSecretsEncoder: BufferEncoder<GroupSecrets>;
9
10
  export declare const encodeGroupSecrets: Encoder<GroupSecrets>;
10
11
  export declare const decodeGroupSecrets: Decoder<GroupSecrets>;
@@ -1,8 +1,9 @@
1
- import { decodeOptional, encodeOptional } from "./codec/optional.js";
1
+ import { decodeOptional, optionalEncoder } from "./codec/optional.js";
2
2
  import { mapDecoders } from "./codec/tlsDecoder.js";
3
- import { contramapEncoders } from "./codec/tlsEncoder.js";
4
- import { decodeVarLenData, decodeVarLenType, encodeVarLenData, encodeVarLenType } from "./codec/variableLength.js";
5
- import { decodePskId, encodePskId } from "./presharedkey.js";
6
- export const encodeGroupSecrets = contramapEncoders([encodeVarLenData, encodeOptional(encodeVarLenData), encodeVarLenType(encodePskId)], (gs) => [gs.joinerSecret, gs.pathSecret, gs.psks]);
3
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
4
+ import { decodeVarLenData, decodeVarLenType, varLenDataEncoder, varLenTypeEncoder } from "./codec/variableLength.js";
5
+ import { decodePskId, pskIdEncoder } from "./presharedkey.js";
6
+ export const groupSecretsEncoder = contramapBufferEncoders([varLenDataEncoder, optionalEncoder(varLenDataEncoder), varLenTypeEncoder(pskIdEncoder)], (gs) => [gs.joinerSecret, gs.pathSecret, gs.psks]);
7
+ export const encodeGroupSecrets = encode(groupSecretsEncoder);
7
8
  export const decodeGroupSecrets = mapDecoders([decodeVarLenData, decodeOptional(decodeVarLenData), decodeVarLenType(decodePskId)], (joinerSecret, pathSecret, psks) => ({ joinerSecret, pathSecret, psks }));
8
9
  //# sourceMappingURL=groupSecrets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"groupSecrets.js","sourceRoot":"","sources":["../src/groupSecrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAW,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAA;AAQ5E,MAAM,CAAC,MAAM,kBAAkB,GAA0B,iBAAiB,CACxE,CAAC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,EACnF,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAU,CAC3D,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA0B,WAAW,CAClE,CAAC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,EACnF,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACzE,CAAA"}
1
+ {"version":3,"file":"groupSecrets.js","sourceRoot":"","sources":["../src/groupSecrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAiB,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACpH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAA;AAQ7E,MAAM,CAAC,MAAM,mBAAmB,GAAgC,uBAAuB,CACrF,CAAC,iBAAiB,EAAE,eAAe,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,EACxF,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAU,CAC3D,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA0B,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,kBAAkB,GAA0B,WAAW,CAClE,CAAC,gBAAgB,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,EACnF,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACzE,CAAA"}
@@ -1,8 +1,9 @@
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 HPKECiphertext {
4
4
  kemOutput: Uint8Array;
5
5
  ciphertext: Uint8Array;
6
6
  }
7
+ export declare const hpkeCiphertextEncoder: BufferEncoder<HPKECiphertext>;
7
8
  export declare const encodeHpkeCiphertext: Encoder<HPKECiphertext>;
8
9
  export declare const decodeHpkeCiphertext: Decoder<HPKECiphertext>;
@@ -1,6 +1,7 @@
1
1
  import { mapDecoders } from "./codec/tlsDecoder.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
3
- import { encodeVarLenData, decodeVarLenData } from "./codec/variableLength.js";
4
- export const encodeHpkeCiphertext = contramapEncoders([encodeVarLenData, encodeVarLenData], (egs) => [egs.kemOutput, egs.ciphertext]);
2
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
3
+ import { varLenDataEncoder, decodeVarLenData } from "./codec/variableLength.js";
4
+ export const hpkeCiphertextEncoder = contramapBufferEncoders([varLenDataEncoder, varLenDataEncoder], (egs) => [egs.kemOutput, egs.ciphertext]);
5
+ export const encodeHpkeCiphertext = encode(hpkeCiphertextEncoder);
5
6
  export const decodeHpkeCiphertext = mapDecoders([decodeVarLenData, decodeVarLenData], (kemOutput, ciphertext) => ({ kemOutput, ciphertext }));
6
7
  //# sourceMappingURL=hpkeCiphertext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hpkeCiphertext.js","sourceRoot":"","sources":["../src/hpkeCiphertext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAO9E,MAAM,CAAC,MAAM,oBAAoB,GAA4B,iBAAiB,CAC5E,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EACpC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAU,CAClD,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAA4B,WAAW,CACtE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EACpC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CACvD,CAAA"}
1
+ {"version":3,"file":"hpkeCiphertext.js","sourceRoot":"","sources":["../src/hpkeCiphertext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAiB,uBAAuB,EAAE,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAO/E,MAAM,CAAC,MAAM,qBAAqB,GAAkC,uBAAuB,CACzF,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EACtC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAU,CAClD,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAA4B,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAE1F,MAAM,CAAC,MAAM,oBAAoB,GAA4B,WAAW,CACtE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EACpC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CACvD,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, CiphersuiteName } from "./crypto/ciphersuite.js";
4
4
  import { Hash } from "./crypto/hash.js";
5
5
  import { Signature } from "./crypto/signature.js";
@@ -16,11 +16,13 @@ type KeyPackageTBS = {
16
16
  leafNode: LeafNodeKeyPackage;
17
17
  extensions: Extension[];
18
18
  };
19
+ export declare const keyPackageTBSEncoder: BufferEncoder<KeyPackageTBS>;
19
20
  export declare const encodeKeyPackageTBS: Encoder<KeyPackageTBS>;
20
21
  export declare const decodeKeyPackageTBS: Decoder<KeyPackageTBS>;
21
22
  export type KeyPackage = KeyPackageTBS & {
22
23
  signature: Uint8Array;
23
24
  };
25
+ export declare const keyPackageEncoder: BufferEncoder<KeyPackage>;
24
26
  export declare const encodeKeyPackage: Encoder<KeyPackage>;
25
27
  export declare const decodeKeyPackage: Decoder<KeyPackage>;
26
28
  export declare function signKeyPackage(tbs: KeyPackageTBS, signKey: Uint8Array, s: Signature): Promise<KeyPackage>;
@@ -31,14 +33,14 @@ export interface PrivateKeyPackage {
31
33
  hpkePrivateKey: Uint8Array;
32
34
  signaturePrivateKey: Uint8Array;
33
35
  }
34
- export declare function generateKeyPackageWithKey(credential: Credential, capabilities: Capabilities, lifetime: Lifetime, extensions: Extension[], signatrueKeyPair: {
36
+ export declare function generateKeyPackageWithKey(credential: Credential, capabilities: Capabilities, lifetime: Lifetime, extensions: Extension[], signatureKeyPair: {
35
37
  signKey: Uint8Array;
36
38
  publicKey: Uint8Array;
37
- }, cs: CiphersuiteImpl): Promise<{
39
+ }, cs: CiphersuiteImpl, leafNodeExtensions?: Extension[]): Promise<{
38
40
  publicPackage: KeyPackage;
39
41
  privatePackage: PrivateKeyPackage;
40
42
  }>;
41
- export declare function generateKeyPackage(credential: Credential, capabilities: Capabilities, lifetime: Lifetime, extensions: Extension[], cs: CiphersuiteImpl): Promise<{
43
+ export declare function generateKeyPackage(credential: Credential, capabilities: Capabilities, lifetime: Lifetime, extensions: Extension[], cs: CiphersuiteImpl, leafNodeExtensions?: Extension[]): Promise<{
42
44
  publicPackage: KeyPackage;
43
45
  privatePackage: PrivateKeyPackage;
44
46
  }>;
@@ -1,19 +1,20 @@
1
1
  import { mapDecoders } from "./codec/tlsDecoder.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
3
- import { decodeVarLenData, decodeVarLenType, encodeVarLenData, encodeVarLenType } from "./codec/variableLength.js";
4
- import { decodeCiphersuite, encodeCiphersuite } from "./crypto/ciphersuite.js";
2
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
3
+ import { decodeVarLenData, decodeVarLenType, varLenDataEncoder, varLenTypeEncoder } from "./codec/variableLength.js";
4
+ import { ciphersuiteEncoder, decodeCiphersuite } from "./crypto/ciphersuite.js";
5
5
  import { refhash } from "./crypto/hash.js";
6
6
  import { signWithLabel, verifyWithLabel } from "./crypto/signature.js";
7
- import { decodeExtension, encodeExtension } from "./extension.js";
8
- import { decodeProtocolVersion, encodeProtocolVersion } from "./protocolVersion.js";
9
- import { decodeLeafNodeKeyPackage, encodeLeafNode, signLeafNodeKeyPackage, } from "./leafNode.js";
10
- export const encodeKeyPackageTBS = contramapEncoders([encodeProtocolVersion, encodeCiphersuite, encodeVarLenData, encodeLeafNode, encodeVarLenType(encodeExtension)], (keyPackageTBS) => [
7
+ import { decodeExtension, extensionEncoder } from "./extension.js";
8
+ import { decodeProtocolVersion, protocolVersionEncoder } from "./protocolVersion.js";
9
+ import { decodeLeafNodeKeyPackage, leafNodeEncoder, signLeafNodeKeyPackage, } from "./leafNode.js";
10
+ export const keyPackageTBSEncoder = contramapBufferEncoders([protocolVersionEncoder, ciphersuiteEncoder, varLenDataEncoder, leafNodeEncoder, varLenTypeEncoder(extensionEncoder)], (keyPackageTBS) => [
11
11
  keyPackageTBS.version,
12
12
  keyPackageTBS.cipherSuite,
13
13
  keyPackageTBS.initKey,
14
14
  keyPackageTBS.leafNode,
15
15
  keyPackageTBS.extensions,
16
16
  ]);
17
+ export const encodeKeyPackageTBS = encode(keyPackageTBSEncoder);
17
18
  export const decodeKeyPackageTBS = mapDecoders([
18
19
  decodeProtocolVersion,
19
20
  decodeCiphersuite,
@@ -27,34 +28,35 @@ export const decodeKeyPackageTBS = mapDecoders([
27
28
  leafNode,
28
29
  extensions,
29
30
  }));
30
- export const encodeKeyPackage = contramapEncoders([encodeKeyPackageTBS, encodeVarLenData], (keyPackage) => [keyPackage, keyPackage.signature]);
31
+ export const keyPackageEncoder = contramapBufferEncoders([keyPackageTBSEncoder, varLenDataEncoder], (keyPackage) => [keyPackage, keyPackage.signature]);
32
+ export const encodeKeyPackage = encode(keyPackageEncoder);
31
33
  export const decodeKeyPackage = mapDecoders([decodeKeyPackageTBS, decodeVarLenData], (keyPackageTBS, signature) => ({
32
34
  ...keyPackageTBS,
33
35
  signature,
34
36
  }));
35
37
  export async function signKeyPackage(tbs, signKey, s) {
36
- return { ...tbs, signature: await signWithLabel(signKey, "KeyPackageTBS", encodeKeyPackageTBS(tbs), s) };
38
+ return { ...tbs, signature: await signWithLabel(signKey, "KeyPackageTBS", encode(keyPackageTBSEncoder)(tbs), s) };
37
39
  }
38
40
  export async function verifyKeyPackage(kp, s) {
39
- return verifyWithLabel(kp.leafNode.signaturePublicKey, "KeyPackageTBS", encodeKeyPackageTBS(kp), kp.signature, s);
41
+ return verifyWithLabel(kp.leafNode.signaturePublicKey, "KeyPackageTBS", encode(keyPackageTBSEncoder)(kp), kp.signature, s);
40
42
  }
41
43
  export function makeKeyPackageRef(value, h) {
42
- return refhash("MLS 1.0 KeyPackage Reference", encodeKeyPackage(value), h);
44
+ return refhash("MLS 1.0 KeyPackage Reference", encode(keyPackageEncoder)(value), h);
43
45
  }
44
- export async function generateKeyPackageWithKey(credential, capabilities, lifetime, extensions, signatrueKeyPair, cs) {
46
+ export async function generateKeyPackageWithKey(credential, capabilities, lifetime, extensions, signatureKeyPair, cs, leafNodeExtensions) {
45
47
  const initKeys = await cs.hpke.generateKeyPair();
46
48
  const hpkeKeys = await cs.hpke.generateKeyPair();
47
49
  const privatePackage = {
48
50
  initPrivateKey: await cs.hpke.exportPrivateKey(initKeys.privateKey),
49
51
  hpkePrivateKey: await cs.hpke.exportPrivateKey(hpkeKeys.privateKey),
50
- signaturePrivateKey: signatrueKeyPair.signKey,
52
+ signaturePrivateKey: signatureKeyPair.signKey,
51
53
  };
52
54
  const leafNodeTbs = {
53
55
  leafNodeSource: "key_package",
54
56
  hpkePublicKey: await cs.hpke.exportPublicKey(hpkeKeys.publicKey),
55
- signaturePublicKey: signatrueKeyPair.publicKey,
57
+ signaturePublicKey: signatureKeyPair.publicKey,
56
58
  info: { leafNodeSource: "key_package" },
57
- extensions,
59
+ extensions: leafNodeExtensions ?? [],
58
60
  credential,
59
61
  capabilities,
60
62
  lifetime,
@@ -63,13 +65,13 @@ export async function generateKeyPackageWithKey(credential, capabilities, lifeti
63
65
  version: "mls10",
64
66
  cipherSuite: cs.name,
65
67
  initKey: await cs.hpke.exportPublicKey(initKeys.publicKey),
66
- leafNode: await signLeafNodeKeyPackage(leafNodeTbs, signatrueKeyPair.signKey, cs.signature),
68
+ leafNode: await signLeafNodeKeyPackage(leafNodeTbs, signatureKeyPair.signKey, cs.signature),
67
69
  extensions,
68
70
  };
69
- return { publicPackage: await signKeyPackage(tbs, signatrueKeyPair.signKey, cs.signature), privatePackage };
71
+ return { publicPackage: await signKeyPackage(tbs, signatureKeyPair.signKey, cs.signature), privatePackage };
70
72
  }
71
- export async function generateKeyPackage(credential, capabilities, lifetime, extensions, cs) {
73
+ export async function generateKeyPackage(credential, capabilities, lifetime, extensions, cs, leafNodeExtensions) {
72
74
  const sigKeys = await cs.signature.keygen();
73
- return generateKeyPackageWithKey(credential, capabilities, lifetime, extensions, sigKeys, cs);
75
+ return generateKeyPackageWithKey(credential, capabilities, lifetime, extensions, sigKeys, cs, leafNodeExtensions);
74
76
  }
75
77
  //# sourceMappingURL=keyPackage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyPackage.js","sourceRoot":"","sources":["../src/keyPackage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyPackage.js","sourceRoot":"","sources":["../src/keyPackage.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Capabilities } from "./capabilities.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 { Credential } from "./credential.js";
5
5
  import { Signature } from "./crypto/signature.js";
6
6
  import { Extension } from "./extension.js";
@@ -12,6 +12,7 @@ export interface LeafNodeData {
12
12
  credential: Credential;
13
13
  capabilities: Capabilities;
14
14
  }
15
+ export declare const leafNodeDataEncoder: BufferEncoder<LeafNodeData>;
15
16
  export declare const encodeLeafNodeData: Encoder<LeafNodeData>;
16
17
  export declare const decodeLeafNodeData: Decoder<LeafNodeData>;
17
18
  export type LeafNodeInfo = LeafNodeInfoKeyPackage | LeafNodeInfoUpdate | LeafNodeInfoCommit;
@@ -26,9 +27,13 @@ export interface LeafNodeInfoCommit {
26
27
  leafNodeSource: "commit";
27
28
  parentHash: Uint8Array;
28
29
  }
30
+ export declare const leafNodeInfoLifetimeEncoder: BufferEncoder<LeafNodeInfoKeyPackage>;
29
31
  export declare const encodeLeafNodeInfoLifetime: Encoder<LeafNodeInfoKeyPackage>;
32
+ export declare const leafNodeInfoUpdateEncoder: BufferEncoder<LeafNodeInfoUpdate>;
30
33
  export declare const encodeLeafNodeInfoUpdate: Encoder<LeafNodeInfoUpdate>;
34
+ export declare const leafNodeInfoCommitEncoder: BufferEncoder<LeafNodeInfoCommit>;
31
35
  export declare const encodeLeafNodeInfoCommit: Encoder<LeafNodeInfoCommit>;
36
+ export declare const leafNodeInfoEncoder: BufferEncoder<LeafNodeInfo>;
32
37
  export declare const encodeLeafNodeInfo: Encoder<LeafNodeInfo>;
33
38
  export declare const decodeLeafNodeInfoLifetime: Decoder<LeafNodeInfoKeyPackage>;
34
39
  export declare const decodeLeafNodeInfoCommit: Decoder<LeafNodeInfoCommit>;
@@ -36,6 +41,7 @@ export declare const decodeLeafNodeInfo: Decoder<LeafNodeInfo>;
36
41
  export interface LeafNodeExtensions {
37
42
  extensions: Extension[];
38
43
  }
44
+ export declare const leafNodeExtensionsEncoder: BufferEncoder<LeafNodeExtensions>;
39
45
  export declare const encodeLeafNodeExtensions: Encoder<LeafNodeExtensions>;
40
46
  export declare const decodeLeafNodeExtensions: Decoder<LeafNodeExtensions>;
41
47
  type GroupIdLeafIndex = {
@@ -43,10 +49,12 @@ type GroupIdLeafIndex = {
43
49
  groupId: Uint8Array;
44
50
  leafIndex: number;
45
51
  };
52
+ export declare const groupIdLeafIndexEncoder: BufferEncoder<GroupIdLeafIndex>;
46
53
  export declare const encodeGroupIdLeafIndex: Encoder<GroupIdLeafIndex>;
47
54
  export type LeafNodeGroupInfo = GroupIdLeafIndex | {
48
55
  leafNodeSource: "key_package";
49
56
  };
57
+ export declare const leafNodeGroupInfoEncoder: BufferEncoder<LeafNodeGroupInfo>;
50
58
  export declare const encodeLeafNodeGroupInfo: Encoder<LeafNodeGroupInfo>;
51
59
  export type LeafNodeTBS = LeafNodeData & LeafNodeInfo & LeafNodeExtensions & {
52
60
  info: LeafNodeGroupInfo;
@@ -59,10 +67,12 @@ export type LeafNodeTBSKeyPackage = LeafNodeData & LeafNodeInfoKeyPackage & Leaf
59
67
  leafNodeSource: "key_package";
60
68
  };
61
69
  };
70
+ export declare const leafNodeTBSEncoder: BufferEncoder<LeafNodeTBS>;
62
71
  export declare const encodeLeafNodeTBS: Encoder<LeafNodeTBS>;
63
72
  export type LeafNode = LeafNodeData & LeafNodeInfo & LeafNodeExtensions & {
64
73
  signature: Uint8Array;
65
74
  };
75
+ export declare const leafNodeEncoder: BufferEncoder<LeafNode>;
66
76
  export declare const encodeLeafNode: Encoder<LeafNode>;
67
77
  export declare const decodeLeafNode: Decoder<LeafNode>;
68
78
  export type LeafNodeKeyPackage = LeafNode & LeafNodeInfoKeyPackage;
package/dist/leafNode.js CHANGED
@@ -1,33 +1,38 @@
1
- import { decodeCapabilities, encodeCapabilities } from "./capabilities.js";
2
- import { encodeUint32 } from "./codec/number.js";
1
+ import { capabilitiesEncoder, decodeCapabilities } from "./capabilities.js";
2
+ import { uint32Encoder } from "./codec/number.js";
3
3
  import { mapDecoders, mapDecoder, flatMapDecoder, succeedDecoder, mapDecoderOption, } from "./codec/tlsDecoder.js";
4
- import { contramapEncoders, contramapEncoder } from "./codec/tlsEncoder.js";
5
- import { encodeVarLenData, decodeVarLenData, encodeVarLenType, decodeVarLenType } from "./codec/variableLength.js";
6
- import { encodeCredential, decodeCredential } from "./credential.js";
4
+ import { contramapBufferEncoders, contramapBufferEncoder, encode, encVoid, } from "./codec/tlsEncoder.js";
5
+ import { varLenDataEncoder, decodeVarLenData, varLenTypeEncoder, decodeVarLenType } from "./codec/variableLength.js";
6
+ import { credentialEncoder, decodeCredential } from "./credential.js";
7
7
  import { signWithLabel, verifyWithLabel } from "./crypto/signature.js";
8
- import { encodeExtension, decodeExtension } from "./extension.js";
9
- import { encodeLeafNodeSource, decodeLeafNodeSource } from "./leafNodeSource.js";
10
- import { encodeLifetime, decodeLifetime } from "./lifetime.js";
11
- export const encodeLeafNodeData = contramapEncoders([encodeVarLenData, encodeVarLenData, encodeCredential, encodeCapabilities], (data) => [data.hpkePublicKey, data.signaturePublicKey, data.credential, data.capabilities]);
8
+ import { extensionEncoder, decodeExtension } from "./extension.js";
9
+ import { leafNodeSourceEncoder, decodeLeafNodeSource } from "./leafNodeSource.js";
10
+ import { lifetimeEncoder, decodeLifetime } from "./lifetime.js";
11
+ export const leafNodeDataEncoder = contramapBufferEncoders([varLenDataEncoder, varLenDataEncoder, credentialEncoder, capabilitiesEncoder], (data) => [data.hpkePublicKey, data.signaturePublicKey, data.credential, data.capabilities]);
12
+ export const encodeLeafNodeData = encode(leafNodeDataEncoder);
12
13
  export const decodeLeafNodeData = mapDecoders([decodeVarLenData, decodeVarLenData, decodeCredential, decodeCapabilities], (hpkePublicKey, signaturePublicKey, credential, capabilities) => ({
13
14
  hpkePublicKey,
14
15
  signaturePublicKey,
15
16
  credential,
16
17
  capabilities,
17
18
  }));
18
- export const encodeLeafNodeInfoLifetime = contramapEncoders([encodeLeafNodeSource, encodeLifetime], (info) => ["key_package", info.lifetime]);
19
- export const encodeLeafNodeInfoUpdate = contramapEncoder(encodeLeafNodeSource, (i) => i.leafNodeSource);
20
- export const encodeLeafNodeInfoCommit = contramapEncoders([encodeLeafNodeSource, encodeVarLenData], (info) => ["commit", info.parentHash]);
21
- export const encodeLeafNodeInfo = (info) => {
19
+ export const leafNodeInfoLifetimeEncoder = contramapBufferEncoders([leafNodeSourceEncoder, lifetimeEncoder], (info) => ["key_package", info.lifetime]);
20
+ export const encodeLeafNodeInfoLifetime = encode(leafNodeInfoLifetimeEncoder);
21
+ export const leafNodeInfoUpdateEncoder = contramapBufferEncoder(leafNodeSourceEncoder, (i) => i.leafNodeSource);
22
+ export const encodeLeafNodeInfoUpdate = encode(leafNodeInfoUpdateEncoder);
23
+ export const leafNodeInfoCommitEncoder = contramapBufferEncoders([leafNodeSourceEncoder, varLenDataEncoder], (info) => ["commit", info.parentHash]);
24
+ export const encodeLeafNodeInfoCommit = encode(leafNodeInfoCommitEncoder);
25
+ export const leafNodeInfoEncoder = (info) => {
22
26
  switch (info.leafNodeSource) {
23
27
  case "key_package":
24
- return encodeLeafNodeInfoLifetime(info);
28
+ return leafNodeInfoLifetimeEncoder(info);
25
29
  case "update":
26
- return encodeLeafNodeInfoUpdate(info);
30
+ return leafNodeInfoUpdateEncoder(info);
27
31
  case "commit":
28
- return encodeLeafNodeInfoCommit(info);
32
+ return leafNodeInfoCommitEncoder(info);
29
33
  }
30
34
  };
35
+ export const encodeLeafNodeInfo = encode(leafNodeInfoEncoder);
31
36
  export const decodeLeafNodeInfoLifetime = mapDecoder(decodeLifetime, (lifetime) => ({
32
37
  leafNodeSource: "key_package",
33
38
  lifetime,
@@ -46,20 +51,25 @@ export const decodeLeafNodeInfo = flatMapDecoder(decodeLeafNodeSource, (leafNode
46
51
  return decodeLeafNodeInfoCommit;
47
52
  }
48
53
  });
49
- export const encodeLeafNodeExtensions = contramapEncoder(encodeVarLenType(encodeExtension), (ext) => ext.extensions);
54
+ export const leafNodeExtensionsEncoder = contramapBufferEncoder(varLenTypeEncoder(extensionEncoder), (ext) => ext.extensions);
55
+ export const encodeLeafNodeExtensions = encode(leafNodeExtensionsEncoder);
50
56
  export const decodeLeafNodeExtensions = mapDecoder(decodeVarLenType(decodeExtension), (extensions) => ({ extensions }));
51
- export const encodeGroupIdLeafIndex = contramapEncoders([encodeVarLenData, encodeUint32], (g) => [g.groupId, g.leafIndex]);
52
- export const encodeLeafNodeGroupInfo = (info) => {
57
+ export const groupIdLeafIndexEncoder = contramapBufferEncoders([varLenDataEncoder, uint32Encoder], (g) => [g.groupId, g.leafIndex]);
58
+ export const encodeGroupIdLeafIndex = encode(groupIdLeafIndexEncoder);
59
+ export const leafNodeGroupInfoEncoder = (info) => {
53
60
  switch (info.leafNodeSource) {
54
61
  case "key_package":
55
- return new Uint8Array();
62
+ return encVoid;
56
63
  case "update":
57
64
  case "commit":
58
- return encodeGroupIdLeafIndex(info);
65
+ return groupIdLeafIndexEncoder(info);
59
66
  }
60
67
  };
61
- export const encodeLeafNodeTBS = contramapEncoders([encodeLeafNodeData, encodeLeafNodeInfo, encodeLeafNodeExtensions, encodeLeafNodeGroupInfo], (tbs) => [tbs, tbs, tbs, tbs.info]);
62
- export const encodeLeafNode = contramapEncoders([encodeLeafNodeData, encodeLeafNodeInfo, encodeLeafNodeExtensions, encodeVarLenData], (leafNode) => [leafNode, leafNode, leafNode, leafNode.signature]);
68
+ export const encodeLeafNodeGroupInfo = encode(leafNodeGroupInfoEncoder);
69
+ export const leafNodeTBSEncoder = contramapBufferEncoders([leafNodeDataEncoder, leafNodeInfoEncoder, leafNodeExtensionsEncoder, leafNodeGroupInfoEncoder], (tbs) => [tbs, tbs, tbs, tbs.info]);
70
+ export const encodeLeafNodeTBS = encode(leafNodeTBSEncoder);
71
+ export const leafNodeEncoder = contramapBufferEncoders([leafNodeDataEncoder, leafNodeInfoEncoder, leafNodeExtensionsEncoder, varLenDataEncoder], (leafNode) => [leafNode, leafNode, leafNode, leafNode.signature]);
72
+ export const encodeLeafNode = encode(leafNodeEncoder);
63
73
  export const decodeLeafNode = mapDecoders([decodeLeafNodeData, decodeLeafNodeInfo, decodeLeafNodeExtensions, decodeVarLenData], (data, info, extensions, signature) => ({
64
74
  ...data,
65
75
  ...info,
@@ -73,15 +83,21 @@ function toTbs(leafNode, groupId, leafIndex) {
73
83
  return { ...leafNode, info: { leafNodeSource: leafNode.leafNodeSource, groupId, leafIndex } };
74
84
  }
75
85
  export async function signLeafNodeCommit(tbs, signaturePrivateKey, sig) {
76
- return { ...tbs, signature: await signWithLabel(signaturePrivateKey, "LeafNodeTBS", encodeLeafNodeTBS(tbs), sig) };
86
+ return {
87
+ ...tbs,
88
+ signature: await signWithLabel(signaturePrivateKey, "LeafNodeTBS", encode(leafNodeTBSEncoder)(tbs), sig),
89
+ };
77
90
  }
78
91
  export async function signLeafNodeKeyPackage(tbs, signaturePrivateKey, sig) {
79
- return { ...tbs, signature: await signWithLabel(signaturePrivateKey, "LeafNodeTBS", encodeLeafNodeTBS(tbs), sig) };
92
+ return {
93
+ ...tbs,
94
+ signature: await signWithLabel(signaturePrivateKey, "LeafNodeTBS", encode(leafNodeTBSEncoder)(tbs), sig),
95
+ };
80
96
  }
81
97
  export function verifyLeafNodeSignature(leaf, groupId, leafIndex, sig) {
82
- return verifyWithLabel(leaf.signaturePublicKey, "LeafNodeTBS", encodeLeafNodeTBS(toTbs(leaf, groupId, leafIndex)), leaf.signature, sig);
98
+ return verifyWithLabel(leaf.signaturePublicKey, "LeafNodeTBS", encode(leafNodeTBSEncoder)(toTbs(leaf, groupId, leafIndex)), leaf.signature, sig);
83
99
  }
84
100
  export function verifyLeafNodeSignatureKeyPackage(leaf, sig) {
85
- return verifyWithLabel(leaf.signaturePublicKey, "LeafNodeTBS", encodeLeafNodeTBS({ ...leaf, info: { leafNodeSource: leaf.leafNodeSource } }), leaf.signature, sig);
101
+ return verifyWithLabel(leaf.signaturePublicKey, "LeafNodeTBS", encode(leafNodeTBSEncoder)({ ...leaf, info: { leafNodeSource: leaf.leafNodeSource } }), leaf.signature, sig);
86
102
  }
87
103
  //# sourceMappingURL=leafNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"leafNode.js","sourceRoot":"","sources":["../src/leafNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAEL,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAW,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAClH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAc,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAa,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAa,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAsB,MAAM,qBAAqB,CAAA;AACpG,OAAO,EAAY,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AASxE,MAAM,CAAC,MAAM,kBAAkB,GAA0B,iBAAiB,CACxE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAC1E,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAU,CACrG,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA0B,WAAW,CAClE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAC1E,CAAC,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAChE,aAAa;IACb,kBAAkB;IAClB,UAAU;IACV,YAAY;CACb,CAAC,CACH,CAAA;AAeD,MAAM,CAAC,MAAM,0BAA0B,GAAoC,iBAAiB,CAC1F,CAAC,oBAAoB,EAAE,cAAc,CAAC,EACtC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAU,CAClD,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAgC,gBAAgB,CACnF,oBAAoB,EACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CACxB,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAgC,iBAAiB,CACpF,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,EACxC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAU,CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAA0B,CAAC,IAAI,EAAE,EAAE;IAChE,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,KAAK,aAAa;YAChB,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAA;QACzC,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAA;QACvC,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAoC,UAAU,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnH,cAAc,EAAE,aAAa;IAC7B,QAAQ;CACT,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAgC,WAAW,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpH,cAAc,EAAE,QAAQ;IACxB,UAAU;CACX,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAA0B,cAAc,CACrE,oBAAoB,EACpB,CAAC,cAAc,EAAyB,EAAE;IACxC,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,aAAa;YAChB,OAAO,0BAA0B,CAAA;QACnC,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC,CAAA;QAC3C,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAA;IACnC,CAAC;AACH,CAAC,CACF,CAAA;AAMD,MAAM,CAAC,MAAM,wBAAwB,GAAgC,gBAAgB,CACnF,gBAAgB,CAAC,eAAe,CAAC,EACjC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CACxB,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAgC,UAAU,CAC7E,gBAAgB,CAAC,eAAe,CAAC,EACjC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CACjC,CAAA;AAQD,MAAM,CAAC,MAAM,sBAAsB,GAA8B,iBAAiB,CAChF,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAU,CACzC,CAAA;AAID,MAAM,CAAC,MAAM,uBAAuB,GAA+B,CAAC,IAAI,EAAE,EAAE;IAC1E,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,KAAK,aAAa;YAChB,OAAO,IAAI,UAAU,EAAE,CAAA;QACzB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;AACH,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,iBAAiB,GAAyB,iBAAiB,CACtE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,EAC3F,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAU,CAC5C,CAAA;AAID,MAAM,CAAC,MAAM,cAAc,GAAsB,iBAAiB,CAChE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,EACpF,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAU,CAC1E,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAsB,WAAW,CAC1D,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,CAAC,EACpF,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACtC,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,UAAU;IACb,SAAS;CACV,CAAC,CACH,CAAA;AAID,MAAM,CAAC,MAAM,wBAAwB,GAAgC,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAC3G,EAAE,CAAC,cAAc,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CACrD,CAAA;AAID,MAAM,CAAC,MAAM,oBAAoB,GAA4B,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CACnG,EAAE,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAChD,CAAA;AAID,MAAM,CAAC,MAAM,oBAAoB,GAA4B,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CACnG,EAAE,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAChD,CAAA;AAED,SAAS,KAAK,CAAC,QAAkB,EAAE,OAAmB,EAAE,SAAiB;IACvE,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAA;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAsB,EACtB,mBAA+B,EAC/B,GAAc;IAEd,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AACpH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAA0B,EAC1B,mBAA+B,EAC/B,GAAc;IAEd,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AACpH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAc,EACd,OAAmB,EACnB,SAAiB,EACjB,GAAc;IAEd,OAAO,eAAe,CACpB,IAAI,CAAC,kBAAkB,EACvB,aAAa,EACb,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAClD,IAAI,CAAC,SAAS,EACd,GAAG,CACJ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAAwB,EAAE,GAAc;IACxF,OAAO,eAAe,CACpB,IAAI,CAAC,kBAAkB,EACvB,aAAa,EACb,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAC7E,IAAI,CAAC,SAAS,EACd,GAAG,CACJ,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"leafNode.js","sourceRoot":"","sources":["../src/leafNode.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
  declare const leafNodeSources: {
4
4
  readonly key_package: 1;
5
5
  readonly update: 2;
@@ -7,6 +7,7 @@ declare const leafNodeSources: {
7
7
  };
8
8
  export type LeafNodeSourceName = keyof typeof leafNodeSources;
9
9
  export type LeafNodeSourceValue = (typeof leafNodeSources)[LeafNodeSourceName];
10
+ export declare const leafNodeSourceEncoder: BufferEncoder<LeafNodeSourceName>;
10
11
  export declare const encodeLeafNodeSource: Encoder<LeafNodeSourceName>;
11
12
  export declare const decodeLeafNodeSource: Decoder<LeafNodeSourceName>;
12
13
  export {};
@@ -1,12 +1,13 @@
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 leafNodeSources = {
6
6
  key_package: 1,
7
7
  update: 2,
8
8
  commit: 3,
9
9
  };
10
- export const encodeLeafNodeSource = contramapEncoder(encodeUint8, (t) => leafNodeSources[t]);
10
+ export const leafNodeSourceEncoder = contramapBufferEncoder(uint8Encoder, (t) => leafNodeSources[t]);
11
+ export const encodeLeafNodeSource = encode(leafNodeSourceEncoder);
11
12
  export const decodeLeafNodeSource = mapDecoderOption(decodeUint8, enumNumberToKey(leafNodeSources));
12
13
  //# sourceMappingURL=leafNodeSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"leafNodeSource.js","sourceRoot":"","sources":["../src/leafNodeSource.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,eAAe,GAAG;IACtB,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACD,CAAA;AAKV,MAAM,CAAC,MAAM,oBAAoB,GAAgC,gBAAgB,CAC/E,WAAW,EACX,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAC1B,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAgC,gBAAgB,CAC/E,WAAW,EACX,eAAe,CAAC,eAAe,CAAC,CACjC,CAAA"}
1
+ {"version":3,"file":"leafNodeSource.js","sourceRoot":"","sources":["../src/leafNodeSource.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,eAAe,GAAG;IACtB,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;CACD,CAAA;AAKV,MAAM,CAAC,MAAM,qBAAqB,GAAsC,sBAAsB,CAC5F,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAC1B,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAgC,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAE9F,MAAM,CAAC,MAAM,oBAAoB,GAAgC,gBAAgB,CAC/E,WAAW,EACX,eAAe,CAAC,eAAe,CAAC,CACjC,CAAA"}
@@ -1,9 +1,10 @@
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
  export interface Lifetime {
4
4
  notBefore: bigint;
5
5
  notAfter: bigint;
6
6
  }
7
+ export declare const lifetimeEncoder: BufferEncoder<Lifetime>;
7
8
  export declare const encodeLifetime: Encoder<Lifetime>;
8
9
  export declare const decodeLifetime: Decoder<Lifetime>;
9
10
  export declare const defaultLifetime: Lifetime;
package/dist/lifetime.js CHANGED
@@ -1,7 +1,8 @@
1
- import { encodeUint64, decodeUint64 } from "./codec/number.js";
2
- import { contramapEncoders } from "./codec/tlsEncoder.js";
1
+ import { uint64Encoder, decodeUint64 } from "./codec/number.js";
2
+ import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
3
3
  import { mapDecoders } from "./codec/tlsDecoder.js";
4
- export const encodeLifetime = contramapEncoders([encodeUint64, encodeUint64], (lt) => [lt.notBefore, lt.notAfter]);
4
+ export const lifetimeEncoder = contramapBufferEncoders([uint64Encoder, uint64Encoder], (lt) => [lt.notBefore, lt.notAfter]);
5
+ export const encodeLifetime = encode(lifetimeEncoder);
5
6
  export const decodeLifetime = mapDecoders([decodeUint64, decodeUint64], (notBefore, notAfter) => ({
6
7
  notBefore,
7
8
  notAfter,