keri 0.0.8-dev.57bf32e → 0.0.8-dev.a205007
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/main.js +32 -28
- package/dist/cli/main.js.map +1 -1
- package/dist/client.d.ts +5 -9
- package/dist/client.js +42 -46
- package/dist/client.js.map +1 -1
- package/dist/controller.d.ts +10 -8
- package/dist/controller.js +230 -147
- package/dist/controller.js.map +1 -1
- package/dist/events/event-store.d.ts +6 -16
- package/dist/events/event-store.js +43 -31
- package/dist/events/event-store.js.map +1 -1
- package/dist/events/events.d.ts +1 -1
- package/dist/events/events.js +22 -20
- package/dist/events/events.js.map +1 -1
- package/dist/keystore/encrypt.d.ts +3 -2
- package/dist/keystore/encrypt.js +34 -16
- package/dist/keystore/encrypt.js.map +1 -1
- package/dist/keystore/key-manager.d.ts +12 -17
- package/dist/keystore/key-manager.js +30 -60
- package/dist/keystore/key-manager.js.map +1 -1
- package/dist/keystore/pinentry.d.ts +1 -0
- package/dist/keystore/pinentry.js +46 -0
- package/dist/keystore/pinentry.js.map +1 -0
- package/dist/main.d.ts +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/package.json +20 -4
- package/dist/serializer.d.ts +0 -10
- package/dist/serializer.js +0 -83
- package/dist/serializer.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Message } from "cesr";
|
|
1
2
|
import { formatDate, } from "./events.js";
|
|
2
3
|
function assertKeyEvent(event) {
|
|
3
4
|
if (typeof event !== "object") {
|
|
@@ -10,33 +11,38 @@ export class ControllerEventStore {
|
|
|
10
11
|
this.#db = db;
|
|
11
12
|
}
|
|
12
13
|
async save(event) {
|
|
13
|
-
switch (event.
|
|
14
|
+
switch (event.body.t) {
|
|
14
15
|
case "icp":
|
|
15
16
|
case "ixn":
|
|
16
17
|
case "iss":
|
|
17
18
|
case "vcp":
|
|
18
19
|
case "rot": {
|
|
19
|
-
if (!event.
|
|
20
|
-
throw new Error(`Event sequence number (s) is required for key event ${event.
|
|
20
|
+
if (!event.body.s) {
|
|
21
|
+
throw new Error(`Event sequence number (s) is required for key event ${event.body.t}(${event.body.d})`);
|
|
21
22
|
}
|
|
22
|
-
const sn = event.
|
|
23
|
-
await this.#db.set(`key_event.${event.
|
|
24
|
-
event: event.
|
|
23
|
+
const sn = event.body.s.padStart(24, "0");
|
|
24
|
+
await this.#db.set(`key_event.${event.body.d}`, JSON.stringify({
|
|
25
|
+
event: event.body,
|
|
25
26
|
timestamp: new Date().toISOString(),
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
attachments: {
|
|
28
|
+
ControllerIdxSigs: event.attachments.ControllerIdxSigs || [],
|
|
29
|
+
WitnessIdxSigs: event.attachments.WitnessIdxSigs || [],
|
|
30
|
+
NonTransReceiptCouples: event.attachments.NonTransReceiptCouples || [],
|
|
31
|
+
SealSourceCouples: event.attachments.SealSourceCouples || [],
|
|
32
|
+
SealSourceTriples: event.attachments.SealSourceTriples || [],
|
|
33
|
+
},
|
|
28
34
|
}));
|
|
29
|
-
await this.#db.set(`key_event_log.${event.
|
|
35
|
+
await this.#db.set(`key_event_log.${event.body.i}.${sn}`, event.body.d);
|
|
30
36
|
break;
|
|
31
37
|
}
|
|
32
38
|
case "rct": {
|
|
33
|
-
await this.#db.set(`key_event_receipts.${event.
|
|
39
|
+
await this.#db.set(`key_event_receipts.${event.body.d}`, JSON.stringify(event.attachments.NonTransReceiptCouples || []));
|
|
34
40
|
break;
|
|
35
41
|
}
|
|
36
42
|
case "rpy":
|
|
37
|
-
switch (event.
|
|
43
|
+
switch (event.body.r) {
|
|
38
44
|
case "/end/role/add": {
|
|
39
|
-
const record = event.
|
|
45
|
+
const record = event.body.a;
|
|
40
46
|
if (record &&
|
|
41
47
|
typeof record === "object" &&
|
|
42
48
|
"eid" in record &&
|
|
@@ -57,7 +63,7 @@ export class ControllerEventStore {
|
|
|
57
63
|
break;
|
|
58
64
|
}
|
|
59
65
|
case "/loc/scheme": {
|
|
60
|
-
const record = event.
|
|
66
|
+
const record = event.body.a;
|
|
61
67
|
if (record &&
|
|
62
68
|
typeof record === "object" &&
|
|
63
69
|
"eid" in record &&
|
|
@@ -77,11 +83,14 @@ export class ControllerEventStore {
|
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
85
|
}
|
|
80
|
-
if (event.
|
|
81
|
-
await this.#db.set(`key_event.${event.
|
|
82
|
-
event: event.
|
|
86
|
+
if (event.body.v.startsWith("ACDC")) {
|
|
87
|
+
await this.#db.set(`key_event.${event.body.d}`, JSON.stringify({
|
|
88
|
+
event: event.body,
|
|
83
89
|
timestamp: new Date().toISOString(),
|
|
84
|
-
|
|
90
|
+
attachments: {
|
|
91
|
+
SealSourceCouples: event.attachments.SealSourceCouples || [],
|
|
92
|
+
SealSourceTriples: event.attachments.SealSourceTriples || [],
|
|
93
|
+
},
|
|
85
94
|
}));
|
|
86
95
|
}
|
|
87
96
|
}
|
|
@@ -90,7 +99,7 @@ export class ControllerEventStore {
|
|
|
90
99
|
const digest = await this.#db.get(`key_event_log.${said}.${start.toString(16).padStart(24, "0")}`);
|
|
91
100
|
if (digest) {
|
|
92
101
|
const result = await this.get(digest);
|
|
93
|
-
assertKeyEvent(result?.
|
|
102
|
+
assertKeyEvent(result?.body);
|
|
94
103
|
yield result;
|
|
95
104
|
}
|
|
96
105
|
else {
|
|
@@ -104,14 +113,17 @@ export class ControllerEventStore {
|
|
|
104
113
|
return null;
|
|
105
114
|
}
|
|
106
115
|
assertKeyEvent(item.event);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
return new Message(item.event, {
|
|
117
|
+
...item.attachments,
|
|
118
|
+
FirstSeenReplayCouples: ["icp", "ixn", "rot"].includes(item.event.t)
|
|
119
|
+
? [
|
|
120
|
+
{
|
|
121
|
+
fnu: item.event.s,
|
|
122
|
+
dt: new Date(item.timestamp),
|
|
123
|
+
},
|
|
124
|
+
]
|
|
125
|
+
: [],
|
|
126
|
+
});
|
|
115
127
|
}
|
|
116
128
|
async state(said) {
|
|
117
129
|
let state = INITIAL_STATE;
|
|
@@ -189,13 +201,13 @@ const INITIAL_STATE = {
|
|
|
189
201
|
di: "",
|
|
190
202
|
};
|
|
191
203
|
function reduce(state, message) {
|
|
192
|
-
if (!message.
|
|
204
|
+
if (!message.body.v.startsWith("KERI")) {
|
|
193
205
|
return state;
|
|
194
206
|
}
|
|
195
|
-
switch (message.
|
|
207
|
+
switch (message.body.t) {
|
|
196
208
|
case "icp":
|
|
197
209
|
case "dip": {
|
|
198
|
-
const icp = message.
|
|
210
|
+
const icp = message.body;
|
|
199
211
|
return {
|
|
200
212
|
vn: [1, 0],
|
|
201
213
|
i: icp.i,
|
|
@@ -223,7 +235,7 @@ function reduce(state, message) {
|
|
|
223
235
|
}
|
|
224
236
|
case "ixn": {
|
|
225
237
|
assertDefined(state);
|
|
226
|
-
const ixn = message.
|
|
238
|
+
const ixn = message.body;
|
|
227
239
|
if (!state.d) {
|
|
228
240
|
throw new Error("state.d is undefined");
|
|
229
241
|
}
|
|
@@ -236,7 +248,7 @@ function reduce(state, message) {
|
|
|
236
248
|
});
|
|
237
249
|
}
|
|
238
250
|
default:
|
|
239
|
-
throw new Error(`Unsupported event type: ${message.
|
|
251
|
+
throw new Error(`Unsupported event type: ${message.body.t}`);
|
|
240
252
|
}
|
|
241
253
|
}
|
|
242
254
|
//# sourceMappingURL=event-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/events/event-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAMX,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"event-store.js","sourceRoot":"","sources":["../../src/events/event-store.ts"],"names":[],"mappings":"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"}
|
package/dist/events/events.d.ts
CHANGED
package/dist/events/events.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { blake3 } from "@noble/hashes/blake3.js";
|
|
2
|
-
import { cesr,
|
|
2
|
+
import { cesr, Matter, Message, VersionString } from "cesr";
|
|
3
3
|
export function formatDate(date) {
|
|
4
4
|
return date.toISOString().replace("Z", "000+00:00");
|
|
5
5
|
}
|
|
6
6
|
export function randomNonce() {
|
|
7
|
-
return
|
|
7
|
+
return Matter.from(Matter.Code.Salt_128, crypto.getRandomValues(new Uint8Array(16))).text();
|
|
8
8
|
}
|
|
9
9
|
function calculateSaid(event) {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
.update(encoder.encode(JSON.stringify(event)))
|
|
16
|
-
.digest(),
|
|
17
|
-
});
|
|
18
|
-
return digest;
|
|
10
|
+
const digest = cesr.crypto.blake3_256(blake3
|
|
11
|
+
.create({ dkLen: 32 })
|
|
12
|
+
.update(new TextEncoder().encode(JSON.stringify(event)))
|
|
13
|
+
.digest());
|
|
14
|
+
return digest.text();
|
|
19
15
|
}
|
|
20
16
|
export function saidify(event, labels) {
|
|
21
17
|
if (!labels?.length) {
|
|
@@ -28,11 +24,11 @@ export function saidify(event, labels) {
|
|
|
28
24
|
return event;
|
|
29
25
|
}
|
|
30
26
|
function isTransferable(key) {
|
|
31
|
-
const raw =
|
|
27
|
+
const raw = Matter.parse(key);
|
|
32
28
|
switch (raw.code) {
|
|
33
|
-
case
|
|
34
|
-
case
|
|
35
|
-
case
|
|
29
|
+
case Matter.Code.ECDSA_256k1N:
|
|
30
|
+
case Matter.Code.Ed25519N:
|
|
31
|
+
case Matter.Code.Ed448N:
|
|
36
32
|
return false;
|
|
37
33
|
default:
|
|
38
34
|
return true;
|
|
@@ -62,8 +58,10 @@ export class KeriEventCreator {
|
|
|
62
58
|
}
|
|
63
59
|
data[label] = "#".repeat(44);
|
|
64
60
|
}
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
return saidify(new Message({
|
|
62
|
+
v: VersionString.encode({ protocol: "KERI", legacy: this.#version === 1 }),
|
|
63
|
+
...data,
|
|
64
|
+
}).body, labels);
|
|
67
65
|
}
|
|
68
66
|
registry(args) {
|
|
69
67
|
return this.#encode({
|
|
@@ -164,7 +162,11 @@ export class KeriEventCreator {
|
|
|
164
162
|
});
|
|
165
163
|
}
|
|
166
164
|
credential(data) {
|
|
167
|
-
const
|
|
165
|
+
const body = new Message({
|
|
166
|
+
v: VersionString.encode({
|
|
167
|
+
protocol: "ACDC",
|
|
168
|
+
legacy: this.#version === 1,
|
|
169
|
+
}),
|
|
168
170
|
d: "#".repeat(44),
|
|
169
171
|
...(data.u && { u: data.u }),
|
|
170
172
|
i: data.i,
|
|
@@ -176,8 +178,8 @@ export class KeriEventCreator {
|
|
|
176
178
|
}, ["d"]),
|
|
177
179
|
...(data.e && { e: saidify({ d: "#".repeat(44), ...data.e }, ["d"]) }),
|
|
178
180
|
r: saidify({ d: "#".repeat(44), ...data.r }, ["d"]),
|
|
179
|
-
}
|
|
180
|
-
return saidify(
|
|
181
|
+
}).body;
|
|
182
|
+
return saidify(body, ["d"]);
|
|
181
183
|
}
|
|
182
184
|
}
|
|
183
185
|
export const keri = new KeriEventCreator({ version: 1 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAyQ5D,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,aAAa,CAAC,KAA8B;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CACnC,MAAM;SACH,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;SACrB,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD,MAAM,EAAE,CACZ,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,OAAO,CAAoC,KAAQ,EAAE,MAAiB;IACpF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QAChC,KAAiC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM;YACrB,OAAO,KAAK,CAAC;QACf;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAqB;IACnD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B,CAAC;AAMD,MAAM,OAAO,gBAAgB;IAC3B,QAAQ,CAAS;IAEjB,YAAY,OAAgC;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,OAAO,CAAoC,IAAO,EAAE,SAAmB,CAAC,GAAG,CAAC;QAC1E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;YACpD,CAAC;YAEA,IAAgC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,OAAO,CACZ,IAAI,OAAO,CAAC;YACV,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1E,GAAG,IAAI;SACR,CAAC,CAAC,IAAI,EACP,MAAM,CACP,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAA6B;QACpC,OAAO,IAAI,CAAC,OAAO,CACjB;YACE,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,CAAC,EAAE,GAAG;YACN,CAAC,EAAE,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,GAAG;YACP,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,WAAW,EAAE;SAC3B,EACD,CAAC,GAAG,EAAE,GAAG,CAAC,CACX,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,GAAG;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAqB;QAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CACjB;YACE,CAAC,EAAE,KAAc;YACjB,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC,EAAE,GAAG;YACN,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;YACvC,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG;YAC/C,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YACf,EAAE,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC3C,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YACf,CAAC,EAAE,EAAc;YACjB,CAAC,EAAE,EAAE;SACN,EACD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAuB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;YACjB,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YACf,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;YACrC,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YACf,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YACf,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAuB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,CAAC,EAAE,KAAc;YACjB,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,CAAC,EAAE,KAAc;YACjB,CAAC,EAAE,EAAE;YACL,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;YACrC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE;YACf,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;YACjB,CAAC,EAAE,IAAI,CAAC,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAsB;QAC5B,OAAO,IAAI,CAAC,OAAO,CACjB;YACE,CAAC,EAAE,KAAc;YACjB,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;SACV,EACD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,CAAC,EAAE,KAAc;YACjB,CAAC,EAAE,EAAE;YACL,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;YACrC,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAoB;QAC7B,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC;YACvB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC;gBACtB,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,IAAI,CAAC,QAAQ,KAAK,CAAC;aAC5B,CAAC;YACF,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,OAAO,CACR;gBACE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjB,GAAG,IAAI,CAAC,CAAC;aACV,EACD,CAAC,GAAG,CAAC,CACN;YACD,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACtE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;SACpD,CAAC,CAAC,IAAI,CAAC;QAER,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -4,7 +4,8 @@ export interface Encrypter {
|
|
|
4
4
|
}
|
|
5
5
|
export declare class PassphraseEncrypter implements Encrypter {
|
|
6
6
|
#private;
|
|
7
|
-
constructor(passphrase
|
|
8
|
-
|
|
7
|
+
constructor(passphrase?: string);
|
|
8
|
+
private passphrase;
|
|
9
|
+
encrypt(data: Uint8Array): Promise<Uint8Array>;
|
|
9
10
|
decrypt(ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
10
11
|
}
|
package/dist/keystore/encrypt.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pinentry } from "./pinentry.js";
|
|
1
2
|
async function deriveKey(passphrase, salt) {
|
|
2
3
|
const encoder = new TextEncoder();
|
|
3
4
|
const encryptionKey = await crypto.subtle.importKey("raw", encoder.encode(passphrase), "PBKDF2", false, [
|
|
@@ -6,34 +7,51 @@ async function deriveKey(passphrase, salt) {
|
|
|
6
7
|
]);
|
|
7
8
|
const key = await crypto.subtle.deriveKey({
|
|
8
9
|
name: "PBKDF2",
|
|
9
|
-
salt,
|
|
10
|
+
salt: Uint8Array.from(salt),
|
|
10
11
|
iterations: 100000,
|
|
11
12
|
hash: "SHA-256",
|
|
12
13
|
}, encryptionKey, { name: "AES-GCM", length: 256 }, true, ["encrypt", "decrypt"]);
|
|
13
14
|
return key;
|
|
14
15
|
}
|
|
16
|
+
async function encrypt(data, passphrase) {
|
|
17
|
+
const salt = crypto.getRandomValues(new Uint8Array(16));
|
|
18
|
+
const iv = crypto.getRandomValues(new Uint8Array(16));
|
|
19
|
+
const key = await deriveKey(passphrase, salt);
|
|
20
|
+
const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, Uint8Array.from(data));
|
|
21
|
+
const result = new Uint8Array(salt.byteLength + iv.byteLength + encrypted.byteLength);
|
|
22
|
+
result.set(salt, 0);
|
|
23
|
+
result.set(iv, salt.byteLength);
|
|
24
|
+
result.set(new Uint8Array(encrypted), salt.byteLength + iv.byteLength);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
async function decrypt(ciphertext, passphrase) {
|
|
28
|
+
const salt = ciphertext.slice(0, 16);
|
|
29
|
+
const key = await deriveKey(passphrase, salt);
|
|
30
|
+
const iv = ciphertext.slice(16, 32);
|
|
31
|
+
const encrypted = ciphertext.slice(32);
|
|
32
|
+
return new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, encrypted));
|
|
33
|
+
}
|
|
15
34
|
export class PassphraseEncrypter {
|
|
16
35
|
#passphrase;
|
|
17
36
|
constructor(passphrase) {
|
|
18
|
-
this.#passphrase = passphrase;
|
|
37
|
+
this.#passphrase = passphrase ?? null;
|
|
38
|
+
}
|
|
39
|
+
async passphrase() {
|
|
40
|
+
if (!this.#passphrase) {
|
|
41
|
+
this.#passphrase = await pinentry("Enter passphrase: ");
|
|
42
|
+
}
|
|
43
|
+
if (!this.#passphrase) {
|
|
44
|
+
throw new Error("Passphrase is required");
|
|
45
|
+
}
|
|
46
|
+
return this.#passphrase;
|
|
19
47
|
}
|
|
20
48
|
async encrypt(data) {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
const key = await deriveKey(this.#passphrase, salt);
|
|
24
|
-
const encrypted = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, data);
|
|
25
|
-
const result = new Uint8Array(salt.byteLength + iv.byteLength + encrypted.byteLength);
|
|
26
|
-
result.set(salt, 0);
|
|
27
|
-
result.set(iv, salt.byteLength);
|
|
28
|
-
result.set(new Uint8Array(encrypted), salt.byteLength + iv.byteLength);
|
|
29
|
-
return result;
|
|
49
|
+
const passphrase = await this.passphrase();
|
|
50
|
+
return await encrypt(data, passphrase);
|
|
30
51
|
}
|
|
31
52
|
async decrypt(ciphertext) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
const iv = ciphertext.slice(16, 32);
|
|
35
|
-
const encrypted = ciphertext.slice(32);
|
|
36
|
-
return new Uint8Array(await crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, encrypted));
|
|
53
|
+
const passphrase = await this.passphrase();
|
|
54
|
+
return await decrypt(ciphertext, passphrase);
|
|
37
55
|
}
|
|
38
56
|
}
|
|
39
57
|
//# sourceMappingURL=encrypt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../src/keystore/encrypt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../src/keystore/encrypt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Encrypter } from "./encrypt.ts";
|
|
2
2
|
import { type KeyValueStorage } from "../events/event-store.ts";
|
|
3
|
-
export interface Key {
|
|
4
|
-
/**
|
|
5
|
-
* The public key of the tranferable key.
|
|
6
|
-
*/
|
|
7
|
-
current: string;
|
|
8
|
-
/**
|
|
9
|
-
* Digest of the next public key of the key pair.
|
|
10
|
-
*/
|
|
11
|
-
next: string;
|
|
12
|
-
}
|
|
13
3
|
export interface KeyManagerOptions {
|
|
14
|
-
|
|
4
|
+
passphrase?: string;
|
|
15
5
|
storage: KeyValueStorage;
|
|
16
6
|
}
|
|
17
|
-
export
|
|
7
|
+
export interface Signer {
|
|
8
|
+
sign(publicKey: string, message: Uint8Array): Promise<string>;
|
|
9
|
+
}
|
|
10
|
+
export declare class KeyManager implements Signer {
|
|
18
11
|
storage: KeyValueStorage;
|
|
19
12
|
encrypter: Encrypter;
|
|
20
13
|
constructor(options: KeyManagerOptions);
|
|
21
14
|
private load;
|
|
22
|
-
import(
|
|
23
|
-
incept(): Promise<
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
import(key: Uint8Array): Promise<string>;
|
|
16
|
+
incept(): Promise<string>;
|
|
17
|
+
sign(publicKey: string, message: Uint8Array): Promise<string>;
|
|
18
|
+
static createDigest: typeof createDigest;
|
|
19
|
+
static verify: typeof verify;
|
|
26
20
|
}
|
|
21
|
+
export declare function createDigest(key: string): string;
|
|
27
22
|
export declare function verify(publicKey: string, message: Uint8Array, signature: string): boolean;
|
|
@@ -1,85 +1,55 @@
|
|
|
1
1
|
import { ed25519 } from "@noble/curves/ed25519.js";
|
|
2
2
|
import { blake3 } from "@noble/hashes/blake3.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
raw: ed25519.getPublicKey(key),
|
|
8
|
-
});
|
|
9
|
-
const next = encodeMatter({
|
|
10
|
-
code: MatterCode.Blake3_256,
|
|
11
|
-
raw: blake3.create({ dkLen: 32 }).update(new TextEncoder().encode(encoded)).digest(),
|
|
12
|
-
});
|
|
13
|
-
return next;
|
|
14
|
-
}
|
|
3
|
+
import { PassphraseEncrypter } from "./encrypt.js";
|
|
4
|
+
import {} from "../events/event-store.js";
|
|
5
|
+
import { cesr, Matter } from "cesr";
|
|
6
|
+
import { decodeBase64Url, encodeBase64Url } from "cesr/__unstable__";
|
|
15
7
|
export class KeyManager {
|
|
16
8
|
storage;
|
|
17
9
|
encrypter;
|
|
18
10
|
constructor(options) {
|
|
19
|
-
this.encrypter = options.
|
|
11
|
+
this.encrypter = new PassphraseEncrypter(options.passphrase);
|
|
20
12
|
this.storage = options.storage;
|
|
21
13
|
}
|
|
22
14
|
async load(publicKey) {
|
|
23
|
-
const value = await this.storage.get(
|
|
15
|
+
const value = await this.storage.get(publicKey);
|
|
24
16
|
if (!value) {
|
|
25
17
|
throw new Error(`Key ${publicKey} not found`);
|
|
26
18
|
}
|
|
27
|
-
|
|
28
|
-
return [await this.encrypter.decrypt(decodeBase64Url(key0)), await this.encrypter.decrypt(decodeBase64Url(key1))];
|
|
19
|
+
return await this.encrypter.decrypt(decodeBase64Url(value));
|
|
29
20
|
}
|
|
30
|
-
async import(
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const next = createDigest(key1);
|
|
36
|
-
await this.storage.set(`keys.${current}`, [
|
|
37
|
-
encodeBase64Url(await this.encrypter.encrypt(key0)),
|
|
38
|
-
encodeBase64Url(await this.encrypter.encrypt(key1)),
|
|
39
|
-
"\n",
|
|
40
|
-
].join("\n"));
|
|
41
|
-
return { current, next };
|
|
21
|
+
async import(key) {
|
|
22
|
+
const text = cesr.crypto.ed25519(ed25519.getPublicKey(key)).text();
|
|
23
|
+
const data = await this.encrypter.encrypt(key);
|
|
24
|
+
await this.storage.set(text, encodeBase64Url(data));
|
|
25
|
+
return text;
|
|
42
26
|
}
|
|
43
27
|
async incept() {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
return await this.import(key0, key1);
|
|
47
|
-
}
|
|
48
|
-
async rotate(publicKey) {
|
|
49
|
-
const [, key0] = await this.load(publicKey);
|
|
50
|
-
const key1 = ed25519.utils.randomSecretKey();
|
|
51
|
-
const current = encodeMatter({
|
|
52
|
-
code: MatterCode.Ed25519,
|
|
53
|
-
raw: ed25519.getPublicKey(key0),
|
|
54
|
-
});
|
|
55
|
-
const next = createDigest(key1);
|
|
56
|
-
await this.import(key0, key1);
|
|
57
|
-
return { current, next };
|
|
28
|
+
const key = ed25519.utils.randomSecretKey();
|
|
29
|
+
return await this.import(key);
|
|
58
30
|
}
|
|
59
|
-
async sign(publicKey, message
|
|
60
|
-
const
|
|
31
|
+
async sign(publicKey, message) {
|
|
32
|
+
const key = await this.load(publicKey);
|
|
61
33
|
const signature = ed25519.sign(message, key);
|
|
62
|
-
|
|
63
|
-
return encodeIndexer({
|
|
64
|
-
code: IndexCode.Ed25519_Sig,
|
|
65
|
-
raw: signature,
|
|
66
|
-
index,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return encodeMatter({
|
|
70
|
-
code: MatterCode.Ed25519_Sig,
|
|
71
|
-
raw: signature,
|
|
72
|
-
});
|
|
34
|
+
return cesr.crypto.ed25519_sig(signature).text();
|
|
73
35
|
}
|
|
36
|
+
static createDigest = createDigest;
|
|
37
|
+
static verify = verify;
|
|
38
|
+
}
|
|
39
|
+
export function createDigest(key) {
|
|
40
|
+
const next = cesr.crypto
|
|
41
|
+
.blake3_256(blake3.create({ dkLen: 32 }).update(new TextEncoder().encode(key)).digest())
|
|
42
|
+
.text();
|
|
43
|
+
return next;
|
|
74
44
|
}
|
|
75
45
|
export function verify(publicKey, message, signature) {
|
|
76
|
-
const key =
|
|
77
|
-
const sig =
|
|
46
|
+
const key = Matter.parse(publicKey);
|
|
47
|
+
const sig = Matter.parse(signature);
|
|
78
48
|
switch (key.code) {
|
|
79
|
-
case
|
|
80
|
-
case
|
|
49
|
+
case Matter.Code.Ed25519:
|
|
50
|
+
case Matter.Code.Ed25519N:
|
|
81
51
|
switch (sig.code) {
|
|
82
|
-
case
|
|
52
|
+
case Matter.Code.Ed25519_Sig:
|
|
83
53
|
return ed25519.verify(sig.raw, message, key.raw);
|
|
84
54
|
default:
|
|
85
55
|
throw new Error(`Unsupported signature code: ${sig.code}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-manager.js","sourceRoot":"","sources":["../../src/keystore/key-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"key-manager.js","sourceRoot":"","sources":["../../src/keystore/key-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function pinentry(prompt: string): Promise<string | null>;
|