keri 0.0.0-dev.bf75350 → 0.0.0-dev.e00c3c1
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/cesr/__main__.d.ts +10 -0
- package/dist/cesr/__main__.js +11 -0
- package/dist/cesr/__main__.js.map +1 -0
- package/dist/cesr/array-utils.d.ts +3 -0
- package/dist/cesr/array-utils.js +29 -0
- package/dist/cesr/array-utils.js.map +1 -0
- package/dist/cesr/attachments-reader.d.ts +10 -0
- package/dist/cesr/attachments-reader.js +273 -0
- package/dist/cesr/attachments-reader.js.map +1 -0
- package/dist/cesr/attachments.d.ts +68 -0
- package/dist/cesr/attachments.js +116 -0
- package/dist/cesr/attachments.js.map +1 -0
- package/dist/cesr/codec.d.ts +26 -0
- package/dist/cesr/codec.js +26 -0
- package/dist/cesr/codec.js.map +1 -0
- package/dist/cesr/codes.d.ts +1208 -0
- package/dist/cesr/codes.js +309 -0
- package/dist/cesr/codes.js.map +1 -0
- package/dist/cesr/counter.d.ts +117 -0
- package/dist/cesr/counter.js +93 -0
- package/dist/cesr/counter.js.map +1 -0
- package/dist/cesr/frame.d.ts +36 -0
- package/dist/cesr/frame.js +97 -0
- package/dist/cesr/frame.js.map +1 -0
- package/dist/cesr/genus.d.ts +21 -0
- package/dist/cesr/genus.js +66 -0
- package/dist/cesr/genus.js.map +1 -0
- package/dist/cesr/groups/generic-map.d.ts +11 -0
- package/dist/cesr/groups/generic-map.js +59 -0
- package/dist/cesr/groups/generic-map.js.map +1 -0
- package/dist/cesr/indexer.d.ts +70 -0
- package/dist/cesr/indexer.js +177 -0
- package/dist/cesr/indexer.js.map +1 -0
- package/dist/cesr/matter.d.ts +163 -0
- package/dist/cesr/matter.js +311 -0
- package/dist/cesr/matter.js.map +1 -0
- package/dist/cesr/message.d.ts +17 -0
- package/dist/cesr/message.js +81 -0
- package/dist/cesr/message.js.map +1 -0
- package/dist/cesr/parse.d.ts +37 -0
- package/dist/cesr/parse.js +137 -0
- package/dist/cesr/parse.js.map +1 -0
- package/dist/cesr/shifting.d.ts +7 -0
- package/dist/cesr/shifting.js +10 -0
- package/dist/cesr/shifting.js.map +1 -0
- package/dist/cesr/version-string.d.ts +35 -0
- package/dist/cesr/version-string.js +147 -0
- package/dist/cesr/version-string.js.map +1 -0
- package/dist/cli/cli.d.ts +5 -0
- package/dist/cli/cli.js +73 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/input.d.ts +1 -0
- package/dist/cli/input.js +22 -0
- package/dist/cli/input.js.map +1 -0
- package/dist/cli/node-cli.d.ts +2 -0
- package/dist/cli/node-cli.js +19 -0
- package/dist/cli/node-cli.js.map +1 -0
- package/dist/controller/controller.d.ts +101 -0
- package/dist/controller/controller.js +549 -0
- package/dist/controller/controller.js.map +1 -0
- package/dist/controller/encrypt.d.ts +45 -0
- package/dist/controller/encrypt.js +120 -0
- package/dist/controller/encrypt.js.map +1 -0
- package/dist/core/credential-event.d.ts +54 -0
- package/dist/core/credential-event.js +28 -0
- package/dist/core/credential-event.js.map +1 -0
- package/dist/core/credential.d.ts +79 -0
- package/dist/core/credential.js +25 -0
- package/dist/core/credential.js.map +1 -0
- package/dist/core/digest.d.ts +1 -0
- package/dist/core/digest.js +7 -0
- package/dist/core/digest.js.map +1 -0
- package/dist/core/endpoint-discovery.d.ts +20 -0
- package/dist/core/endpoint-discovery.js +60 -0
- package/dist/core/endpoint-discovery.js.map +1 -0
- package/dist/core/events.d.ts +12 -0
- package/dist/core/events.js +25 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/kawa.d.ts +17 -0
- package/dist/core/kawa.js +87 -0
- package/dist/core/kawa.js.map +1 -0
- package/dist/core/key-event-log.d.ts +13 -0
- package/dist/core/key-event-log.js +153 -0
- package/dist/core/key-event-log.js.map +1 -0
- package/dist/core/key-event.d.ts +94 -0
- package/dist/core/key-event.js +88 -0
- package/dist/core/key-event.js.map +1 -0
- package/dist/core/keys.d.ts +9 -0
- package/dist/core/keys.js +17 -0
- package/dist/core/keys.js.map +1 -0
- package/dist/core/mailbox-client.d.ts +23 -0
- package/dist/core/mailbox-client.js +59 -0
- package/dist/core/mailbox-client.js.map +1 -0
- package/dist/core/main.d.ts +51 -0
- package/dist/core/main.js +43 -0
- package/dist/core/main.js.map +1 -0
- package/dist/core/receipt-event.d.ts +15 -0
- package/dist/core/receipt-event.js +13 -0
- package/dist/core/receipt-event.js.map +1 -0
- package/dist/core/registry-event.d.ts +26 -0
- package/dist/core/registry-event.js +18 -0
- package/dist/core/registry-event.js.map +1 -0
- package/dist/core/routed-event.d.ts +67 -0
- package/dist/core/routed-event.js +53 -0
- package/dist/core/routed-event.js.map +1 -0
- package/dist/core/said.d.ts +4 -0
- package/dist/core/said.js +26 -0
- package/dist/core/said.js.map +1 -0
- package/dist/core/sign.d.ts +5 -0
- package/dist/core/sign.js +10 -0
- package/dist/core/sign.js.map +1 -0
- package/dist/core/threshold.d.ts +6 -0
- package/dist/core/threshold.js +58 -0
- package/dist/core/threshold.js.map +1 -0
- package/dist/core/verify.d.ts +15 -0
- package/dist/core/verify.js +43 -0
- package/dist/core/verify.js.map +1 -0
- package/dist/encoding/base64.d.ts +4 -0
- package/dist/encoding/base64.js +82 -0
- package/dist/encoding/base64.js.map +1 -0
- package/dist/encoding/utf8.d.ts +2 -0
- package/dist/encoding/utf8.js +9 -0
- package/dist/encoding/utf8.js.map +1 -0
- package/dist/main.d.ts +3 -6
- package/dist/main.js +3 -6
- package/dist/main.js.map +1 -1
- package/dist/nodejs-utils/serve.d.ts +5 -0
- package/dist/nodejs-utils/serve.js +77 -0
- package/dist/nodejs-utils/serve.js.map +1 -0
- package/dist/storage/credential-storage.d.ts +8 -0
- package/dist/storage/credential-storage.js +2 -0
- package/dist/storage/credential-storage.js.map +1 -0
- package/dist/storage/key-event-storage.d.ts +10 -0
- package/dist/storage/key-event-storage.js +2 -0
- package/dist/storage/key-event-storage.js.map +1 -0
- package/dist/storage/mailbox-storage.d.ts +4 -0
- package/dist/storage/mailbox-storage.js +2 -0
- package/dist/storage/mailbox-storage.js.map +1 -0
- package/dist/storage/private-key-storage.d.ts +5 -0
- package/dist/storage/private-key-storage.js +2 -0
- package/dist/storage/private-key-storage.js.map +1 -0
- package/dist/storage/sqlite/node-sqlite.d.ts +12 -0
- package/dist/storage/sqlite/node-sqlite.js +25 -0
- package/dist/storage/sqlite/node-sqlite.js.map +1 -0
- package/dist/storage/sqlite/schema.d.ts +2 -0
- package/dist/storage/sqlite/schema.js +55 -0
- package/dist/storage/sqlite/schema.js.map +1 -0
- package/dist/storage/sqlite/sqlite-database.d.ts +13 -0
- package/dist/storage/sqlite/sqlite-database.js +2 -0
- package/dist/storage/sqlite/sqlite-database.js.map +1 -0
- package/dist/storage/sqlite/storage-sqlite.d.ts +29 -0
- package/dist/storage/sqlite/storage-sqlite.js +213 -0
- package/dist/storage/sqlite/storage-sqlite.js.map +1 -0
- package/dist/witness/main.d.ts +2 -0
- package/dist/witness/main.js +3 -0
- package/dist/witness/main.js.map +1 -0
- package/dist/witness/parser.d.ts +3 -0
- package/dist/witness/parser.js +7 -0
- package/dist/witness/parser.js.map +1 -0
- package/dist/witness/seed.d.ts +1 -0
- package/dist/witness/seed.js +5 -0
- package/dist/witness/seed.js.map +1 -0
- package/dist/witness/witness-router.d.ts +2 -0
- package/dist/witness/witness-router.js +90 -0
- package/dist/witness/witness-router.js.map +1 -0
- package/dist/witness/witness.d.ts +23 -0
- package/dist/witness/witness.js +92 -0
- package/dist/witness/witness.js.map +1 -0
- package/package.json +36 -23
- package/dist/cli/main.d.ts +0 -2
- package/dist/cli/main.js +0 -177
- package/dist/cli/main.js.map +0 -1
- package/dist/client.d.ts +0 -21
- package/dist/client.js +0 -72
- package/dist/client.js.map +0 -1
- package/dist/controller.d.ts +0 -65
- package/dist/controller.js +0 -475
- package/dist/controller.js.map +0 -1
- package/dist/data-type.d.ts +0 -9
- package/dist/data-type.js +0 -2
- package/dist/data-type.js.map +0 -1
- package/dist/db/storage-sqlite.d.ts +0 -12
- package/dist/db/storage-sqlite.js +0 -57
- package/dist/db/storage-sqlite.js.map +0 -1
- package/dist/db/storage.d.ts +0 -18
- package/dist/db/storage.js +0 -37
- package/dist/db/storage.js.map +0 -1
- package/dist/events/event-store.d.ts +0 -133
- package/dist/events/event-store.js +0 -215
- package/dist/events/event-store.js.map +0 -1
- package/dist/events/events.d.ts +0 -251
- package/dist/events/events.js +0 -184
- package/dist/events/events.js.map +0 -1
- package/dist/keystore/encrypt.d.ts +0 -10
- package/dist/keystore/encrypt.js +0 -39
- package/dist/keystore/encrypt.js.map +0 -1
- package/dist/keystore/keystore.d.ts +0 -29
- package/dist/keystore/keystore.js +0 -72
- package/dist/keystore/keystore.js.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { type Frame, type FrameSize, type ReadResult } from "./frame.ts";
|
|
2
|
+
export interface MatterInit {
|
|
3
|
+
code: string;
|
|
4
|
+
raw: Uint8Array;
|
|
5
|
+
soft?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class Matter implements Frame, MatterInit {
|
|
8
|
+
readonly code: string;
|
|
9
|
+
readonly soft?: number;
|
|
10
|
+
readonly raw: Uint8Array;
|
|
11
|
+
constructor(init: MatterInit);
|
|
12
|
+
get quadlets(): number;
|
|
13
|
+
get size(): FrameSize;
|
|
14
|
+
text(): string;
|
|
15
|
+
binary(): Uint8Array;
|
|
16
|
+
static readonly Code: {
|
|
17
|
+
Ed25519_Seed: string;
|
|
18
|
+
Ed25519N: string;
|
|
19
|
+
X25519: string;
|
|
20
|
+
Ed25519: string;
|
|
21
|
+
Blake3_256: string;
|
|
22
|
+
Blake2b_256: string;
|
|
23
|
+
Blake2s_256: string;
|
|
24
|
+
SHA3_256: string;
|
|
25
|
+
SHA2_256: string;
|
|
26
|
+
ECDSA_256k1_Seed: string;
|
|
27
|
+
Ed448_Seed: string;
|
|
28
|
+
X448: string;
|
|
29
|
+
Short: string;
|
|
30
|
+
Big: string;
|
|
31
|
+
X25519_Private: string;
|
|
32
|
+
X25519_Cipher_Seed: string;
|
|
33
|
+
ECDSA_256r1_Seed: string;
|
|
34
|
+
Tall: string;
|
|
35
|
+
Large: string;
|
|
36
|
+
Great: string;
|
|
37
|
+
Vast: string;
|
|
38
|
+
Label1: string;
|
|
39
|
+
Label2: string;
|
|
40
|
+
Tag3: string;
|
|
41
|
+
Tag7: string;
|
|
42
|
+
Tag11: string;
|
|
43
|
+
Salt_256: string;
|
|
44
|
+
Salt_128: string;
|
|
45
|
+
Ed25519_Sig: string;
|
|
46
|
+
ECDSA_256k1_Sig: string;
|
|
47
|
+
Blake3_512: string;
|
|
48
|
+
Blake2b_512: string;
|
|
49
|
+
SHA3_512: string;
|
|
50
|
+
SHA2_512: string;
|
|
51
|
+
Long: string;
|
|
52
|
+
ECDSA_256r1_Sig: string;
|
|
53
|
+
Tag1: string;
|
|
54
|
+
Tag2: string;
|
|
55
|
+
Tag5: string;
|
|
56
|
+
Tag6: string;
|
|
57
|
+
Tag9: string;
|
|
58
|
+
Tag10: string;
|
|
59
|
+
GramHeadNeck: string;
|
|
60
|
+
GramHead: string;
|
|
61
|
+
GramHeadAIDNeck: string;
|
|
62
|
+
GramHeadAID: string;
|
|
63
|
+
ECDSA_256k1N: string;
|
|
64
|
+
ECDSA_256k1: string;
|
|
65
|
+
Ed448N: string;
|
|
66
|
+
Ed448: string;
|
|
67
|
+
Ed448_Sig: string;
|
|
68
|
+
Tag4: string;
|
|
69
|
+
DateTime: string;
|
|
70
|
+
X25519_Cipher_Salt: string;
|
|
71
|
+
ECDSA_256r1N: string;
|
|
72
|
+
ECDSA_256r1: string;
|
|
73
|
+
Null: string;
|
|
74
|
+
No: string;
|
|
75
|
+
Yes: string;
|
|
76
|
+
Tag8: string;
|
|
77
|
+
Escape: string;
|
|
78
|
+
Empty: string;
|
|
79
|
+
StrB64_L0: string;
|
|
80
|
+
StrB64_L1: string;
|
|
81
|
+
StrB64_L2: string;
|
|
82
|
+
StrB64_Big_L0: string;
|
|
83
|
+
StrB64_Big_L1: string;
|
|
84
|
+
StrB64_Big_L2: string;
|
|
85
|
+
Bytes_L0: string;
|
|
86
|
+
Bytes_L1: string;
|
|
87
|
+
Bytes_L2: string;
|
|
88
|
+
Bytes_Big_L0: string;
|
|
89
|
+
Bytes_Big_L1: string;
|
|
90
|
+
Bytes_Big_L2: string;
|
|
91
|
+
X25519_Cipher_L0: string;
|
|
92
|
+
X25519_Cipher_L1: string;
|
|
93
|
+
X25519_Cipher_L2: string;
|
|
94
|
+
X25519_Cipher_Big_L0: string;
|
|
95
|
+
X25519_Cipher_Big_L1: string;
|
|
96
|
+
X25519_Cipher_Big_L2: string;
|
|
97
|
+
X25519_Cipher_QB64_L0: string;
|
|
98
|
+
X25519_Cipher_QB64_L1: string;
|
|
99
|
+
X25519_Cipher_QB64_L2: string;
|
|
100
|
+
X25519_Cipher_QB64_Big_L0: string;
|
|
101
|
+
X25519_Cipher_QB64_Big_L1: string;
|
|
102
|
+
X25519_Cipher_QB64_Big_L2: string;
|
|
103
|
+
X25519_Cipher_QB2_L0: string;
|
|
104
|
+
X25519_Cipher_QB2_L1: string;
|
|
105
|
+
X25519_Cipher_QB2_L2: string;
|
|
106
|
+
X25519_Cipher_QB2_Big_L0: string;
|
|
107
|
+
X25519_Cipher_QB2_Big_L1: string;
|
|
108
|
+
X25519_Cipher_QB2_Big_L2: string;
|
|
109
|
+
HPKEBase_Cipher_L0: string;
|
|
110
|
+
HPKEBase_Cipher_L1: string;
|
|
111
|
+
HPKEBase_Cipher_L2: string;
|
|
112
|
+
HPKEBase_Cipher_Big_L0: string;
|
|
113
|
+
HPKEBase_Cipher_Big_L1: string;
|
|
114
|
+
HPKEBase_Cipher_Big_L2: string;
|
|
115
|
+
Decimal_L0: string;
|
|
116
|
+
Decimal_L1: string;
|
|
117
|
+
Decimal_L2: string;
|
|
118
|
+
Decimal_Big_L0: string;
|
|
119
|
+
Decimal_Big_L1: string;
|
|
120
|
+
Decimal_Big_L2: string;
|
|
121
|
+
};
|
|
122
|
+
static from(code: string, raw: Uint8Array): Matter;
|
|
123
|
+
static peek(input: Uint8Array): ReadResult<Matter>;
|
|
124
|
+
static parse(input: string | Uint8Array): Matter;
|
|
125
|
+
/**
|
|
126
|
+
* Convert to Matter primitive types
|
|
127
|
+
*/
|
|
128
|
+
get as(): {
|
|
129
|
+
string: () => string;
|
|
130
|
+
date: () => Date;
|
|
131
|
+
hex: () => string;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Predefined Matter creators for common crypto types
|
|
135
|
+
*/
|
|
136
|
+
static readonly crypto: {
|
|
137
|
+
ed25519_seed: (raw: Uint8Array) => Matter;
|
|
138
|
+
ed25519: (raw: Uint8Array) => Matter;
|
|
139
|
+
ed25519N: (raw: Uint8Array) => Matter;
|
|
140
|
+
ed25519_sig: (raw: Uint8Array) => Matter;
|
|
141
|
+
x25519: (raw: Uint8Array) => Matter;
|
|
142
|
+
blake3_256: (raw: Uint8Array) => Matter;
|
|
143
|
+
blake2b_256: (raw: Uint8Array) => Matter;
|
|
144
|
+
blake2s_256: (raw: Uint8Array) => Matter;
|
|
145
|
+
sha3_256: (raw: Uint8Array) => Matter;
|
|
146
|
+
sha2_256: (raw: Uint8Array) => Matter;
|
|
147
|
+
ecdsa_256k1Seed: (raw: Uint8Array) => Matter;
|
|
148
|
+
ed448_seed: (raw: Uint8Array) => Matter;
|
|
149
|
+
x448: (raw: Uint8Array) => Matter;
|
|
150
|
+
x25519_private: (raw: Uint8Array) => Matter;
|
|
151
|
+
x25519_cipher_Seed: (raw: Uint8Array) => Matter;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Predefined Matter creators for common value types
|
|
155
|
+
*/
|
|
156
|
+
static readonly primitive: {
|
|
157
|
+
tag(input: string): Matter;
|
|
158
|
+
decimal(input: number): Matter;
|
|
159
|
+
hex(input: string): Matter;
|
|
160
|
+
string(input: string): Matter;
|
|
161
|
+
date(date: Date): Matter;
|
|
162
|
+
};
|
|
163
|
+
}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import { decodeBase64Int, decodeBase64Url, encodeBase64Url } from "../encoding/base64.js";
|
|
2
|
+
import { decodeUtf8, encodeUtf8 } from "../encoding/utf8.js";
|
|
3
|
+
import { concat } from "./array-utils.js";
|
|
4
|
+
import { MatterCode, MatterTableInit } from "./codes.js";
|
|
5
|
+
import { decodeText, encodeBinary, encodeText, peekText, resolveQuadletCount, } from "./frame.js";
|
|
6
|
+
const REGEX_BASE64_CHARACTER = /^[A-Za-z0-9\-_]+$/;
|
|
7
|
+
const Table = {};
|
|
8
|
+
const Hards = {};
|
|
9
|
+
for (const [key, value] of Object.entries(MatterTableInit)) {
|
|
10
|
+
Table[key] = {
|
|
11
|
+
hs: value.hs,
|
|
12
|
+
fs: value.fs ?? 0,
|
|
13
|
+
ss: value.ss ?? 0,
|
|
14
|
+
ls: value.ls ?? 0,
|
|
15
|
+
xs: value.xs ?? 0,
|
|
16
|
+
};
|
|
17
|
+
Hards[key.slice(0, 1)] = value.hs;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Finds the size table of a code
|
|
21
|
+
* @param input The input to parse the code from
|
|
22
|
+
*/
|
|
23
|
+
function lookup(input) {
|
|
24
|
+
if (typeof input !== "string") {
|
|
25
|
+
input = decodeUtf8(input.slice(0, 4));
|
|
26
|
+
}
|
|
27
|
+
if (input.length === 0) {
|
|
28
|
+
throw new Error("Received empty input code for lookup");
|
|
29
|
+
}
|
|
30
|
+
const hs = Hards[input.slice(0, 1)];
|
|
31
|
+
const hard = input.slice(0, hs ?? 4);
|
|
32
|
+
const entry = Table[hard];
|
|
33
|
+
if (!entry) {
|
|
34
|
+
throw new Error(`Unknown code ${hard}`);
|
|
35
|
+
}
|
|
36
|
+
return entry;
|
|
37
|
+
}
|
|
38
|
+
function padNumber(num, length) {
|
|
39
|
+
return num.toString().padStart(length, "0");
|
|
40
|
+
}
|
|
41
|
+
function decodeHexRaw(input) {
|
|
42
|
+
let value = "";
|
|
43
|
+
for (const byte of input) {
|
|
44
|
+
value = value + byte.toString(16).padStart(2, "0");
|
|
45
|
+
}
|
|
46
|
+
return value.replace(/^0+/, "") || "0";
|
|
47
|
+
}
|
|
48
|
+
function encodeHexRaw(input, entry) {
|
|
49
|
+
const ls = entry.ls ?? 0;
|
|
50
|
+
const size = Math.floor(((entry.fs - entry.hs - entry.ss) * 3) / 4) - ls;
|
|
51
|
+
const raw = new Uint8Array(size);
|
|
52
|
+
let bigint = BigInt(`0x${input}`);
|
|
53
|
+
for (let i = 0; i < size; i++) {
|
|
54
|
+
raw[size - i - 1] = Number(bigint % 256n);
|
|
55
|
+
bigint = bigint / 256n;
|
|
56
|
+
}
|
|
57
|
+
return raw;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Constructs a base64url string to padded raw bytes
|
|
61
|
+
* for use in Matter.
|
|
62
|
+
*/
|
|
63
|
+
function encodeBase64Raw(txt) {
|
|
64
|
+
if (!REGEX_BASE64_CHARACTER.test(txt)) {
|
|
65
|
+
throw new Error(`Invalid base64url string: ${txt}`);
|
|
66
|
+
}
|
|
67
|
+
if (txt.startsWith("A")) {
|
|
68
|
+
throw new Error(`Base64url string must not start with padding character 'A': ${txt}`);
|
|
69
|
+
}
|
|
70
|
+
const textsize = txt.length % 4;
|
|
71
|
+
const padsize = (4 - textsize) % 4;
|
|
72
|
+
const leadsize = (3 - textsize) % 3;
|
|
73
|
+
const raw = decodeBase64Url("A".repeat(padsize) + txt);
|
|
74
|
+
return raw.slice(leadsize);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Resolves the lead character(s) for variable size encoding
|
|
78
|
+
*
|
|
79
|
+
* For example, if one lead byte is required, the lead character will be "5" or "8AA"
|
|
80
|
+
* depending on the size of the raw data
|
|
81
|
+
*
|
|
82
|
+
* @param raw The raw data to encode
|
|
83
|
+
* @returns The lead character(s) for the variable size encoding
|
|
84
|
+
*/
|
|
85
|
+
function resolveLeadCharacter(raw) {
|
|
86
|
+
const leadSize = (3 - (raw.byteLength % 3)) % 3;
|
|
87
|
+
if (raw.length > 64 ** 2) {
|
|
88
|
+
switch (leadSize) {
|
|
89
|
+
case 0:
|
|
90
|
+
return "7AA";
|
|
91
|
+
case 1:
|
|
92
|
+
return "8AA";
|
|
93
|
+
case 2:
|
|
94
|
+
return "9AA";
|
|
95
|
+
default:
|
|
96
|
+
throw new Error(`Could not determine lead size`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
switch (leadSize) {
|
|
100
|
+
case 0:
|
|
101
|
+
return "4";
|
|
102
|
+
case 1:
|
|
103
|
+
return "5";
|
|
104
|
+
case 2:
|
|
105
|
+
return "6";
|
|
106
|
+
default:
|
|
107
|
+
throw new Error(`Could not determine lead size`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function resolveVariableSizeCode(code, raw) {
|
|
111
|
+
const type = code.charAt(code.length - 1);
|
|
112
|
+
const lead = resolveLeadCharacter(raw);
|
|
113
|
+
return `${lead}${type}`;
|
|
114
|
+
}
|
|
115
|
+
function createRaw(code) {
|
|
116
|
+
return (raw) => {
|
|
117
|
+
return new Matter({ code, raw });
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const CryptoMatter = {
|
|
121
|
+
ed25519_seed: createRaw(MatterCode.Ed25519_Seed),
|
|
122
|
+
ed25519: createRaw(MatterCode.Ed25519),
|
|
123
|
+
ed25519N: createRaw(MatterCode.Ed25519N),
|
|
124
|
+
ed25519_sig: createRaw(MatterCode.Ed25519_Sig),
|
|
125
|
+
x25519: createRaw(MatterCode.X25519),
|
|
126
|
+
blake3_256: createRaw(MatterCode.Blake3_256),
|
|
127
|
+
blake2b_256: createRaw(MatterCode.Blake2b_256),
|
|
128
|
+
blake2s_256: createRaw(MatterCode.Blake2s_256),
|
|
129
|
+
sha3_256: createRaw(MatterCode.SHA3_256),
|
|
130
|
+
sha2_256: createRaw(MatterCode.SHA2_256),
|
|
131
|
+
ecdsa_256k1Seed: createRaw(MatterCode.ECDSA_256k1_Seed),
|
|
132
|
+
ed448_seed: createRaw(MatterCode.Ed448_Seed),
|
|
133
|
+
x448: createRaw(MatterCode.X448),
|
|
134
|
+
x25519_private: createRaw(MatterCode.X25519_Private),
|
|
135
|
+
x25519_cipher_Seed: createRaw(MatterCode.X25519_Cipher_Seed),
|
|
136
|
+
};
|
|
137
|
+
const PrimitiveMatter = {
|
|
138
|
+
from: {
|
|
139
|
+
tag(input) {
|
|
140
|
+
switch (input.length) {
|
|
141
|
+
case 1:
|
|
142
|
+
return new Matter({
|
|
143
|
+
code: Matter.Code.Tag1,
|
|
144
|
+
raw: new Uint8Array(0),
|
|
145
|
+
soft: decodeBase64Int(input.padStart(2, "_")),
|
|
146
|
+
});
|
|
147
|
+
case 2:
|
|
148
|
+
return new Matter({
|
|
149
|
+
code: Matter.Code.Tag2,
|
|
150
|
+
raw: new Uint8Array(0),
|
|
151
|
+
soft: decodeBase64Int(input),
|
|
152
|
+
});
|
|
153
|
+
default:
|
|
154
|
+
throw new Error(`Unsupported tag length: ${input.length} for tag "${input}"`);
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
decimal(input) {
|
|
158
|
+
const raw = encodeBase64Raw(input.toString().replace(".", "p"));
|
|
159
|
+
const code = resolveVariableSizeCode(Matter.Code.Decimal_L0, raw);
|
|
160
|
+
return new Matter({ code, raw });
|
|
161
|
+
},
|
|
162
|
+
hex(input) {
|
|
163
|
+
// TODO: Choose smaller/bigger size based on input
|
|
164
|
+
const entry = lookup(Matter.Code.Salt_128);
|
|
165
|
+
const raw = encodeHexRaw(input, entry);
|
|
166
|
+
return new Matter({ code: Matter.Code.Salt_128, raw });
|
|
167
|
+
},
|
|
168
|
+
string(input) {
|
|
169
|
+
if (REGEX_BASE64_CHARACTER.test(input) && !input.startsWith("A")) {
|
|
170
|
+
const raw = encodeBase64Raw(input);
|
|
171
|
+
const code = resolveVariableSizeCode(Matter.Code.StrB64_L0, raw);
|
|
172
|
+
return new Matter({ code, raw });
|
|
173
|
+
}
|
|
174
|
+
const raw = encodeUtf8(input);
|
|
175
|
+
const code = resolveVariableSizeCode(Matter.Code.Bytes_L0, raw);
|
|
176
|
+
return new Matter({ code, raw });
|
|
177
|
+
},
|
|
178
|
+
date(date) {
|
|
179
|
+
if (date.toString() === "Invalid Date") {
|
|
180
|
+
throw new Error("Invalid date");
|
|
181
|
+
}
|
|
182
|
+
const YYYY = date.getFullYear();
|
|
183
|
+
const MM = padNumber(date.getUTCMonth() + 1, 2);
|
|
184
|
+
const dd = padNumber(date.getUTCDate(), 2);
|
|
185
|
+
const hh = padNumber(date.getUTCHours(), 2);
|
|
186
|
+
const mm = padNumber(date.getUTCMinutes(), 2);
|
|
187
|
+
const ss = padNumber(date.getUTCSeconds(), 2);
|
|
188
|
+
const ms = padNumber(date.getUTCMilliseconds(), 3);
|
|
189
|
+
const raw = decodeBase64Url(`${YYYY}-${MM}-${dd}T${hh}c${mm}c${ss}d${ms}000p00c00`);
|
|
190
|
+
return new Matter({ code: Matter.Code.DateTime, raw });
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
as: {
|
|
194
|
+
string(frame) {
|
|
195
|
+
const raw = frame.raw || new Uint8Array();
|
|
196
|
+
switch (frame.code) {
|
|
197
|
+
case Matter.Code.StrB64_L0:
|
|
198
|
+
case Matter.Code.StrB64_L1:
|
|
199
|
+
case Matter.Code.StrB64_L2:
|
|
200
|
+
case Matter.Code.StrB64_Big_L0:
|
|
201
|
+
case Matter.Code.StrB64_Big_L1:
|
|
202
|
+
case Matter.Code.StrB64_Big_L2: {
|
|
203
|
+
const ls = frame.size.ls ?? 0;
|
|
204
|
+
const bext = encodeBase64Url(concat(new Uint8Array(ls), raw));
|
|
205
|
+
if (ls === 0 && bext) {
|
|
206
|
+
if (bext[0] === "A") {
|
|
207
|
+
return bext.slice(1);
|
|
208
|
+
}
|
|
209
|
+
return bext;
|
|
210
|
+
}
|
|
211
|
+
return bext.slice((ls + 1) % 4);
|
|
212
|
+
}
|
|
213
|
+
case Matter.Code.Bytes_L0:
|
|
214
|
+
case Matter.Code.Bytes_L1:
|
|
215
|
+
case Matter.Code.Bytes_L2:
|
|
216
|
+
case Matter.Code.Bytes_Big_L0:
|
|
217
|
+
case Matter.Code.Bytes_Big_L1:
|
|
218
|
+
case Matter.Code.Bytes_Big_L2:
|
|
219
|
+
return decodeUtf8(raw);
|
|
220
|
+
default:
|
|
221
|
+
throw new Error(`Cannot decode ${frame.code} as a string`);
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
date(init) {
|
|
225
|
+
const raw = init.raw || new Uint8Array();
|
|
226
|
+
if (init.code !== Matter.Code.DateTime) {
|
|
227
|
+
throw new Error(`Cannot decode ${init.code} as a Date`);
|
|
228
|
+
}
|
|
229
|
+
const text = encodeBase64Url(raw);
|
|
230
|
+
const datestr = text.replaceAll("c", ":").replaceAll("d", ".").replaceAll("p", "+");
|
|
231
|
+
const result = new Date(datestr);
|
|
232
|
+
if (result.toString() === "Invalid Date") {
|
|
233
|
+
throw new Error(`Invalid date frame: ${text}`);
|
|
234
|
+
}
|
|
235
|
+
return result;
|
|
236
|
+
},
|
|
237
|
+
hex(frame) {
|
|
238
|
+
const raw = frame.raw || new Uint8Array();
|
|
239
|
+
return decodeHexRaw(raw);
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
export class Matter {
|
|
244
|
+
code;
|
|
245
|
+
soft;
|
|
246
|
+
raw;
|
|
247
|
+
constructor(init) {
|
|
248
|
+
this.code = init.code;
|
|
249
|
+
this.raw = init.raw;
|
|
250
|
+
this.soft = init.soft;
|
|
251
|
+
}
|
|
252
|
+
get quadlets() {
|
|
253
|
+
return resolveQuadletCount(this);
|
|
254
|
+
}
|
|
255
|
+
get size() {
|
|
256
|
+
return lookup(this.code);
|
|
257
|
+
}
|
|
258
|
+
text() {
|
|
259
|
+
return encodeText(this);
|
|
260
|
+
}
|
|
261
|
+
binary() {
|
|
262
|
+
return encodeBinary(this);
|
|
263
|
+
}
|
|
264
|
+
static Code = MatterCode;
|
|
265
|
+
static from(code, raw) {
|
|
266
|
+
return new Matter({ code, raw });
|
|
267
|
+
}
|
|
268
|
+
static peek(input) {
|
|
269
|
+
const entry = lookup(input);
|
|
270
|
+
const result = peekText(input, entry);
|
|
271
|
+
if (!result.frame) {
|
|
272
|
+
return { n: result.n };
|
|
273
|
+
}
|
|
274
|
+
return {
|
|
275
|
+
frame: new Matter({
|
|
276
|
+
code: result.frame.code,
|
|
277
|
+
raw: result.frame.raw ?? new Uint8Array(0),
|
|
278
|
+
soft: result.frame.soft,
|
|
279
|
+
}),
|
|
280
|
+
n: result.n,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
static parse(input) {
|
|
284
|
+
const entry = lookup(input);
|
|
285
|
+
const frame = decodeText(input, entry);
|
|
286
|
+
return new Matter({
|
|
287
|
+
code: frame.code,
|
|
288
|
+
raw: frame.raw ?? new Uint8Array(0),
|
|
289
|
+
soft: frame.soft,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Convert to Matter primitive types
|
|
294
|
+
*/
|
|
295
|
+
get as() {
|
|
296
|
+
return {
|
|
297
|
+
string: () => PrimitiveMatter.as.string(this),
|
|
298
|
+
date: () => PrimitiveMatter.as.date(this),
|
|
299
|
+
hex: () => PrimitiveMatter.as.hex(this),
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Predefined Matter creators for common crypto types
|
|
304
|
+
*/
|
|
305
|
+
static crypto = CryptoMatter;
|
|
306
|
+
/**
|
|
307
|
+
* Predefined Matter creators for common value types
|
|
308
|
+
*/
|
|
309
|
+
static primitive = PrimitiveMatter.from;
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=matter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matter.js","sourceRoot":"","sources":["../../src/cesr/matter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Attachments, type AttachmentsInit } from "./attachments.ts";
|
|
2
|
+
import { VersionString } from "./version-string.ts";
|
|
3
|
+
export interface MessageBody {
|
|
4
|
+
v: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare class Message<T extends MessageBody = MessageBody> {
|
|
8
|
+
#private;
|
|
9
|
+
readonly body: T;
|
|
10
|
+
constructor(body: T, attachments?: AttachmentsInit);
|
|
11
|
+
get raw(): Uint8Array;
|
|
12
|
+
get version(): VersionString;
|
|
13
|
+
get attachments(): Attachments;
|
|
14
|
+
set attachments(value: AttachmentsInit);
|
|
15
|
+
static parse(input: Uint8Array): Message | null;
|
|
16
|
+
static encode(init: MessageBody): Uint8Array;
|
|
17
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { decodeUtf8, encodeUtf8 } from "../encoding/utf8.js";
|
|
2
|
+
import { Attachments } from "./attachments.js";
|
|
3
|
+
import { VersionString } from "./version-string.js";
|
|
4
|
+
function encode(init) {
|
|
5
|
+
const { v, ...payload } = init;
|
|
6
|
+
if (typeof v !== "string") {
|
|
7
|
+
throw new Error(`Version field 'v' in payload must be a string, got ${typeof v}`);
|
|
8
|
+
}
|
|
9
|
+
const tmpversion = VersionString.parse(v);
|
|
10
|
+
const tmp = encodeUtf8(JSON.stringify({
|
|
11
|
+
v: tmpversion.text,
|
|
12
|
+
...payload,
|
|
13
|
+
}));
|
|
14
|
+
const version = new VersionString({
|
|
15
|
+
protocol: tmpversion.protocol,
|
|
16
|
+
major: tmpversion.major,
|
|
17
|
+
minor: tmpversion.minor,
|
|
18
|
+
kind: tmpversion.kind,
|
|
19
|
+
legacy: tmpversion.legacy,
|
|
20
|
+
size: tmp.length,
|
|
21
|
+
});
|
|
22
|
+
const raw = encodeUtf8(JSON.stringify({
|
|
23
|
+
v: version.text,
|
|
24
|
+
...payload,
|
|
25
|
+
}));
|
|
26
|
+
return raw;
|
|
27
|
+
}
|
|
28
|
+
function read(input) {
|
|
29
|
+
if (input.length === 0) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (input[0] !== 0x7b) {
|
|
33
|
+
const preview = decodeUtf8(input.slice(0, 20));
|
|
34
|
+
throw new Error(`Expected JSON starting with '{' (0x7b), got: "${preview}"`);
|
|
35
|
+
}
|
|
36
|
+
if (input.length < 25) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const version = VersionString.extract(input.slice(0, 24));
|
|
40
|
+
if (input.length < version.size) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const frame = input.slice(0, version.size);
|
|
44
|
+
return JSON.parse(decodeUtf8(frame));
|
|
45
|
+
}
|
|
46
|
+
export class Message {
|
|
47
|
+
#attachments;
|
|
48
|
+
#raw;
|
|
49
|
+
body;
|
|
50
|
+
constructor(body, attachments) {
|
|
51
|
+
this.#raw = encode(body);
|
|
52
|
+
this.body = JSON.parse(decodeUtf8(this.#raw));
|
|
53
|
+
this.#attachments = new Attachments(attachments ?? {});
|
|
54
|
+
}
|
|
55
|
+
get raw() {
|
|
56
|
+
return this.#raw;
|
|
57
|
+
}
|
|
58
|
+
get version() {
|
|
59
|
+
if (!this.body.v || typeof this.body.v !== "string") {
|
|
60
|
+
throw new Error("Payload does not contain a valid version string 'v'");
|
|
61
|
+
}
|
|
62
|
+
return VersionString.parse(this.body.v);
|
|
63
|
+
}
|
|
64
|
+
get attachments() {
|
|
65
|
+
return this.#attachments;
|
|
66
|
+
}
|
|
67
|
+
set attachments(value) {
|
|
68
|
+
this.#attachments = new Attachments(value);
|
|
69
|
+
}
|
|
70
|
+
static parse(input) {
|
|
71
|
+
const body = read(input);
|
|
72
|
+
if (body === null) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return new Message(body);
|
|
76
|
+
}
|
|
77
|
+
static encode(init) {
|
|
78
|
+
return encode(init);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/cesr/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Message } from "./message.ts";
|
|
2
|
+
export type ParseInput = Uint8Array | string | AsyncIterable<Uint8Array>;
|
|
3
|
+
export interface ParseOptions {
|
|
4
|
+
/**
|
|
5
|
+
* CESR version to use for cold start parsing. Defaults to 1.
|
|
6
|
+
*/
|
|
7
|
+
version?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Parses CESR messages from an incoming stream of bytes.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { parse } from "cesr";
|
|
16
|
+
*
|
|
17
|
+
* const url = "https://example.com/oobi/EAQABAA..."; // URL returning a CESR stream
|
|
18
|
+
* const response = await fetch(url);
|
|
19
|
+
*
|
|
20
|
+
* if (response.body) {
|
|
21
|
+
* for await (const message of parse(response.body)) {
|
|
22
|
+
* console.log(message);
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @param input
|
|
28
|
+
* Input to the parser. Can be an Uint8Array, string or stream.
|
|
29
|
+
*
|
|
30
|
+
* Strings are treated as UTF-8 encoded data.
|
|
31
|
+
*
|
|
32
|
+
* @param options
|
|
33
|
+
* Parser options
|
|
34
|
+
*
|
|
35
|
+
* @returns An async iterable of {@link Message} objects
|
|
36
|
+
*/
|
|
37
|
+
export declare function parse(input: ParseInput, options?: ParseOptions): AsyncIterableIterator<Message>;
|