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
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
export function toJsonString(clientState) {
|
|
2
|
+
const { clientConfig, ...state } = clientState;
|
|
3
|
+
const stateWithSerializableMap = {
|
|
4
|
+
...state,
|
|
5
|
+
historicalReceiverData: Array.from(state.historicalReceiverData.entries()).map(([epoch, data]) => [
|
|
6
|
+
{
|
|
7
|
+
epoch: epoch.toString(),
|
|
8
|
+
},
|
|
9
|
+
data,
|
|
10
|
+
]),
|
|
11
|
+
};
|
|
12
|
+
return JSON.stringify(stateWithSerializableMap, (_key, value) => {
|
|
13
|
+
// Mark BigInt values with a special wrapper
|
|
14
|
+
if (typeof value === "bigint") {
|
|
15
|
+
return { "@@bigint": value.toString() };
|
|
16
|
+
}
|
|
17
|
+
// Mark empty Uint8Arrays with a special marker
|
|
18
|
+
if (value instanceof Uint8Array) {
|
|
19
|
+
if (value.length === 0) {
|
|
20
|
+
return { "@@uint8array": true, length: 0, data: [] };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function isValidGroupActiveState(state) {
|
|
27
|
+
if (typeof state !== "object" || state === null)
|
|
28
|
+
return false;
|
|
29
|
+
const s = state;
|
|
30
|
+
if (typeof s.kind !== "string")
|
|
31
|
+
return false;
|
|
32
|
+
if (s.kind === "active")
|
|
33
|
+
return true;
|
|
34
|
+
if (s.kind === "suspendedPendingReinit")
|
|
35
|
+
return "reinit" in s && typeof s.reinit === "object";
|
|
36
|
+
if (s.kind === "removedFromGroup")
|
|
37
|
+
return true;
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
function isValidRatchetTree(tree) {
|
|
41
|
+
if (!Array.isArray(tree))
|
|
42
|
+
return false;
|
|
43
|
+
return tree.every((node) => node === null || (typeof node === "object" && node !== null));
|
|
44
|
+
}
|
|
45
|
+
function isValidGroupContext(ctx) {
|
|
46
|
+
if (typeof ctx !== "object" || ctx === null)
|
|
47
|
+
return false;
|
|
48
|
+
const c = ctx;
|
|
49
|
+
return ("version" in c &&
|
|
50
|
+
"cipherSuite" in c &&
|
|
51
|
+
"groupId" in c &&
|
|
52
|
+
"epoch" in c &&
|
|
53
|
+
"treeHash" in c &&
|
|
54
|
+
"confirmedTranscriptHash" in c &&
|
|
55
|
+
"extensions" in c);
|
|
56
|
+
}
|
|
57
|
+
function isValidKeySchedule(ks) {
|
|
58
|
+
if (typeof ks !== "object" || ks === null)
|
|
59
|
+
return false;
|
|
60
|
+
const k = ks;
|
|
61
|
+
return "epochAuthenticator" in k && typeof k.epochAuthenticator === "object";
|
|
62
|
+
}
|
|
63
|
+
function isValidPrivateKeyPath(pkp) {
|
|
64
|
+
if (typeof pkp !== "object" || pkp === null)
|
|
65
|
+
return false;
|
|
66
|
+
const p = pkp;
|
|
67
|
+
return "leafIndex" in p && typeof p.leafIndex === "number";
|
|
68
|
+
}
|
|
69
|
+
function isValidUnappliedProposals(uap) {
|
|
70
|
+
return uap !== null && typeof uap === "object";
|
|
71
|
+
}
|
|
72
|
+
function isValidHistoricalReceiverData(hrd) {
|
|
73
|
+
if (!Array.isArray(hrd))
|
|
74
|
+
return false;
|
|
75
|
+
return hrd.every((item) => Array.isArray(item) && item.length === 2 && typeof item[0] === "object" && "epoch" in item[0]);
|
|
76
|
+
}
|
|
77
|
+
function deepConvertUint8Arrays(obj, depth = 0, maxDepth = 20) {
|
|
78
|
+
if (depth > maxDepth)
|
|
79
|
+
return obj;
|
|
80
|
+
if (obj === null || obj === undefined)
|
|
81
|
+
return obj;
|
|
82
|
+
if (obj instanceof Uint8Array)
|
|
83
|
+
return obj;
|
|
84
|
+
// Check for the special BigInt marker
|
|
85
|
+
if (obj && typeof obj === "object" && "@@bigint" in obj) {
|
|
86
|
+
const objRecord = obj;
|
|
87
|
+
if (typeof objRecord["@@bigint"] === "string") {
|
|
88
|
+
return BigInt(objRecord["@@bigint"]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Check for the special empty Uint8Array marker
|
|
92
|
+
if (obj && typeof obj === "object" && "@@uint8array" in obj) {
|
|
93
|
+
const objRecord = obj;
|
|
94
|
+
if (objRecord["@@uint8array"] === true) {
|
|
95
|
+
return new Uint8Array();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Handle non-empty Uint8Array-like objects
|
|
99
|
+
if (obj && typeof obj === "object" && !Array.isArray(obj)) {
|
|
100
|
+
const objRecord = obj;
|
|
101
|
+
const keys = Object.keys(objRecord);
|
|
102
|
+
if (keys.length > 0 && !("@@uint8array" in objRecord) && !("@@bigint" in objRecord)) {
|
|
103
|
+
// Check if all keys are numeric strings and all values are 0-255 numbers
|
|
104
|
+
const allNumericKeys = keys.every((k) => /^\d+$/.test(k));
|
|
105
|
+
if (allNumericKeys) {
|
|
106
|
+
const allValidValues = keys.every((k) => Object.prototype.hasOwnProperty.call(objRecord, k) &&
|
|
107
|
+
typeof objRecord[k] === "number" &&
|
|
108
|
+
objRecord[k] >= 0 &&
|
|
109
|
+
objRecord[k] <= 255);
|
|
110
|
+
if (allValidValues) {
|
|
111
|
+
const numKeys = keys.map((k) => parseInt(k, 10));
|
|
112
|
+
const values = numKeys.sort((a, b) => a - b).map((n) => objRecord[String(n)]);
|
|
113
|
+
return new Uint8Array(values);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (Array.isArray(obj)) {
|
|
119
|
+
return obj.map((item) => deepConvertUint8Arrays(item, depth + 1, maxDepth));
|
|
120
|
+
}
|
|
121
|
+
if (typeof obj === "object") {
|
|
122
|
+
const objRecord = obj;
|
|
123
|
+
const result = {};
|
|
124
|
+
for (const key in objRecord) {
|
|
125
|
+
if (Object.prototype.hasOwnProperty.call(objRecord, key)) {
|
|
126
|
+
result[key] = deepConvertUint8Arrays(objRecord[key], depth + 1, maxDepth);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
return obj;
|
|
132
|
+
}
|
|
133
|
+
export function fromJsonString(s, config) {
|
|
134
|
+
try {
|
|
135
|
+
const parsed = JSON.parse(s);
|
|
136
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
137
|
+
return undefined;
|
|
138
|
+
const parsedRecord = parsed;
|
|
139
|
+
if (!("groupActiveState" in parsedRecord) ||
|
|
140
|
+
!("privatePath" in parsedRecord) ||
|
|
141
|
+
!("ratchetTree" in parsedRecord) ||
|
|
142
|
+
!("keySchedule" in parsedRecord) ||
|
|
143
|
+
!("groupContext" in parsedRecord) ||
|
|
144
|
+
!("unappliedProposals" in parsedRecord) ||
|
|
145
|
+
!("signaturePrivateKey" in parsedRecord) ||
|
|
146
|
+
!("confirmationTag" in parsedRecord) ||
|
|
147
|
+
!("historicalReceiverData" in parsedRecord) ||
|
|
148
|
+
!("secretTree" in parsedRecord)) {
|
|
149
|
+
return undefined;
|
|
150
|
+
}
|
|
151
|
+
const converted = deepConvertUint8Arrays(parsedRecord);
|
|
152
|
+
if (!isValidGroupActiveState(converted.groupActiveState))
|
|
153
|
+
return undefined;
|
|
154
|
+
if (!isValidPrivateKeyPath(converted.privatePath))
|
|
155
|
+
return undefined;
|
|
156
|
+
if (!isValidRatchetTree(converted.ratchetTree))
|
|
157
|
+
return undefined;
|
|
158
|
+
if (!isValidKeySchedule(converted.keySchedule))
|
|
159
|
+
return undefined;
|
|
160
|
+
if (!isValidGroupContext(converted.groupContext))
|
|
161
|
+
return undefined;
|
|
162
|
+
if (!isValidUnappliedProposals(converted.unappliedProposals))
|
|
163
|
+
return undefined;
|
|
164
|
+
if (!isValidHistoricalReceiverData(converted.historicalReceiverData))
|
|
165
|
+
return undefined;
|
|
166
|
+
if (!(converted.signaturePrivateKey instanceof Uint8Array || typeof converted.signaturePrivateKey === "object")) {
|
|
167
|
+
return undefined;
|
|
168
|
+
}
|
|
169
|
+
if (!(converted.confirmationTag instanceof Uint8Array || typeof converted.confirmationTag === "object")) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
// Reconstruct Map<bigint, EpochReceiverData>
|
|
173
|
+
const historicalReceiverData = new Map();
|
|
174
|
+
if (Array.isArray(converted.historicalReceiverData)) {
|
|
175
|
+
for (const [keyObj, data] of converted.historicalReceiverData) {
|
|
176
|
+
if (keyObj && typeof keyObj === "object" && "epoch" in keyObj) {
|
|
177
|
+
const keyObjRecord = keyObj;
|
|
178
|
+
if (typeof keyObjRecord.epoch === "bigint") {
|
|
179
|
+
historicalReceiverData.set(keyObjRecord.epoch, data);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return { clientConfig: config, ...converted, historicalReceiverData };
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/codec/json.ts"],"names":[],"mappings":"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"}
|
package/dist/codec/number.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Decoder } from "./tlsDecoder.js";
|
|
2
|
-
import { Encoder } from "./tlsEncoder.js";
|
|
2
|
+
import { BufferEncoder, Encoder } from "./tlsEncoder.js";
|
|
3
|
+
export declare const uint8Encoder: BufferEncoder<number>;
|
|
3
4
|
export declare const encodeUint8: Encoder<number>;
|
|
4
5
|
export declare const decodeUint8: Decoder<number>;
|
|
6
|
+
export declare const uint16Encoder: BufferEncoder<number>;
|
|
5
7
|
export declare const encodeUint16: Encoder<number>;
|
|
6
8
|
export declare const decodeUint16: Decoder<number>;
|
|
9
|
+
export declare const uint32Encoder: BufferEncoder<number>;
|
|
7
10
|
export declare const encodeUint32: Encoder<number>;
|
|
8
11
|
export declare const decodeUint32: Decoder<number>;
|
|
12
|
+
export declare const uint64Encoder: BufferEncoder<bigint>;
|
|
9
13
|
export declare const encodeUint64: Encoder<bigint>;
|
|
10
14
|
export declare const decodeUint64: Decoder<bigint>;
|
package/dist/codec/number.js
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { encode } from "./tlsEncoder.js";
|
|
2
|
+
export const uint8Encoder = (n) => [
|
|
3
|
+
1,
|
|
4
|
+
(offset, buffer) => {
|
|
5
|
+
const view = new DataView(buffer);
|
|
6
|
+
view.setUint8(offset, n);
|
|
7
|
+
},
|
|
8
|
+
];
|
|
9
|
+
export const encodeUint8 = encode(uint8Encoder);
|
|
7
10
|
export const decodeUint8 = (b, offset) => {
|
|
8
11
|
const value = b.at(offset);
|
|
9
12
|
return value !== undefined ? [value, 1] : undefined;
|
|
10
13
|
};
|
|
11
|
-
export const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
14
|
+
export const uint16Encoder = (n) => [
|
|
15
|
+
2,
|
|
16
|
+
(offset, buffer) => {
|
|
17
|
+
const view = new DataView(buffer);
|
|
18
|
+
view.setUint16(offset, n);
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
export const encodeUint16 = encode(uint16Encoder);
|
|
17
22
|
export const decodeUint16 = (b, offset) => {
|
|
18
23
|
const view = new DataView(b.buffer, b.byteOffset, b.byteLength);
|
|
19
24
|
try {
|
|
@@ -23,12 +28,14 @@ export const decodeUint16 = (b, offset) => {
|
|
|
23
28
|
return undefined;
|
|
24
29
|
}
|
|
25
30
|
};
|
|
26
|
-
export const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
31
|
+
export const uint32Encoder = (n) => [
|
|
32
|
+
4,
|
|
33
|
+
(offset, buffer) => {
|
|
34
|
+
const view = new DataView(buffer);
|
|
35
|
+
view.setUint32(offset, n);
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
export const encodeUint32 = encode(uint32Encoder);
|
|
32
39
|
export const decodeUint32 = (b, offset) => {
|
|
33
40
|
const view = new DataView(b.buffer, b.byteOffset, b.byteLength);
|
|
34
41
|
try {
|
|
@@ -38,12 +45,14 @@ export const decodeUint32 = (b, offset) => {
|
|
|
38
45
|
return undefined;
|
|
39
46
|
}
|
|
40
47
|
};
|
|
41
|
-
export const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
48
|
+
export const uint64Encoder = (n) => [
|
|
49
|
+
8,
|
|
50
|
+
(offset, buffer) => {
|
|
51
|
+
const view = new DataView(buffer);
|
|
52
|
+
view.setBigUint64(offset, n);
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
export const encodeUint64 = encode(uint64Encoder);
|
|
47
56
|
export const decodeUint64 = (b, offset) => {
|
|
48
57
|
const view = new DataView(b.buffer, b.byteOffset, b.byteLength);
|
|
49
58
|
try {
|
package/dist/codec/number.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/codec/number.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/codec/number.ts"],"names":[],"mappings":"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"}
|
package/dist/codec/optional.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Decoder } from "./tlsDecoder.js";
|
|
2
|
-
import {
|
|
3
|
-
export declare function
|
|
2
|
+
import { BufferEncoder } from "./tlsEncoder.js";
|
|
3
|
+
export declare function optionalEncoder<T>(encodeT: BufferEncoder<T>): BufferEncoder<T | undefined>;
|
|
4
4
|
export declare function decodeOptional<T>(decodeT: Decoder<T>): Decoder<T | undefined>;
|
package/dist/codec/optional.js
CHANGED
|
@@ -1,7 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { decodeUint8 } from "./number.js";
|
|
2
|
+
export function optionalEncoder(encodeT) {
|
|
3
|
+
return (t) => {
|
|
4
|
+
if (t) {
|
|
5
|
+
const [len, write] = encodeT(t);
|
|
6
|
+
return [
|
|
7
|
+
len + 1,
|
|
8
|
+
(offset, buffer) => {
|
|
9
|
+
const view = new DataView(buffer);
|
|
10
|
+
view.setUint8(offset, 0x1);
|
|
11
|
+
write(offset + 1, buffer);
|
|
12
|
+
},
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return [
|
|
17
|
+
1,
|
|
18
|
+
(offset, buffer) => {
|
|
19
|
+
const view = new DataView(buffer);
|
|
20
|
+
view.setUint8(offset, 0x0);
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
};
|
|
5
25
|
}
|
|
6
26
|
export function decodeOptional(decodeT) {
|
|
7
27
|
return (b, offset) => {
|
|
@@ -15,7 +35,4 @@ export function decodeOptional(decodeT) {
|
|
|
15
35
|
}
|
|
16
36
|
};
|
|
17
37
|
}
|
|
18
|
-
function prependPresenceOctet(v) {
|
|
19
|
-
return concatUint8Arrays(encodeUint8(0x1), v);
|
|
20
|
-
}
|
|
21
38
|
//# sourceMappingURL=optional.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/codec/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/codec/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAIzC,MAAM,UAAU,eAAe,CAAI,OAAyB;IAC1D,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAC/B,OAAO;gBACL,GAAG,GAAG,CAAC;gBACP,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBACjB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;oBACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;oBAC1B,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;gBAC3B,CAAC;aACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,CAAC;gBACD,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBACjB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;oBACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAC5B,CAAC;aACF,CAAA;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,OAAmB;IACnD,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACnB,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACjD,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;YACrC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACvB,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export type Encoder<T> = (t: T) => Uint8Array;
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export declare function
|
|
2
|
+
export type BufferEncoder<T> = (t: T) => [number, (offset: number, buffer: ArrayBuffer) => void];
|
|
3
|
+
export declare function encode<T>(enc: BufferEncoder<T>): Encoder<T>;
|
|
4
|
+
export declare function composeBufferEncoder<T, U>(encT: BufferEncoder<T>, encU: BufferEncoder<U>): BufferEncoder<[T, U]>;
|
|
5
|
+
export declare function contramapBufferEncoder<T, U>(enc: BufferEncoder<T>, f: (u: U) => Readonly<T>): BufferEncoder<U>;
|
|
6
|
+
export declare function contramapBufferEncoders<T extends unknown[], R>(encoders: {
|
|
7
|
+
[K in keyof T]: BufferEncoder<T[K]>;
|
|
8
|
+
}, toTuple: (input: R) => T): BufferEncoder<R>;
|
|
9
|
+
export declare function composeBufferEncoders<T extends unknown[]>(encoders: {
|
|
10
|
+
[K in keyof T]: BufferEncoder<T[K]>;
|
|
11
|
+
}): BufferEncoder<T>;
|
|
12
|
+
export declare const encVoid: [number, (offset: number, buffer: ArrayBuffer) => void];
|
package/dist/codec/tlsEncoder.js
CHANGED
|
@@ -1,29 +1,47 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function encode(enc) {
|
|
2
|
+
return (t) => {
|
|
3
|
+
const [len, write] = enc(t);
|
|
4
|
+
const buf = new ArrayBuffer(len);
|
|
5
|
+
write(0, buf);
|
|
6
|
+
return new Uint8Array(buf);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function composeBufferEncoder(encT, encU) {
|
|
10
|
+
return ([t, u]) => {
|
|
11
|
+
const [lenT, writeT] = encT(t);
|
|
12
|
+
const [lenU, writeU] = encU(u);
|
|
13
|
+
return [
|
|
14
|
+
lenT + lenU,
|
|
15
|
+
(offset, buffer) => {
|
|
16
|
+
writeT(offset, buffer);
|
|
17
|
+
writeU(offset + lenT, buffer);
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function contramapBufferEncoder(enc, f) {
|
|
23
|
+
return (u) => enc(f(u));
|
|
24
|
+
}
|
|
25
|
+
export function contramapBufferEncoders(encoders, toTuple) {
|
|
2
26
|
return (value) => {
|
|
3
27
|
const values = toTuple(value);
|
|
4
|
-
const encodedParts = new Array(values.length);
|
|
5
28
|
let totalLength = 0;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
29
|
+
let writeTotal = (_offset, _buffer) => { };
|
|
30
|
+
for (let i = 0; i < encoders.length; i++) {
|
|
31
|
+
const [len, write] = encoders[i](values[i]);
|
|
32
|
+
const oldFunc = writeTotal;
|
|
33
|
+
const currentLen = totalLength;
|
|
34
|
+
writeTotal = (offset, buffer) => {
|
|
35
|
+
oldFunc(offset, buffer);
|
|
36
|
+
write(offset + currentLen, buffer);
|
|
37
|
+
};
|
|
38
|
+
totalLength += len;
|
|
16
39
|
}
|
|
17
|
-
return
|
|
40
|
+
return [totalLength, writeTotal];
|
|
18
41
|
};
|
|
19
42
|
}
|
|
20
|
-
export function
|
|
21
|
-
return (values) =>
|
|
22
|
-
}
|
|
23
|
-
export function contramapEncoder(enc, f) {
|
|
24
|
-
return (u) => enc(f(u));
|
|
25
|
-
}
|
|
26
|
-
export function encodeVoid() {
|
|
27
|
-
return () => new Uint8Array();
|
|
43
|
+
export function composeBufferEncoders(encoders) {
|
|
44
|
+
return (values) => contramapBufferEncoders(encoders, (t) => t)(values);
|
|
28
45
|
}
|
|
46
|
+
export const encVoid = [0, () => { }];
|
|
29
47
|
//# sourceMappingURL=tlsEncoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tlsEncoder.js","sourceRoot":"","sources":["../../src/codec/tlsEncoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tlsEncoder.js","sourceRoot":"","sources":["../../src/codec/tlsEncoder.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,MAAM,CAAI,GAAqB;IAC7C,OAAO,CAAC,CAAI,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;QAChC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAO,IAAsB,EAAE,IAAsB;IACvF,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAChB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAE9B,OAAO;YACL,IAAI,GAAG,IAAI;YACX,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACtB,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,CAAA;YAC/B,CAAC;SACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAO,GAAqB,EAAE,CAAwB;IAC1F,OAAO,CAAC,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAAiD,EACjD,OAAwB;IAExB,OAAO,CAAC,KAAQ,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,WAAW,GAAG,CAAC,CAAA;QACnB,IAAI,UAAU,GAAG,CAAC,OAAe,EAAE,OAAoB,EAAE,EAAE,GAAE,CAAC,CAAA;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,UAAU,CAAA;YAC1B,MAAM,UAAU,GAAG,WAAW,CAAA;YAC9B,UAAU,GAAG,CAAC,MAAc,EAAE,MAAmB,EAAE,EAAE;gBACnD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACvB,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE,MAAM,CAAC,CAAA;YACpC,CAAC,CAAA;YACD,WAAW,IAAI,GAAG,CAAA;QACpB,CAAC;QACD,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAClC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsB,QAE1D;IACC,OAAO,CAAC,MAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAA4D,CAAC,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Decoder } from "./tlsDecoder.js";
|
|
2
|
-
import {
|
|
3
|
-
export declare const
|
|
4
|
-
export declare function
|
|
2
|
+
import { BufferEncoder } from "./tlsEncoder.js";
|
|
3
|
+
export declare const varLenDataEncoder: BufferEncoder<Uint8Array>;
|
|
4
|
+
export declare function lengthEncoder(len: number): [number, (offset: number, buffer: ArrayBuffer) => void];
|
|
5
5
|
export declare function determineLength(data: Uint8Array, offset?: number): {
|
|
6
6
|
length: number;
|
|
7
7
|
lengthFieldSize: number;
|
|
8
8
|
};
|
|
9
9
|
export declare const decodeVarLenData: Decoder<Uint8Array>;
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function varLenTypeEncoder<T>(enc: BufferEncoder<T>): BufferEncoder<T[]>;
|
|
11
11
|
export declare function decodeVarLenType<T>(dec: Decoder<T>): Decoder<T[]>;
|
|
@@ -1,23 +1,49 @@
|
|
|
1
1
|
import { CodecError } from "../mlsError.js";
|
|
2
|
-
export const
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
export const varLenDataEncoder = (data) => {
|
|
3
|
+
const [len, write] = lengthEncoder(data.length);
|
|
4
|
+
return [
|
|
5
|
+
len + data.length,
|
|
6
|
+
(offset, buffer) => {
|
|
7
|
+
write(offset, buffer);
|
|
8
|
+
const view = new Uint8Array(buffer);
|
|
9
|
+
view.set(data, offset + len);
|
|
10
|
+
},
|
|
11
|
+
];
|
|
8
12
|
};
|
|
9
|
-
export function
|
|
13
|
+
export function lengthEncoder(len) {
|
|
10
14
|
if (len < 64) {
|
|
11
|
-
|
|
12
|
-
|
|
15
|
+
return [
|
|
16
|
+
1,
|
|
17
|
+
(offset, buffer) => {
|
|
18
|
+
// 1-byte length: 00xxxxxx
|
|
19
|
+
const view = new DataView(buffer);
|
|
20
|
+
view.setUint8(offset, len & 0b00111111);
|
|
21
|
+
},
|
|
22
|
+
];
|
|
13
23
|
}
|
|
14
24
|
else if (len < 16384) {
|
|
15
|
-
|
|
16
|
-
|
|
25
|
+
return [
|
|
26
|
+
2,
|
|
27
|
+
(offset, buffer) => {
|
|
28
|
+
// 2-byte length: 01xxxxxx xxxxxxxx
|
|
29
|
+
const view = new DataView(buffer);
|
|
30
|
+
view.setUint8(offset, ((len >> 8) & 0b00111111) | 0b01000000);
|
|
31
|
+
view.setUint8(offset + 1, len & 0xff);
|
|
32
|
+
},
|
|
33
|
+
];
|
|
17
34
|
}
|
|
18
35
|
else if (len < 0x40000000) {
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
return [
|
|
37
|
+
4,
|
|
38
|
+
(offset, buffer) => {
|
|
39
|
+
// 4-byte length: 10xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
|
|
40
|
+
const view = new DataView(buffer);
|
|
41
|
+
view.setUint8(offset, ((len >> 24) & 0b00111111) | 0b10000000);
|
|
42
|
+
view.setUint8(offset + 1, (len >> 16) & 0xff);
|
|
43
|
+
view.setUint8(offset + 2, (len >> 8) & 0xff);
|
|
44
|
+
view.setUint8(offset + 3, len & 0xff);
|
|
45
|
+
},
|
|
46
|
+
];
|
|
21
47
|
}
|
|
22
48
|
else {
|
|
23
49
|
throw new CodecError("Length too large to encode (max is 2^30 - 1)");
|
|
@@ -64,24 +90,28 @@ export const decodeVarLenData = (buf, offset) => {
|
|
|
64
90
|
const data = buf.subarray(offset + lengthFieldSize, offset + totalBytes);
|
|
65
91
|
return [data, totalBytes];
|
|
66
92
|
};
|
|
67
|
-
export function
|
|
93
|
+
export function varLenTypeEncoder(enc) {
|
|
68
94
|
return (data) => {
|
|
69
|
-
|
|
70
|
-
let
|
|
95
|
+
let totalLength = 0;
|
|
96
|
+
let writeTotal = (_offset, _buffer) => { };
|
|
71
97
|
for (let i = 0; i < data.length; i++) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
98
|
+
const [len, write] = enc(data[i]);
|
|
99
|
+
const oldFunc = writeTotal;
|
|
100
|
+
const currentLen = totalLength;
|
|
101
|
+
writeTotal = (offset, buffer) => {
|
|
102
|
+
oldFunc(offset, buffer);
|
|
103
|
+
write(offset + currentLen, buffer);
|
|
104
|
+
};
|
|
105
|
+
totalLength += len;
|
|
75
106
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return result;
|
|
107
|
+
const [headerLength, writeLength] = lengthEncoder(totalLength);
|
|
108
|
+
return [
|
|
109
|
+
headerLength + totalLength,
|
|
110
|
+
(offset, buffer) => {
|
|
111
|
+
writeLength(offset, buffer);
|
|
112
|
+
writeTotal(offset + headerLength, buffer);
|
|
113
|
+
},
|
|
114
|
+
];
|
|
85
115
|
};
|
|
86
116
|
}
|
|
87
117
|
export function decodeVarLenType(dec) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variableLength.js","sourceRoot":"","sources":["../../src/codec/variableLength.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAI3C,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"variableLength.js","sourceRoot":"","sources":["../../src/codec/variableLength.ts"],"names":[],"mappings":"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"}
|