ts-mls 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authenticatedContent.d.ts +3 -1
- package/dist/authenticatedContent.js +10 -8
- package/dist/authenticatedContent.js.map +1 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/capabilities.js +13 -12
- package/dist/capabilities.js.map +1 -1
- package/dist/clientState.d.ts +4 -3
- package/dist/clientState.js +87 -59
- package/dist/clientState.js.map +1 -1
- package/dist/codec/number.d.ts +5 -1
- package/dist/codec/number.js +33 -24
- package/dist/codec/number.js.map +1 -1
- package/dist/codec/optional.d.ts +2 -2
- package/dist/codec/optional.js +24 -7
- package/dist/codec/optional.js.map +1 -1
- package/dist/codec/tlsEncoder.d.ts +11 -8
- package/dist/codec/tlsEncoder.js +39 -21
- package/dist/codec/tlsEncoder.js.map +1 -1
- package/dist/codec/variableLength.d.ts +4 -4
- package/dist/codec/variableLength.js +58 -28
- package/dist/codec/variableLength.js.map +1 -1
- package/dist/commit.d.ts +2 -1
- package/dist/commit.js +7 -6
- package/dist/commit.js.map +1 -1
- package/dist/contentType.d.ts +2 -1
- package/dist/contentType.js +4 -3
- package/dist/contentType.js.map +1 -1
- package/dist/createCommit.js +6 -5
- package/dist/createCommit.js.map +1 -1
- package/dist/credential.d.ts +5 -1
- package/dist/credential.js +14 -10
- package/dist/credential.js.map +1 -1
- package/dist/credentialType.d.ts +2 -1
- package/dist/credentialType.js +4 -3
- package/dist/credentialType.js.map +1 -1
- package/dist/crypto/ciphersuite.d.ts +2 -1
- package/dist/crypto/ciphersuite.js +4 -3
- package/dist/crypto/ciphersuite.js.map +1 -1
- package/dist/crypto/hash.js +4 -3
- package/dist/crypto/hash.js.map +1 -1
- package/dist/crypto/hpke.js +10 -4
- package/dist/crypto/hpke.js.map +1 -1
- package/dist/crypto/implementation/default/makeAead.js +9 -9
- package/dist/crypto/implementation/default/makeAead.js.map +1 -1
- package/dist/crypto/implementation/default/makeHashImpl.js +5 -5
- package/dist/crypto/implementation/default/makeHashImpl.js.map +1 -1
- package/dist/crypto/implementation/default/makeKdfImpl.js +3 -3
- package/dist/crypto/implementation/default/makeKdfImpl.js.map +1 -1
- package/dist/crypto/implementation/hpke.js +11 -11
- package/dist/crypto/implementation/hpke.js.map +1 -1
- package/dist/crypto/kdf.js +8 -7
- package/dist/crypto/kdf.js.map +1 -1
- package/dist/crypto/signature.js +10 -4
- package/dist/crypto/signature.js.map +1 -1
- package/dist/defaultExtensionType.d.ts +2 -1
- package/dist/defaultExtensionType.js +4 -3
- package/dist/defaultExtensionType.js.map +1 -1
- package/dist/defaultProposalType.d.ts +2 -1
- package/dist/defaultProposalType.js +4 -3
- package/dist/defaultProposalType.js.map +1 -1
- package/dist/extension.d.ts +3 -1
- package/dist/extension.js +8 -6
- package/dist/extension.js.map +1 -1
- package/dist/externalSender.d.ts +2 -1
- package/dist/externalSender.js +5 -4
- package/dist/externalSender.js.map +1 -1
- package/dist/framedContent.d.ts +9 -1
- package/dist/framedContent.js +35 -27
- package/dist/framedContent.js.map +1 -1
- package/dist/groupContext.d.ts +2 -1
- package/dist/groupContext.js +17 -16
- package/dist/groupContext.js.map +1 -1
- package/dist/groupInfo.d.ts +3 -1
- package/dist/groupInfo.js +11 -9
- package/dist/groupInfo.js.map +1 -1
- package/dist/groupSecrets.d.ts +2 -1
- package/dist/groupSecrets.js +6 -5
- package/dist/groupSecrets.js.map +1 -1
- package/dist/hpkeCiphertext.d.ts +2 -1
- package/dist/hpkeCiphertext.js +4 -3
- package/dist/hpkeCiphertext.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/keyPackage.d.ts +12 -3
- package/dist/keyPackage.js +23 -18
- package/dist/keyPackage.js.map +1 -1
- package/dist/leafNode.d.ts +11 -1
- package/dist/leafNode.js +43 -27
- package/dist/leafNode.js.map +1 -1
- package/dist/leafNodeSource.d.ts +2 -1
- package/dist/leafNodeSource.js +4 -3
- package/dist/leafNodeSource.js.map +1 -1
- package/dist/lifetime.d.ts +2 -1
- package/dist/lifetime.js +4 -3
- package/dist/lifetime.js.map +1 -1
- package/dist/message.d.ts +9 -2
- package/dist/message.js +27 -20
- package/dist/message.js.map +1 -1
- package/dist/messageProtection.js +4 -3
- package/dist/messageProtection.js.map +1 -1
- package/dist/nodeType.d.ts +2 -1
- package/dist/nodeType.js +4 -3
- package/dist/nodeType.js.map +1 -1
- package/dist/parentHash.d.ts +2 -1
- package/dist/parentHash.js +5 -4
- package/dist/parentHash.js.map +1 -1
- package/dist/parentNode.d.ts +2 -1
- package/dist/parentNode.js +5 -4
- package/dist/parentNode.js.map +1 -1
- package/dist/presharedkey.d.ts +6 -1
- package/dist/presharedkey.js +16 -11
- package/dist/presharedkey.js.map +1 -1
- package/dist/privateMessage.d.ts +4 -1
- package/dist/privateMessage.js +29 -20
- package/dist/privateMessage.js.map +1 -1
- package/dist/processMessages.js +3 -2
- package/dist/processMessages.js.map +1 -1
- package/dist/proposal.d.ts +17 -1
- package/dist/proposal.js +50 -34
- package/dist/proposal.js.map +1 -1
- package/dist/proposalOrRefType.d.ts +5 -1
- package/dist/proposalOrRefType.js +14 -10
- package/dist/proposalOrRefType.js.map +1 -1
- package/dist/protocolVersion.d.ts +2 -1
- package/dist/protocolVersion.js +4 -3
- package/dist/protocolVersion.js.map +1 -1
- package/dist/publicMessage.d.ts +3 -1
- package/dist/publicMessage.js +9 -7
- package/dist/publicMessage.js.map +1 -1
- package/dist/ratchetTree.d.ts +3 -1
- package/dist/ratchetTree.js +13 -11
- package/dist/ratchetTree.js.map +1 -1
- package/dist/requiredCapabilities.d.ts +2 -1
- package/dist/requiredCapabilities.js +6 -5
- package/dist/requiredCapabilities.js.map +1 -1
- package/dist/sender.d.ts +6 -1
- package/dist/sender.js +24 -13
- package/dist/sender.js.map +1 -1
- package/dist/transcriptHash.d.ts +2 -1
- package/dist/transcriptHash.js +18 -8
- package/dist/transcriptHash.js.map +1 -1
- package/dist/treeHash.d.ts +4 -1
- package/dist/treeHash.js +17 -14
- package/dist/treeHash.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/updatePath.d.ts +3 -1
- package/dist/updatePath.js +10 -8
- package/dist/updatePath.js.map +1 -1
- package/dist/util/byteArray.d.ts +2 -1
- package/dist/util/byteArray.js +21 -2
- package/dist/util/byteArray.js.map +1 -1
- package/dist/welcome.d.ts +3 -1
- package/dist/welcome.js +12 -10
- package/dist/welcome.js.map +1 -1
- package/dist/wireformat.d.ts +2 -1
- package/dist/wireformat.js +4 -3
- package/dist/wireformat.js.map +1 -1
- package/package.json +3 -3
package/dist/sender.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { decodeUint32, decodeUint64, decodeUint8,
|
|
1
|
+
import { decodeUint32, decodeUint64, decodeUint8, uint32Encoder, uint64Encoder, uint8Encoder } from "./codec/number.js";
|
|
2
2
|
import { flatMapDecoder, mapDecoder, mapDecoderOption, mapDecoders } from "./codec/tlsDecoder.js";
|
|
3
|
-
import {
|
|
4
|
-
import { decodeVarLenData,
|
|
5
|
-
import {
|
|
3
|
+
import { contramapBufferEncoder, contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
|
|
4
|
+
import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
|
|
5
|
+
import { contentTypeEncoder, decodeContentType } from "./contentType.js";
|
|
6
6
|
import { expandWithLabel } from "./crypto/kdf.js";
|
|
7
7
|
import { enumNumberToKey } from "./util/enumHelpers.js";
|
|
8
8
|
const senderTypes = {
|
|
@@ -11,19 +11,21 @@ const senderTypes = {
|
|
|
11
11
|
new_member_proposal: 3,
|
|
12
12
|
new_member_commit: 4,
|
|
13
13
|
};
|
|
14
|
-
export const
|
|
14
|
+
export const senderTypeEncoder = contramapBufferEncoder(uint8Encoder, (t) => senderTypes[t]);
|
|
15
|
+
export const encodeSenderType = encode(senderTypeEncoder);
|
|
15
16
|
export const decodeSenderType = mapDecoderOption(decodeUint8, enumNumberToKey(senderTypes));
|
|
16
|
-
export const
|
|
17
|
+
export const senderEncoder = (s) => {
|
|
17
18
|
switch (s.senderType) {
|
|
18
19
|
case "member":
|
|
19
|
-
return
|
|
20
|
+
return contramapBufferEncoders([senderTypeEncoder, uint32Encoder], (s) => [s.senderType, s.leafIndex])(s);
|
|
20
21
|
case "external":
|
|
21
|
-
return
|
|
22
|
+
return contramapBufferEncoders([senderTypeEncoder, uint32Encoder], (s) => [s.senderType, s.senderIndex])(s);
|
|
22
23
|
case "new_member_proposal":
|
|
23
24
|
case "new_member_commit":
|
|
24
|
-
return
|
|
25
|
+
return senderTypeEncoder(s.senderType);
|
|
25
26
|
}
|
|
26
27
|
};
|
|
28
|
+
export const encodeSender = encode(senderEncoder);
|
|
27
29
|
export const decodeSender = flatMapDecoder(decodeSenderType, (senderType) => {
|
|
28
30
|
switch (senderType) {
|
|
29
31
|
case "member":
|
|
@@ -49,24 +51,33 @@ export const decodeSender = flatMapDecoder(decodeSenderType, (senderType) => {
|
|
|
49
51
|
export function getSenderLeafNodeIndex(sender) {
|
|
50
52
|
return sender.senderType === "member" ? sender.leafIndex : undefined;
|
|
51
53
|
}
|
|
52
|
-
export const
|
|
54
|
+
export const reuseGuardEncoder = (g) => [
|
|
55
|
+
4,
|
|
56
|
+
(offset, buffer) => {
|
|
57
|
+
const view = new Uint8Array(buffer, offset, 4);
|
|
58
|
+
view.set(g, 0);
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
export const encodeReuseGuard = encode(reuseGuardEncoder);
|
|
53
62
|
export const decodeReuseGuard = (b, offset) => {
|
|
54
63
|
return [b.subarray(offset, offset + 4), 4];
|
|
55
64
|
};
|
|
56
|
-
export const
|
|
65
|
+
export const senderDataEncoder = contramapBufferEncoders([uint32Encoder, uint32Encoder, reuseGuardEncoder], (s) => [s.leafIndex, s.generation, s.reuseGuard]);
|
|
66
|
+
export const encodeSenderData = encode(senderDataEncoder);
|
|
57
67
|
export const decodeSenderData = mapDecoders([decodeUint32, decodeUint32, decodeReuseGuard], (leafIndex, generation, reuseGuard) => ({
|
|
58
68
|
leafIndex,
|
|
59
69
|
generation,
|
|
60
70
|
reuseGuard,
|
|
61
71
|
}));
|
|
62
|
-
export const
|
|
72
|
+
export const senderDataAADEncoder = contramapBufferEncoders([varLenDataEncoder, uint64Encoder, contentTypeEncoder], (aad) => [aad.groupId, aad.epoch, aad.contentType]);
|
|
73
|
+
export const encodeSenderDataAAD = encode(senderDataAADEncoder);
|
|
63
74
|
export const decodeSenderDataAAD = mapDecoders([decodeVarLenData, decodeUint64, decodeContentType], (groupId, epoch, contentType) => ({
|
|
64
75
|
groupId,
|
|
65
76
|
epoch,
|
|
66
77
|
contentType,
|
|
67
78
|
}));
|
|
68
79
|
export function sampleCiphertext(cs, ciphertext) {
|
|
69
|
-
return ciphertext.length < cs.kdf.size ? ciphertext : ciphertext.
|
|
80
|
+
return ciphertext.length < cs.kdf.size ? ciphertext : ciphertext.subarray(0, cs.kdf.size);
|
|
70
81
|
}
|
|
71
82
|
export async function expandSenderDataKey(cs, senderDataSecret, ciphertext) {
|
|
72
83
|
const ciphertextSample = sampleCiphertext(cs, ciphertext);
|
package/dist/sender.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../src/sender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../src/sender.ts"],"names":[],"mappings":"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"}
|
package/dist/transcriptHash.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 { Hash } from "./crypto/hash.js";
|
|
4
4
|
import { FramedContentCommit } from "./framedContent.js";
|
|
5
5
|
import { WireformatName } from "./wireformat.js";
|
|
@@ -8,6 +8,7 @@ export interface ConfirmedTranscriptHashInput {
|
|
|
8
8
|
content: FramedContentCommit;
|
|
9
9
|
signature: Uint8Array;
|
|
10
10
|
}
|
|
11
|
+
export declare const confirmedTranscriptHashInputEncoder: BufferEncoder<ConfirmedTranscriptHashInput>;
|
|
11
12
|
export declare const encodeConfirmedTranscriptHashInput: Encoder<ConfirmedTranscriptHashInput>;
|
|
12
13
|
export declare const decodeConfirmedTranscriptHashInput: Decoder<ConfirmedTranscriptHashInput>;
|
|
13
14
|
export declare function createConfirmedHash(interimTranscriptHash: Uint8Array, input: ConfirmedTranscriptHashInput, hash: Hash): Promise<Uint8Array>;
|
package/dist/transcriptHash.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { mapDecodersOption } from "./codec/tlsDecoder.js";
|
|
2
|
-
import {
|
|
3
|
-
import { decodeVarLenData,
|
|
4
|
-
import { decodeFramedContent,
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export const encodeConfirmedTranscriptHashInput =
|
|
2
|
+
import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
|
|
3
|
+
import { decodeVarLenData, varLenDataEncoder } from "./codec/variableLength.js";
|
|
4
|
+
import { decodeFramedContent, framedContentEncoder } from "./framedContent.js";
|
|
5
|
+
import { decodeWireformat, wireformatEncoder } from "./wireformat.js";
|
|
6
|
+
export const confirmedTranscriptHashInputEncoder = contramapBufferEncoders([wireformatEncoder, framedContentEncoder, varLenDataEncoder], (input) => [input.wireformat, input.content, input.signature]);
|
|
7
|
+
export const encodeConfirmedTranscriptHashInput = encode(confirmedTranscriptHashInputEncoder);
|
|
8
8
|
export const decodeConfirmedTranscriptHashInput = mapDecodersOption([decodeWireformat, decodeFramedContent, decodeVarLenData], (wireformat, content, signature) => {
|
|
9
9
|
if (content.contentType === "commit")
|
|
10
10
|
return {
|
|
@@ -16,9 +16,19 @@ export const decodeConfirmedTranscriptHashInput = mapDecodersOption([decodeWiref
|
|
|
16
16
|
return undefined;
|
|
17
17
|
});
|
|
18
18
|
export function createConfirmedHash(interimTranscriptHash, input, hash) {
|
|
19
|
-
|
|
19
|
+
const [len, write] = confirmedTranscriptHashInputEncoder(input);
|
|
20
|
+
const buf = new ArrayBuffer(interimTranscriptHash.byteLength + len);
|
|
21
|
+
const arr = new Uint8Array(buf);
|
|
22
|
+
arr.set(interimTranscriptHash, 0);
|
|
23
|
+
write(interimTranscriptHash.byteLength, buf);
|
|
24
|
+
return hash.digest(arr);
|
|
20
25
|
}
|
|
21
26
|
export function createInterimHash(confirmedHash, confirmationTag, hash) {
|
|
22
|
-
|
|
27
|
+
const [len, write] = varLenDataEncoder(confirmationTag);
|
|
28
|
+
const buf = new ArrayBuffer(confirmedHash.byteLength + len);
|
|
29
|
+
const arr = new Uint8Array(buf);
|
|
30
|
+
arr.set(confirmedHash, 0);
|
|
31
|
+
write(confirmedHash.byteLength, buf);
|
|
32
|
+
return hash.digest(arr);
|
|
23
33
|
}
|
|
24
34
|
//# sourceMappingURL=transcriptHash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcriptHash.js","sourceRoot":"","sources":["../src/transcriptHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transcriptHash.js","sourceRoot":"","sources":["../src/transcriptHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAiB,MAAM,EAAW,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAE/E,OAAO,EAAE,mBAAmB,EAAuB,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACnG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAkB,MAAM,iBAAiB,CAAA;AAQrF,MAAM,CAAC,MAAM,mCAAmC,GAAgD,uBAAuB,CACrH,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAC5D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAU,CACvE,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAA0C,MAAM,CAC7F,mCAAmC,CACpC,CAAA;AAED,MAAM,CAAC,MAAM,kCAAkC,GAA0C,iBAAiB,CACxG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EACzD,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IACjC,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ;QAClC,OAAO;YACL,UAAU;YACV,OAAO;YACP,SAAS;SACV,CAAA;;QACE,OAAO,SAAS,CAAA;AACvB,CAAC,CACF,CAAA;AAED,MAAM,UAAU,mBAAmB,CACjC,qBAAiC,EACjC,KAAmC,EACnC,IAAU;IAEV,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,mCAAmC,CAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,qBAAqB,CAAC,UAAU,GAAG,GAAG,CAAC,CAAA;IACnE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAA;IACjC,KAAK,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAE5C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EACzB,eAA2B,EAC3B,IAAU;IAEV,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAA;IACvD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;IACzB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC"}
|
package/dist/treeHash.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 { Hash } from "./crypto/hash.js";
|
|
4
4
|
import { LeafNode } from "./leafNode.js";
|
|
5
5
|
import { ParentNode } from "./parentNode.js";
|
|
@@ -17,10 +17,13 @@ type ParentNodeHashInput = {
|
|
|
17
17
|
leftHash: Uint8Array;
|
|
18
18
|
rightHash: Uint8Array;
|
|
19
19
|
};
|
|
20
|
+
export declare const leafNodeHashInputEncoder: BufferEncoder<LeafNodeHashInput>;
|
|
20
21
|
export declare const encodeLeafNodeHashInput: Encoder<LeafNodeHashInput>;
|
|
21
22
|
export declare const decodeLeafNodeHashInput: Decoder<LeafNodeHashInput>;
|
|
23
|
+
export declare const parentNodeHashInputEncoder: BufferEncoder<ParentNodeHashInput>;
|
|
22
24
|
export declare const encodeParentNodeHashInput: Encoder<ParentNodeHashInput>;
|
|
23
25
|
export declare const decodeParentNodeHashInput: Decoder<ParentNodeHashInput>;
|
|
26
|
+
export declare const treeHashInputEncoder: BufferEncoder<TreeHashInput>;
|
|
24
27
|
export declare const encodeTreeHashInput: Encoder<TreeHashInput>;
|
|
25
28
|
export declare const decodeTreeHashInput: Decoder<TreeHashInput>;
|
|
26
29
|
export declare function treeHashRoot(tree: RatchetTree, h: Hash): Promise<Uint8Array>;
|
package/dist/treeHash.js
CHANGED
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { uint32Encoder, decodeUint32 } from "./codec/number.js";
|
|
2
|
+
import { optionalEncoder, decodeOptional } from "./codec/optional.js";
|
|
3
3
|
import { mapDecoders, flatMapDecoder } from "./codec/tlsDecoder.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { contramapBufferEncoders, encode } from "./codec/tlsEncoder.js";
|
|
5
|
+
import { varLenDataEncoder, decodeVarLenData } from "./codec/variableLength.js";
|
|
6
|
+
import { leafNodeEncoder, decodeLeafNode } from "./leafNode.js";
|
|
7
7
|
import { InternalError } from "./mlsError.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { nodeTypeEncoder, decodeNodeType } from "./nodeType.js";
|
|
9
|
+
import { parentNodeEncoder, decodeParentNode } from "./parentNode.js";
|
|
10
10
|
import { rootFromNodeWidth, isLeaf, nodeToLeafIndex, left, right } from "./treemath.js";
|
|
11
|
-
export const
|
|
11
|
+
export const leafNodeHashInputEncoder = contramapBufferEncoders([nodeTypeEncoder, uint32Encoder, optionalEncoder(leafNodeEncoder)], (input) => [input.nodeType, input.leafIndex, input.leafNode]);
|
|
12
|
+
export const encodeLeafNodeHashInput = encode(leafNodeHashInputEncoder);
|
|
12
13
|
export const decodeLeafNodeHashInput = mapDecoders([decodeUint32, decodeOptional(decodeLeafNode)], (leafIndex, leafNode) => ({
|
|
13
14
|
nodeType: "leaf",
|
|
14
15
|
leafIndex,
|
|
15
16
|
leafNode,
|
|
16
17
|
}));
|
|
17
|
-
export const
|
|
18
|
+
export const parentNodeHashInputEncoder = contramapBufferEncoders([nodeTypeEncoder, optionalEncoder(parentNodeEncoder), varLenDataEncoder, varLenDataEncoder], (input) => [input.nodeType, input.parentNode, input.leftHash, input.rightHash]);
|
|
19
|
+
export const encodeParentNodeHashInput = encode(parentNodeHashInputEncoder);
|
|
18
20
|
export const decodeParentNodeHashInput = mapDecoders([decodeOptional(decodeParentNode), decodeVarLenData, decodeVarLenData], (parentNode, leftHash, rightHash) => ({
|
|
19
21
|
nodeType: "parent",
|
|
20
22
|
parentNode,
|
|
21
23
|
leftHash,
|
|
22
24
|
rightHash,
|
|
23
25
|
}));
|
|
24
|
-
export const
|
|
26
|
+
export const treeHashInputEncoder = (input) => {
|
|
25
27
|
switch (input.nodeType) {
|
|
26
28
|
case "leaf":
|
|
27
|
-
return
|
|
29
|
+
return leafNodeHashInputEncoder(input);
|
|
28
30
|
case "parent":
|
|
29
|
-
return
|
|
31
|
+
return parentNodeHashInputEncoder(input);
|
|
30
32
|
}
|
|
31
33
|
};
|
|
34
|
+
export const encodeTreeHashInput = encode(treeHashInputEncoder);
|
|
32
35
|
export const decodeTreeHashInput = flatMapDecoder(decodeNodeType, (nodeType) => {
|
|
33
36
|
switch (nodeType) {
|
|
34
37
|
case "leaf":
|
|
@@ -45,7 +48,7 @@ export async function treeHash(tree, subtreeIndex, h) {
|
|
|
45
48
|
const leafNode = tree[subtreeIndex];
|
|
46
49
|
if (leafNode?.nodeType === "parent")
|
|
47
50
|
throw new InternalError("Somehow found parent node in leaf position");
|
|
48
|
-
const input =
|
|
51
|
+
const input = encode(leafNodeHashInputEncoder)({
|
|
49
52
|
nodeType: "leaf",
|
|
50
53
|
leafIndex: nodeToLeafIndex(subtreeIndex),
|
|
51
54
|
leafNode: leafNode?.leaf,
|
|
@@ -64,7 +67,7 @@ export async function treeHash(tree, subtreeIndex, h) {
|
|
|
64
67
|
leftHash: leftHash,
|
|
65
68
|
rightHash: rightHash,
|
|
66
69
|
};
|
|
67
|
-
return await h.digest(
|
|
70
|
+
return await h.digest(encode(parentNodeHashInputEncoder)(input));
|
|
68
71
|
}
|
|
69
72
|
}
|
|
70
73
|
//# sourceMappingURL=treeHash.js.map
|
package/dist/treeHash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeHash.js","sourceRoot":"","sources":["../src/treeHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"treeHash.js","sourceRoot":"","sources":["../src/treeHash.ts"],"names":[],"mappings":"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"}
|