keri 0.0.7 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"key-manager.js","sourceRoot":"","sources":["../../src/keystore/key-manager.ts"],"names":[],"mappings":"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"}
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>;
@@ -0,0 +1,46 @@
1
+ import * as readline from "node:readline";
2
+ import * as process from "node:process";
3
+ export async function pinentry(prompt) {
4
+ await new Promise((resolve) => setTimeout(resolve, 0));
5
+ return new Promise((resolve) => {
6
+ const rl = readline.createInterface({
7
+ input: process.stdin,
8
+ });
9
+ let input = "";
10
+ process.stdout.write(prompt + " ");
11
+ readline.emitKeypressEvents(process.stdin);
12
+ if (process.stdin.isTTY) {
13
+ process.stdin.setRawMode(true);
14
+ }
15
+ const cleanup = () => {
16
+ if (process.stdin.isTTY) {
17
+ process.stdin.setRawMode(false);
18
+ }
19
+ process.stdin.removeListener("keypress", handleKeyPress);
20
+ rl.close();
21
+ process.stdout.write("\n");
22
+ };
23
+ const handleKeyPress = (str, key) => {
24
+ if (key.name === "return") {
25
+ cleanup();
26
+ resolve(input);
27
+ }
28
+ else if (key.name === "escape" || (key.ctrl && key.name === "c")) {
29
+ cleanup();
30
+ resolve(null);
31
+ }
32
+ else if (key.name === "backspace") {
33
+ if (input.length > 0) {
34
+ input = input.slice(0, -1);
35
+ process.stdout.write("\x1B[1D \x1B[1D");
36
+ }
37
+ }
38
+ else if (str && !key.ctrl && !key.meta) {
39
+ input += str;
40
+ process.stdout.write("*");
41
+ }
42
+ };
43
+ process.stdin.on("keypress", handleKeyPress);
44
+ });
45
+ }
46
+ //# sourceMappingURL=pinentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinentry.js","sourceRoot":"","sources":["../../src/keystore/pinentry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc;IAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAEnC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YACzD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,GAAiB,EAAE,EAAE;YACxD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACzC,KAAK,IAAI,GAAG,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/main.d.ts CHANGED
@@ -4,4 +4,4 @@ export * from "./db/storage.ts";
4
4
  export * from "./keystore/key-manager.ts";
5
5
  export * from "./keystore/encrypt.ts";
6
6
  export * from "./controller.ts";
7
- export * from "./witness.ts";
7
+ export * from "cesr";
package/dist/main.js CHANGED
@@ -4,5 +4,5 @@ export * from "./db/storage.js";
4
4
  export * from "./keystore/key-manager.js";
5
5
  export * from "./keystore/encrypt.js";
6
6
  export * from "./controller.js";
7
- export * from "./witness.js";
7
+ export * from "cesr";
8
8
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "name": "keri",
3
- "version": "0.0.7",
3
+ "version": "0.0.8-dev.0f93fc3",
4
4
  "scripts": {
5
5
  "build": "tsc -p tsconfig.build.json",
6
6
  "dev": "tsc -p tsconfig.build.json --watch",
7
7
  "test": "node --test --test-reporter=spec --no-warnings --experimental-strip-types",
8
8
  "test:integration": "npm test -- 'test_integration/**/*.ts'",
9
- "test:scripts": "node --no-warnings --experimental-strip-types scripts/run-scripts.ts",
9
+ "test:scripts": "node --no-warnings scripts/run-scripts.ts",
10
+ "test:example": "./test_examples.sh",
10
11
  "lint": "eslint",
11
- "clean": "node --experimental-strip-types --no-warnings scripts/clean.ts"
12
+ "check": "tsc --noEmit",
13
+ "clean": "node scripts/clean.ts",
14
+ "format": "prettier --write .",
15
+ "format:check": "prettier --check ."
12
16
  },
13
17
  "bin": {
14
18
  "keri": "dist/cli/main.js"
@@ -24,6 +28,18 @@
24
28
  "author": "Daniel Lenksjö",
25
29
  "license": "Apache-2.0",
26
30
  "description": "KERI for JavaScript",
31
+ "devEngines": {
32
+ "runtime": {
33
+ "name": "node",
34
+ "version": ">=24",
35
+ "onFail": "warn"
36
+ },
37
+ "packageManager": {
38
+ "name": "npm",
39
+ "version": ">=11",
40
+ "onFail": "warn"
41
+ }
42
+ },
27
43
  "engines": {
28
44
  "node": ">=22"
29
45
  },
@@ -32,7 +48,7 @@
32
48
  "@noble/ed25519": "^3.0.0",
33
49
  "@noble/hashes": "^2.0.0",
34
50
  "@noble/secp256k1": "^3.0.0",
35
- "cesr": "^0.0.14",
51
+ "cesr": "^0.0.23-dev.66c3786",
36
52
  "commander": "^14.0.0"
37
53
  },
38
54
  "devDependencies": {
@@ -1,10 +0,0 @@
1
- import { type KeyEventReceipt, type KeyEventSeal } from "./events/event-store.ts";
2
- export declare function encodeHexNumber(num: string): string;
3
- export declare function serializeSignatures(sigs: string[], seal?: KeyEventSeal): string;
4
- export declare function serializeWitnessSignatures(receipts: KeyEventReceipt[], backers: string[]): string;
5
- export declare function serializeReceipts(receipts: KeyEventReceipt[]): string;
6
- export declare function serializePathedGroup(path: string[], attachments: string[]): string;
7
- export declare function serializeAttachments(attachments: string[]): string;
8
- export declare function serializeEventSeal(seal: KeyEventSeal): string;
9
- export declare function serializeDigestSeal(seal: KeyEventSeal): string;
10
- export declare function getIndexedCode(code: string): string;
@@ -1,83 +0,0 @@
1
- import { cesr, CountCode_10, encodeAttachmentsV1, encodeBase64Int, encodeCounter, encodeString, IndexCode, MatterCode, } from "cesr/__unstable__";
2
- export function encodeHexNumber(num) {
3
- return `${MatterCode.Salt_128}${encodeBase64Int(parseInt(num, 16), 22)}`;
4
- }
5
- export function serializeSignatures(sigs, seal) {
6
- const result = [];
7
- if (sigs && sigs.length > 0) {
8
- if (seal && seal.i && seal.s && seal.d) {
9
- result.push(encodeCounter({
10
- code: CountCode_10.TransIdxSigGroups,
11
- count: 1,
12
- }));
13
- result.push(seal.i);
14
- result.push(encodeHexNumber(seal.s));
15
- result.push(seal.d);
16
- }
17
- result.push(encodeCounter({ code: CountCode_10.ControllerIdxSigs, count: sigs.length }));
18
- result.push(...sigs);
19
- }
20
- return result.join("");
21
- }
22
- export function serializeWitnessSignatures(receipts, backers) {
23
- const result = [];
24
- if (receipts.length > 0) {
25
- result.push(encodeCounter({ code: CountCode_10.WitnessIdxSigs, count: receipts.length }));
26
- for (const sig of receipts) {
27
- const signature = cesr.decodeMatter(sig.signature);
28
- const index = backers.indexOf(sig.backer);
29
- if (index === -1) {
30
- throw new Error(`Unknown backer ${sig.backer}`);
31
- }
32
- result.push(cesr.encodeIndexer({
33
- code: getIndexedCode(signature.code),
34
- raw: signature.raw,
35
- index: index,
36
- }));
37
- }
38
- }
39
- return result.join("");
40
- }
41
- export function serializeReceipts(receipts) {
42
- const result = [];
43
- if (receipts.length > 0) {
44
- result.push(encodeCounter({ code: CountCode_10.NonTransReceiptCouples, count: receipts.length }));
45
- result.push(...receipts.map((receipt) => receipt.backer + receipt.signature));
46
- }
47
- return result.join("");
48
- }
49
- export function serializePathedGroup(path, attachments) {
50
- const result = [];
51
- result.push(encodeString(`-${path.join("-")}`));
52
- result.push(...attachments);
53
- return (encodeCounter({
54
- code: CountCode_10.PathedMaterialCouples,
55
- count: result.join("").length / 4,
56
- }) + result.join(""));
57
- }
58
- export function serializeAttachments(attachments) {
59
- const result = attachments.join("");
60
- return `${encodeAttachmentsV1(result.length / 4)}${result}`;
61
- }
62
- export function serializeEventSeal(seal) {
63
- return [
64
- encodeCounter({ code: CountCode_10.SealSourceTriples, count: 1 }),
65
- seal.i,
66
- encodeHexNumber(seal.s),
67
- seal.d,
68
- ].join("");
69
- }
70
- export function serializeDigestSeal(seal) {
71
- return [encodeCounter({ code: CountCode_10.SealSourceCouples, count: 1 }), encodeHexNumber(seal.s), seal.d].join("");
72
- }
73
- export function getIndexedCode(code) {
74
- switch (code) {
75
- case MatterCode.Ed25519_Sig:
76
- return IndexCode.Ed25519_Sig;
77
- case MatterCode.Ed448_Sig:
78
- return IndexCode.Ed448_Sig;
79
- default:
80
- throw new Error(`Unsupported indexed signature type: ${code}`);
81
- }
82
- }
83
- //# sourceMappingURL=serializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
package/dist/witness.d.ts DELETED
@@ -1,17 +0,0 @@
1
- export interface OobiArgs {
2
- aid?: string;
3
- role?: string;
4
- }
5
- export interface WitnessOptions {
6
- seed?: Uint8Array;
7
- }
8
- export declare class Witness {
9
- #private;
10
- constructor(options?: WitnessOptions);
11
- /**
12
- * Handle incoming HTTP requests
13
- *
14
- * @param request The incoming HTTP request
15
- */
16
- fetch(request: Request): Promise<Response>;
17
- }
package/dist/witness.js DELETED
@@ -1,99 +0,0 @@
1
- import { ed25519 } from "@noble/curves/ed25519.js";
2
- import { cesr, CountCode_10, encodeCounter, IndexCode, MatterCode } from "cesr/__unstable__";
3
- import { keri } from "./events/events.js";
4
- import { encodeHexNumber, serializeAttachments, serializeReceipts, serializeSignatures } from "./serializer.js";
5
- export class Witness {
6
- #privateKey;
7
- #publicKey;
8
- #icp;
9
- #signature;
10
- constructor(options = {}) {
11
- this.#privateKey = ed25519.utils.randomSecretKey(options.seed);
12
- this.#publicKey = cesr.encodeMatter({ code: MatterCode.Ed25519N, raw: ed25519.getPublicKey(this.#privateKey) });
13
- this.#icp = keri.incept({
14
- k: [this.#publicKey],
15
- kt: "1",
16
- });
17
- this.#signature = cesr.encodeIndexer({
18
- code: IndexCode.Ed25519_Sig,
19
- raw: ed25519.sign(new TextEncoder().encode(JSON.stringify(this.#icp)), this.#privateKey),
20
- index: 0,
21
- });
22
- }
23
- #createResponse(message) {
24
- const body = [
25
- JSON.stringify(message.event),
26
- serializeAttachments([
27
- serializeSignatures(message.signatures),
28
- serializeReceipts(message.receipts),
29
- encodeCounter({
30
- code: CountCode_10.FirstSeenReplayCouples,
31
- count: 1,
32
- }),
33
- encodeHexNumber(message.event.s ?? "0"),
34
- cesr.encodeDate(message.timestamp),
35
- ]),
36
- ].join("");
37
- return new Response(body, {
38
- status: 200,
39
- headers: { "Content-Type": "application/json+cesr" },
40
- });
41
- }
42
- async #oobi(request) {
43
- if (request.method.toUpperCase() !== "GET") {
44
- return new Response("Method Not Allowed", { status: 405 });
45
- }
46
- const match = request.url.match(/\/oobi\/?([A-Za-z0-9_-])?$/);
47
- if (!match) {
48
- return new Response("Not Found", { status: 404 });
49
- }
50
- const response = this.#createResponse({
51
- event: this.#icp,
52
- signatures: [this.#signature],
53
- receipts: [],
54
- timestamp: new Date(),
55
- });
56
- response.headers.set("Keri-Aid", this.#icp.i);
57
- return response;
58
- }
59
- #sign(event) {
60
- const raw = new TextEncoder().encode(JSON.stringify(event));
61
- const sign = ed25519.sign(raw, this.#privateKey);
62
- return cesr.encodeMatter({ code: MatterCode.Ed25519_Sig, raw: sign });
63
- }
64
- async #receipt(request) {
65
- const event = (await request.json());
66
- if (typeof event.i !== "string" || typeof event.d !== "string" || typeof event.s !== "string") {
67
- return new Response("Bad Request", { status: 400 });
68
- }
69
- return this.#createResponse({
70
- event: keri.receipt({ d: event.d, i: event.i, s: event.s }),
71
- signatures: [],
72
- receipts: [{ backer: this.#icp.i, signature: this.#sign(event) }],
73
- timestamp: new Date(),
74
- });
75
- }
76
- /**
77
- * Handle incoming HTTP requests
78
- *
79
- * @param request The incoming HTTP request
80
- */
81
- async fetch(request) {
82
- try {
83
- const url = new URL(request.url);
84
- if (url.pathname.startsWith("/oobi")) {
85
- return await this.#oobi(request);
86
- }
87
- if (url.pathname === "/receipts" && request.method.toUpperCase() === "POST") {
88
- return await this.#receipt(request);
89
- }
90
- return new Response("Not Found", { status: 404 });
91
- }
92
- catch (err) {
93
- // eslint-disable-next-line no-console
94
- console.error("Error handling request:", err);
95
- return new Response("Internal Server Error", { status: 500 });
96
- }
97
- }
98
- }
99
- //# sourceMappingURL=witness.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"witness.js","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"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"}