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.
- package/README.md +1 -1
- 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/json.d.ts +4 -0
- package/dist/codec/json.js +190 -0
- package/dist/codec/json.js.map +1 -0
- 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/keyPackage.d.ts +6 -4
- package/dist/keyPackage.js +21 -19
- 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 +6 -6
package/dist/lifetime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifetime.js","sourceRoot":"","sources":["../src/lifetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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
|
|
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 {
|
|
3
|
-
import { decodeGroupInfo,
|
|
4
|
-
import { decodeKeyPackage,
|
|
5
|
-
import { decodePrivateMessage,
|
|
6
|
-
import { decodeProtocolVersion,
|
|
7
|
-
import { decodePublicMessage,
|
|
8
|
-
import { decodeWelcome,
|
|
9
|
-
import { decodeWireformat,
|
|
10
|
-
export const
|
|
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
|
|
23
|
+
return mlsPublicMessageEncoder(mc);
|
|
14
24
|
case "mls_welcome":
|
|
15
|
-
return
|
|
25
|
+
return mlsWelcomeEncoder(mc);
|
|
16
26
|
case "mls_private_message":
|
|
17
|
-
return
|
|
27
|
+
return mlsPrivateMessageEncoder(mc);
|
|
18
28
|
case "mls_group_info":
|
|
19
|
-
return
|
|
29
|
+
return mlsGroupInfoEncoder(mc);
|
|
20
30
|
case "mls_key_package":
|
|
21
|
-
return
|
|
31
|
+
return mlsKeyPackageEncoder(mc);
|
|
22
32
|
}
|
|
23
33
|
};
|
|
24
|
-
export const
|
|
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
|
|
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
|
package/dist/message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../src/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxF,OAAO,EAAE,
|
|
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,
|
|
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,
|
|
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,
|
|
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":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEjF,OAAO,EAEL,sCAAsC,EACtC,4BAA4B,GAC7B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"messageProtection.js","sourceRoot":"","sources":["../src/messageProtection.ts"],"names":[],"mappings":"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"}
|
package/dist/nodeType.d.ts
CHANGED
|
@@ -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,
|
|
1
|
+
import { decodeUint8, uint8Encoder } from "./codec/number.js";
|
|
2
2
|
import { mapDecoderOption } from "./codec/tlsDecoder.js";
|
|
3
|
-
import {
|
|
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
|
|
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
|
package/dist/nodeType.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeType.js","sourceRoot":"","sources":["../src/nodeType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,
|
|
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"}
|
package/dist/parentHash.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 { 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>;
|
package/dist/parentHash.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { mapDecoders } from "./codec/tlsDecoder.js";
|
|
2
|
-
import {
|
|
3
|
-
import { decodeVarLenData,
|
|
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
|
|
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(
|
|
102
|
+
return [await h.digest(encode(parentHashInputEncoder)(input)), parentNodeIndex];
|
|
102
103
|
}
|
|
103
104
|
//# sourceMappingURL=parentHash.js.map
|
package/dist/parentHash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parentHash.js","sourceRoot":"","sources":["../src/parentHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"parentHash.js","sourceRoot":"","sources":["../src/parentHash.ts"],"names":[],"mappings":"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"}
|
package/dist/parentNode.d.ts
CHANGED
|
@@ -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>;
|
package/dist/parentNode.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { uint32Encoder, decodeUint32 } from "./codec/number.js";
|
|
2
2
|
import { mapDecoders } from "./codec/tlsDecoder.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export const
|
|
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,
|
package/dist/parentNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parentNode.js","sourceRoot":"","sources":["../src/parentNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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"}
|
package/dist/presharedkey.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 { 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;
|
package/dist/presharedkey.js
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
import { decodeUint16, decodeUint64, decodeUint8,
|
|
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 {
|
|
4
|
-
import { decodeVarLenData,
|
|
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
|
|
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
|
|
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 =
|
|
21
|
-
const encodePskInfoResumption =
|
|
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
|
|
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
|
|
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
|
|
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",
|
|
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
|
package/dist/presharedkey.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presharedkey.js","sourceRoot":"","sources":["../src/presharedkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"presharedkey.js","sourceRoot":"","sources":["../src/presharedkey.ts"],"names":[],"mappings":"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"}
|
package/dist/privateMessage.d.ts
CHANGED
|
@@ -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>;
|
package/dist/privateMessage.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { decodeUint64,
|
|
1
|
+
import { decodeUint64, uint64Encoder } from "./codec/number.js";
|
|
2
2
|
import { mapDecoders } from "./codec/tlsDecoder.js";
|
|
3
|
-
import {
|
|
4
|
-
import { decodeVarLenData,
|
|
5
|
-
import { decodeCommit,
|
|
6
|
-
import {
|
|
7
|
-
import { decodeFramedContentAuthDataCommit,
|
|
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,
|
|
10
|
-
import { decodeSenderData,
|
|
11
|
-
export const
|
|
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
|
|
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
|
|
51
|
+
export function privateMessageContentEncoder(config) {
|
|
50
52
|
return (msg) => {
|
|
51
53
|
switch (msg.contentType) {
|
|
52
54
|
case "application":
|
|
53
|
-
return encoderWithPadding(
|
|
55
|
+
return encoderWithPadding(contramapBufferEncoders([varLenDataEncoder, framedContentAuthDataEncoder], (m) => [m.applicationData, m.auth]), config)(msg);
|
|
54
56
|
case "proposal":
|
|
55
|
-
return encoderWithPadding(
|
|
57
|
+
return encoderWithPadding(contramapBufferEncoders([proposalEncoder, framedContentAuthDataEncoder], (m) => [m.proposal, m.auth]), config)(msg);
|
|
56
58
|
case "commit":
|
|
57
|
-
return encoderWithPadding(
|
|
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,
|
|
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,
|
|
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
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
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) {
|