keri 0.0.6 → 0.0.8-dev.0f93fc3
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 +47 -39
- package/dist/cli/main.js.map +1 -1
- package/dist/client.d.ts +5 -9
- package/dist/client.js +43 -46
- package/dist/client.js.map +1 -1
- package/dist/controller.d.ts +19 -10
- package/dist/controller.js +236 -151
- 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 +10 -17
- package/dist/keystore/key-manager.js +31 -61
- 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
- package/dist/witness.d.ts +0 -19
- package/dist/witness.js +0 -91
- package/dist/witness.js.map +0 -1
package/dist/cli/main.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --no-warnings
|
|
2
2
|
import { program } from "commander";
|
|
3
|
+
import process from "node:process";
|
|
3
4
|
import { Controller } from "../controller.js";
|
|
4
5
|
import { SqliteStorage } from "../db/storage-sqlite.js";
|
|
5
|
-
import {
|
|
6
|
+
import { PassphraseKeyManager } from "../keystore/key-manager.js";
|
|
6
7
|
import { keri } from "../events/events.js";
|
|
7
|
-
import {
|
|
8
|
+
import { Message } from "cesr";
|
|
8
9
|
const storage = new SqliteStorage({ filename: ".keri/db.sqlite" });
|
|
9
10
|
storage.init();
|
|
10
11
|
function getStringArray(options, key) {
|
|
@@ -41,21 +42,24 @@ function getString(options, key) {
|
|
|
41
42
|
program.command("resolve <oobi>").action(async (oobi) => {
|
|
42
43
|
const controller = new Controller({
|
|
43
44
|
storage,
|
|
44
|
-
|
|
45
|
+
keychain: new PassphraseKeyManager({ storage }),
|
|
45
46
|
});
|
|
46
47
|
await controller.resolve(oobi);
|
|
47
48
|
});
|
|
48
49
|
program
|
|
49
50
|
.command("incept")
|
|
50
|
-
.
|
|
51
|
+
.option("--passcode <passcode>")
|
|
51
52
|
.option("--wit <wit...>")
|
|
52
53
|
.action(async (options) => {
|
|
53
|
-
const passcode =
|
|
54
|
+
const passcode = getOptionalString(options, "passcode");
|
|
54
55
|
const wits = getStringArray(options, "wit");
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
58
|
-
|
|
56
|
+
const keystore = new PassphraseKeyManager({ storage, passphrase: passcode });
|
|
57
|
+
const controller = new Controller({ storage, keychain: keystore });
|
|
58
|
+
const event = await controller.createIdentifier({
|
|
59
|
+
wits,
|
|
60
|
+
keys: [await keystore.incept()],
|
|
61
|
+
next: [await keystore.incept()],
|
|
62
|
+
});
|
|
59
63
|
console.log(event.i);
|
|
60
64
|
});
|
|
61
65
|
program
|
|
@@ -65,47 +69,47 @@ program
|
|
|
65
69
|
.requiredOption("--route <route>")
|
|
66
70
|
.requiredOption("--topic <topic>")
|
|
67
71
|
.requiredOption("--receiver <receiver aid>")
|
|
68
|
-
.
|
|
72
|
+
.option("--passcode <passcode>")
|
|
69
73
|
.requiredOption("--data <data>")
|
|
70
74
|
.action(async (options) => {
|
|
71
|
-
const passcode =
|
|
75
|
+
const passcode = getOptionalString(options, "passcode");
|
|
72
76
|
const sender = getString(options, "sender");
|
|
73
77
|
const receiver = getString(options, "receiver");
|
|
74
78
|
const route = getString(options, "route");
|
|
75
79
|
const topic = getString(options, "topic");
|
|
76
80
|
const data = JSON.parse(getString(options, "data"));
|
|
77
|
-
const keystore = new
|
|
81
|
+
const keystore = new PassphraseKeyManager({
|
|
78
82
|
storage,
|
|
79
|
-
|
|
83
|
+
passphrase: passcode,
|
|
80
84
|
});
|
|
81
|
-
const controller = new Controller({ storage,
|
|
82
|
-
const
|
|
83
|
-
|
|
85
|
+
const controller = new Controller({ storage, keychain: keystore });
|
|
86
|
+
const message = new Message(keri.exchange({
|
|
87
|
+
i: sender,
|
|
88
|
+
r: route,
|
|
89
|
+
q: {},
|
|
90
|
+
a: { i: sender, ...data },
|
|
91
|
+
e: {},
|
|
92
|
+
}));
|
|
93
|
+
await controller.forward({
|
|
84
94
|
sender: await controller.state(sender),
|
|
85
95
|
topic,
|
|
86
96
|
recipient: receiver,
|
|
87
|
-
|
|
88
|
-
i: sender,
|
|
89
|
-
r: route,
|
|
90
|
-
q: {},
|
|
91
|
-
a: { i: sender, ...data },
|
|
92
|
-
e: {},
|
|
93
|
-
}),
|
|
97
|
+
message,
|
|
94
98
|
});
|
|
95
99
|
});
|
|
96
100
|
program
|
|
97
101
|
.command("create-registry")
|
|
98
102
|
.description("Creates a new credential registry")
|
|
99
103
|
.requiredOption("--owner <owner aid>")
|
|
100
|
-
.
|
|
104
|
+
.option("--passcode <passcode>")
|
|
101
105
|
.action(async (options) => {
|
|
102
|
-
const passcode =
|
|
106
|
+
const passcode = getOptionalString(options, "passcode");
|
|
103
107
|
const owner = getString(options, "owner");
|
|
104
|
-
const keystore = new
|
|
108
|
+
const keystore = new PassphraseKeyManager({
|
|
105
109
|
storage,
|
|
106
|
-
|
|
110
|
+
passphrase: passcode,
|
|
107
111
|
});
|
|
108
|
-
const controller = new Controller({ storage,
|
|
112
|
+
const controller = new Controller({ storage, keychain: keystore });
|
|
109
113
|
const registry = await controller.createRegistry({ owner });
|
|
110
114
|
console.log(registry.i);
|
|
111
115
|
});
|
|
@@ -119,9 +123,9 @@ program
|
|
|
119
123
|
.requiredOption("--rules <rules>")
|
|
120
124
|
.option("--salt <salt>")
|
|
121
125
|
.option("--edges <edges>")
|
|
122
|
-
.
|
|
126
|
+
.option("--passcode <passcode>")
|
|
123
127
|
.action(async (options) => {
|
|
124
|
-
const passcode =
|
|
128
|
+
const passcode = getOptionalString(options, "passcode");
|
|
125
129
|
const registryId = getString(options, "registry");
|
|
126
130
|
const receiver = getString(options, "receiver");
|
|
127
131
|
const schemaId = getString(options, "schema");
|
|
@@ -129,11 +133,11 @@ program
|
|
|
129
133
|
const data = JSON.parse(getString(options, "data"));
|
|
130
134
|
const rules = JSON.parse(getString(options, "rules"));
|
|
131
135
|
const edges = JSON.parse(getOptionalString(options, "edges") ?? "null");
|
|
132
|
-
const keystore = new
|
|
136
|
+
const keystore = new PassphraseKeyManager({
|
|
133
137
|
storage,
|
|
134
|
-
|
|
138
|
+
passphrase: passcode,
|
|
135
139
|
});
|
|
136
|
-
const controller = new Controller({ storage,
|
|
140
|
+
const controller = new Controller({ storage, keychain: keystore });
|
|
137
141
|
const acdc = await controller.createCredential({
|
|
138
142
|
holder: receiver,
|
|
139
143
|
registryId: registryId,
|
|
@@ -143,24 +147,28 @@ program
|
|
|
143
147
|
rules: rules,
|
|
144
148
|
edges: edges || undefined,
|
|
145
149
|
});
|
|
150
|
+
const s = await controller.store.get(acdc.d);
|
|
151
|
+
if (!s) {
|
|
152
|
+
throw new Error("Failed to store created credential");
|
|
153
|
+
}
|
|
146
154
|
console.log(acdc.d);
|
|
147
155
|
});
|
|
148
156
|
program
|
|
149
157
|
.command("ipex-grant")
|
|
150
158
|
.requiredOption("--said <aid>")
|
|
151
|
-
.
|
|
159
|
+
.option("--passcode <passcode>")
|
|
152
160
|
.action(async (options) => {
|
|
153
|
-
const passcode =
|
|
161
|
+
const passcode = getOptionalString(options, "passcode");
|
|
154
162
|
const said = getString(options, "said");
|
|
155
|
-
const keystore = new
|
|
163
|
+
const keystore = new PassphraseKeyManager({
|
|
156
164
|
storage,
|
|
157
|
-
|
|
165
|
+
passphrase: passcode,
|
|
158
166
|
});
|
|
159
167
|
const controller = new Controller({
|
|
160
168
|
storage,
|
|
161
|
-
|
|
169
|
+
keychain: keystore,
|
|
162
170
|
});
|
|
163
|
-
const acdc = (await controller.store.get(said))?.
|
|
171
|
+
const acdc = (await controller.store.get(said))?.body;
|
|
164
172
|
if (!acdc) {
|
|
165
173
|
throw new Error(`No ACDC found for said ${said}`);
|
|
166
174
|
}
|
package/dist/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
|
|
4
|
-
event: KeyEvent;
|
|
5
|
-
attachment: string;
|
|
6
|
-
}
|
|
1
|
+
import { type ReceiptEvent } from "./events/events.ts";
|
|
2
|
+
import { type LocationRecord } from "./events/event-store.ts";
|
|
3
|
+
import { type Message } from "cesr";
|
|
7
4
|
export interface SendArgs {
|
|
8
5
|
messages: Message[];
|
|
9
6
|
}
|
|
@@ -15,7 +12,6 @@ export declare class Client {
|
|
|
15
12
|
#private;
|
|
16
13
|
role: string;
|
|
17
14
|
constructor(options: ClientOptions);
|
|
18
|
-
getReceipt(message: Message): Promise<
|
|
19
|
-
sendMessage(message: Message): Promise<
|
|
15
|
+
getReceipt(message: Message): Promise<Message<ReceiptEvent>>;
|
|
16
|
+
sendMessage(message: Message, signal?: AbortSignal): Promise<Message[]>;
|
|
20
17
|
}
|
|
21
|
-
export declare function parseKeyEvents(input: ReadableStream<Uint8Array>): AsyncIterableIterator<KeyEventMessage>;
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {} from "./events/events.js";
|
|
2
|
+
import {} from "./events/event-store.js";
|
|
3
|
+
import { parse } from "cesr";
|
|
2
4
|
export class Client {
|
|
3
5
|
#location;
|
|
4
6
|
role;
|
|
@@ -13,10 +15,10 @@ export class Client {
|
|
|
13
15
|
}
|
|
14
16
|
const response = await fetch(url, {
|
|
15
17
|
method: "POST",
|
|
16
|
-
body: JSON.stringify(message.
|
|
18
|
+
body: JSON.stringify(message.body),
|
|
17
19
|
headers: {
|
|
18
20
|
"Content-Type": "application/cesr+json",
|
|
19
|
-
"CESR-ATTACHMENT": message.
|
|
21
|
+
"CESR-ATTACHMENT": message.attachments.text(),
|
|
20
22
|
},
|
|
21
23
|
});
|
|
22
24
|
if (!response.ok) {
|
|
@@ -25,64 +27,59 @@ export class Client {
|
|
|
25
27
|
if (!response.body) {
|
|
26
28
|
throw new Error(`Failed to send event: ${response.status} ${response.statusText}`);
|
|
27
29
|
}
|
|
28
|
-
for await (const
|
|
29
|
-
if (
|
|
30
|
-
return
|
|
30
|
+
for await (const incoming of parse(response.body)) {
|
|
31
|
+
if (incoming.body.t === "rct" && incoming.body.d === message.body.d) {
|
|
32
|
+
return incoming;
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
throw new Error(`Failed to get receipt for event: ${response.status} ${response.statusText}`);
|
|
34
36
|
}
|
|
35
|
-
async sendMessage(message) {
|
|
37
|
+
async sendMessage(message, signal) {
|
|
36
38
|
const url = new URL("/", this.#location.url);
|
|
39
|
+
const body = JSON.stringify(message.body);
|
|
40
|
+
const headers = {
|
|
41
|
+
"Content-Type": "application/cesr+json",
|
|
42
|
+
"CESR-ATTACHMENT": message.attachments.text(),
|
|
43
|
+
"CESR-DESTINATION": this.#location.eid,
|
|
44
|
+
};
|
|
37
45
|
const response = await fetch(url, {
|
|
38
46
|
method: "POST",
|
|
39
|
-
body
|
|
40
|
-
headers
|
|
41
|
-
|
|
42
|
-
"CESR-ATTACHMENT": message.attachment,
|
|
43
|
-
"CESR-DESTINATION": this.#location.eid,
|
|
44
|
-
},
|
|
47
|
+
body,
|
|
48
|
+
headers,
|
|
49
|
+
signal,
|
|
45
50
|
});
|
|
46
51
|
if (!response.ok) {
|
|
47
52
|
throw new Error(`Failed to send event: ${response.status} ${response.statusText}`);
|
|
48
53
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
54
|
+
if (!response.body) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
const contentType = response.headers.get("Content-Type");
|
|
58
|
+
if (!contentType) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
if (contentType === "text/event-stream") {
|
|
62
|
+
const reader = response.body.getReader();
|
|
63
|
+
while (true) {
|
|
64
|
+
const { done, value } = await reader.read();
|
|
65
|
+
if (done) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
const str = new TextDecoder().decode(value);
|
|
69
|
+
for (const line of str.split("\n")) {
|
|
70
|
+
if (line.startsWith("data: ")) {
|
|
71
|
+
const data = line.slice(6);
|
|
72
|
+
const message = await Array.fromAsync(parse(data));
|
|
73
|
+
reader.cancel("Got message, cancelling reader");
|
|
74
|
+
return message;
|
|
75
|
+
}
|
|
68
76
|
}
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
receipts: decouple(receipts).map(([backer, signature]) => ({ backer, signature })),
|
|
74
|
-
signatures,
|
|
75
|
-
timestamp: new Date(),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function decouple(arr) {
|
|
80
|
-
const result = [];
|
|
81
|
-
for (let i = 0; i < arr.length; i++) {
|
|
82
|
-
if (i % 2 === 0) {
|
|
83
|
-
result.push([arr[i], arr[i + 1]]);
|
|
79
|
+
if (contentType?.startsWith("application/json")) {
|
|
80
|
+
return [];
|
|
84
81
|
}
|
|
82
|
+
return await Array.fromAsync(parse(response.body));
|
|
85
83
|
}
|
|
86
|
-
return result;
|
|
87
84
|
}
|
|
88
85
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/controller.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ControllerEventStore, type KeyValueStorage, type
|
|
2
|
-
import type { Key, KeyManager } from "./keystore/key-manager.ts";
|
|
1
|
+
import { ControllerEventStore, type KeyValueStorage, type KeyState, type LocationRecord } from "./events/event-store.ts";
|
|
3
2
|
import { type KeyEvent, type InteractEvent, type CredentialEvent, type RegistryInceptEvent } from "./events/events.ts";
|
|
4
3
|
import { Client } from "./client.ts";
|
|
4
|
+
import { Message } from "cesr";
|
|
5
5
|
export interface ControllerDeps {
|
|
6
|
-
|
|
6
|
+
keychain: Keychain;
|
|
7
7
|
storage: KeyValueStorage;
|
|
8
8
|
}
|
|
9
9
|
export interface IpexGrantArgs {
|
|
@@ -12,18 +12,23 @@ export interface IpexGrantArgs {
|
|
|
12
12
|
timestamp?: string;
|
|
13
13
|
}
|
|
14
14
|
export interface ForwardArgs {
|
|
15
|
-
|
|
15
|
+
message: Message<KeyEvent>;
|
|
16
16
|
sender: KeyState;
|
|
17
17
|
topic: string;
|
|
18
18
|
recipient: string;
|
|
19
|
-
attachment?: string;
|
|
20
19
|
timestamp?: string;
|
|
21
20
|
}
|
|
22
21
|
export interface InceptArgs {
|
|
23
|
-
keys
|
|
22
|
+
keys: string[];
|
|
23
|
+
next?: string[];
|
|
24
24
|
wits?: string[];
|
|
25
25
|
toad?: number;
|
|
26
26
|
}
|
|
27
|
+
export interface ReplyArgs {
|
|
28
|
+
aid: string;
|
|
29
|
+
route: string;
|
|
30
|
+
data: Record<string, unknown>;
|
|
31
|
+
}
|
|
27
32
|
export interface InteractArgs {
|
|
28
33
|
aid: string;
|
|
29
34
|
data: Record<string, unknown>;
|
|
@@ -42,22 +47,26 @@ export interface CreateCredentialArgs {
|
|
|
42
47
|
edges?: Record<string, unknown>;
|
|
43
48
|
timestamp?: Date;
|
|
44
49
|
}
|
|
50
|
+
export interface Keychain {
|
|
51
|
+
sign(publicKey: string, message: Uint8Array): Promise<string>;
|
|
52
|
+
}
|
|
45
53
|
export declare class Controller {
|
|
46
54
|
#private;
|
|
47
55
|
get store(): ControllerEventStore;
|
|
48
56
|
constructor(deps: ControllerDeps);
|
|
49
|
-
createIdentifier(args
|
|
57
|
+
createIdentifier(args: InceptArgs): Promise<KeyState>;
|
|
58
|
+
reply(args: ReplyArgs): Promise<void>;
|
|
50
59
|
interact(args: InteractArgs): Promise<InteractEvent>;
|
|
51
60
|
createRegistry(args: CreateRegistryArgs): Promise<RegistryInceptEvent>;
|
|
52
61
|
createCredential(args: CreateCredentialArgs): Promise<CredentialEvent>;
|
|
53
62
|
resolve(oobi: string): Promise<void>;
|
|
54
63
|
getClient(cid: string): Promise<Client>;
|
|
55
64
|
getLocation(aid: string): Promise<LocationRecord>;
|
|
56
|
-
submit
|
|
65
|
+
private submit;
|
|
57
66
|
state(said: string): Promise<KeyState>;
|
|
58
|
-
listEvents(id: string): Promise<
|
|
67
|
+
listEvents(id: string): Promise<Message<KeyEvent>[]>;
|
|
59
68
|
sendCredentialArficats(credential: CredentialEvent, recipient: string): Promise<void>;
|
|
60
69
|
grant(args: IpexGrantArgs): Promise<void>;
|
|
61
|
-
forward(
|
|
70
|
+
forward(args: ForwardArgs): Promise<void>;
|
|
62
71
|
sign(event: Record<string, unknown>, keys: string[]): Promise<string[]>;
|
|
63
72
|
}
|