@motebit/verifier 1.0.0 → 1.1.0

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 CHANGED
@@ -1,25 +1,31 @@
1
1
  # @motebit/verifier
2
2
 
3
- Offline third-party verifier for every signed Motebit artifact.
3
+ Apache-2.0 library for verifying signed Motebit artifacts. The thin file-reading + human-formatting layer on top of [`@motebit/crypto`](https://www.npmjs.com/package/@motebit/crypto)'s pure verification primitives.
4
4
 
5
5
  ```bash
6
- npm i -g @motebit/verifier
7
- motebit-verify motebit.md
6
+ npm i @motebit/verifier
8
7
  ```
9
8
 
10
- Outputs
9
+ ```ts
10
+ import { verifyFile } from "@motebit/verifier";
11
11
 
12
- ```
13
- VALID (identity)
14
- did: did:motebit:01234567-...
15
- name: my-agent
12
+ const result = await verifyFile("./receipt.json");
13
+ if (result.valid && result.type === "receipt") {
14
+ console.log(`receipt signed by ${result.signer}`);
15
+ }
16
16
  ```
17
17
 
18
18
  Zero relay contact. Zero network. The signer's public key is embedded in the artifact or derivable from it; verification is pure crypto against committed wire formats.
19
19
 
20
+ ## Looking for the `motebit-verify` command-line tool?
21
+
22
+ Install [`@motebit/verify`](https://www.npmjs.com/package/@motebit/verify) instead. That package ships the `motebit-verify` binary with every hardware-attestation platform bundled. This package (`@motebit/verifier`) is the library it sits on — reach for it when you're writing TypeScript code that consumes signed artifacts programmatically.
23
+
24
+ The naming follows the verb / agent-noun lineage that survives for decades — `git` / `libgit2`, `cargo` / `tokio`, `npm` / `@npm/arborist`. Verb (`verify`) = the tool a human installs. Agent-noun with `-er` suffix (`verifier`) = the library code links against.
25
+
20
26
  ## Why this exists
21
27
 
22
- Motebit's moat is the **self-signing body**: every action the agent takes emits a signed receipt that any third party can verify without running the motebit. This package is the smallest public surface of that promise — a CLI and a library that together answer _"is this signed artifact authentic, and what does it claim?"_
28
+ Motebit's moat is the **self-signing body**: every action the agent takes emits a signed receipt that any third party can verify without running the motebit. This package is the smallest public surface of that promise — a deterministic verification library that answers _"is this signed artifact authentic, and what does it claim?"_ — exposed for programmatic consumption.
23
29
 
24
30
  ## What it verifies
25
31
 
@@ -30,45 +36,17 @@ The unified `verify()` dispatcher in [`@motebit/crypto`](https://www.npmjs.com/p
30
36
  - **credential** — W3C-style Verifiable Credentials
31
37
  - **presentation** — W3C-style Verifiable Presentations
32
38
 
33
- ## Usage
34
-
35
- ```
36
- motebit-verify <file> [options]
37
-
38
- --json Print structured JSON instead of human.
39
- --expect <type> Pin expected type: identity | receipt | credential | presentation.
40
- --clock-skew <seconds> Allowance for credential/presentation time bounds.
41
- -h, --help
42
- -V, --version
43
- ```
44
-
45
- ### Exit codes
46
-
47
- | Code | Meaning |
48
- | ---- | --------------------------------------------------- |
49
- | `0` | Artifact verified |
50
- | `1` | Artifact invalid (bad signature, expired, mismatch) |
51
- | `2` | Usage or I/O error |
52
-
53
- POSIX-friendly — chain into CI gates, `make` targets, `git` hooks.
54
-
55
- ### Library
56
-
57
- ```ts
58
- import { verifyFile } from "@motebit/verifier";
59
-
60
- const result = await verifyFile("./receipt.json");
61
- if (result.valid) console.log(`receipt signed by ${result.receipt?.signer}`);
62
- ```
39
+ This package wraps the dispatcher with `verifyFile` (path → result), `verifyArtifact` (string → result), and `formatHuman` (result → printable banner).
63
40
 
64
41
  ## Guarantees
65
42
 
66
43
  - **No network.** Verification runs entirely offline. No relay calls, no DID resolution over the wire.
67
44
  - **No dependencies beyond `@motebit/crypto`.** Every dependency is a trust attack surface we'd have to re-audit on every upgrade.
68
- - **Suite-agile.** New signature suites (post-quantum, future) are registry additions, not CLI changes — `@motebit/crypto`'s `verifyBySuite` dispatches for us.
45
+ - **Suite-agile.** New signature suites (post-quantum, future) are registry additions, not library changes — `@motebit/crypto`'s `verifyBySuite` dispatches for us.
69
46
 
70
47
  ## Related
71
48
 
49
+ - [`@motebit/verify`](https://www.npmjs.com/package/@motebit/verify) — the **`motebit-verify` CLI** that ships with every hardware-attestation platform bundled. Install this if you want the command-line tool.
72
50
  - [`@motebit/crypto`](https://www.npmjs.com/package/@motebit/crypto) — the verification primitives this package wraps (Apache-2.0, zero deps)
73
51
  - [`@motebit/protocol`](https://www.npmjs.com/package/@motebit/protocol) — protocol types for the artifacts being verified (Apache-2.0, zero deps)
74
52
  - [`@motebit/sdk`](https://www.npmjs.com/package/@motebit/sdk) — developer contract for building Motebit-powered agents
package/dist/index.d.ts CHANGED
@@ -31,7 +31,7 @@
31
31
  * `play_integrity` / `webauthn` claims. Permissive-floor consumers can
32
32
  * supply their own; `@motebit/verify` wires the canonical bundle.
33
33
  */
34
- export { verifyFile, verifyArtifact, formatHuman } from "./lib.js";
34
+ export { verifyFile, verifyArtifact, verifySkillDirectory, formatHuman } from "./lib.js";
35
35
  export type { VerifyFileOptions } from "./lib.js";
36
- export type { VerifyResult, ArtifactType } from "@motebit/crypto";
36
+ export type { VerifyResult, ArtifactType, SkillVerifyResult, SkillFileVerifyResult, } from "@motebit/crypto";
37
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzF,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -31,5 +31,5 @@
31
31
  * `play_integrity` / `webauthn` claims. Permissive-floor consumers can
32
32
  * supply their own; `@motebit/verify` wires the canonical bundle.
33
33
  */
34
- export { verifyFile, verifyArtifact, formatHuman } from "./lib.js";
34
+ export { verifyFile, verifyArtifact, verifySkillDirectory, formatHuman } from "./lib.js";
35
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
package/dist/lib.d.ts CHANGED
@@ -8,12 +8,14 @@
8
8
  * - `receipt` — signed `ExecutionReceipt` JSON
9
9
  * - `credential` — W3C-style `VerifiableCredential` JSON
10
10
  * - `presentation`— `VerifiablePresentation` JSON
11
+ * - `skill` — directory containing `SKILL.md` + `skill-envelope.json`
12
+ * plus any auxiliary `files[]` declared in the envelope
11
13
  *
12
14
  * Error handling: file I/O errors throw (caller decides how to surface).
13
15
  * Parse / signature errors are returned as `valid: false` results so the
14
16
  * caller can render a structured reason instead of catching exceptions.
15
17
  */
16
- import { type ArtifactType, type HardwareAttestationVerifiers, type VerifyResult } from "@motebit/crypto";
18
+ import { type ArtifactType, type HardwareAttestationVerifiers, type SkillVerifyResult, type VerifyResult } from "@motebit/crypto";
17
19
  export interface VerifyFileOptions {
18
20
  /**
19
21
  * Pin the expected artifact type. When set, detection must match or
@@ -45,8 +47,35 @@ export interface VerifyFileOptions {
45
47
  /**
46
48
  * Verify an artifact read from disk. Auto-detects type via content
47
49
  * inspection in `@motebit/crypto`.
50
+ *
51
+ * Path-shape dispatch:
52
+ * - Directory → routed to `verifySkillDirectory` (a skill ships as
53
+ * `<dir>/SKILL.md` + `<dir>/skill-envelope.json` plus any auxiliary
54
+ * files declared in `envelope.files[]`). The full envelope-sig +
55
+ * body-hash + per-file-hash cross-check runs on disk.
56
+ * - File → read as bytes and routed through `verifyArtifact`, which
57
+ * calls `@motebit/crypto`'s detector.
48
58
  */
49
59
  export declare function verifyFile(path: string, opts?: VerifyFileOptions): Promise<VerifyResult>;
60
+ /**
61
+ * Verify a skill directory end-to-end: envelope signature + body hash
62
+ * + every declared file hash. Reads `<dir>/skill-envelope.json` and
63
+ * `<dir>/SKILL.md`, plus each file in `envelope.files[]` from the
64
+ * directory tree, then composes the unified `SkillVerifyResult`.
65
+ *
66
+ * Faithful to `services/relay/CLAUDE.md` rule 6 ("relay is a
67
+ * convenience layer, not a trust root") at the ecosystem layer: an
68
+ * agentskills.io user with a skill they downloaded from anywhere can
69
+ * run `motebit-verify <path-to-skill-dir>` and answer "is this signed
70
+ * AND do the bytes match the signature?" without trusting any motebit
71
+ * service.
72
+ *
73
+ * I/O failures (missing envelope, missing SKILL.md, unreadable
74
+ * directory) return `valid: false` with named errors rather than
75
+ * throwing, so the CLI's structured-output path can surface them
76
+ * uniformly with signature/hash failures.
77
+ */
78
+ export declare function verifySkillDirectory(dir: string, opts?: VerifyFileOptions): Promise<SkillVerifyResult>;
50
79
  /**
51
80
  * Verify an already-loaded artifact. Accepts a JSON string, an
52
81
  * already-parsed object, or a `motebit.md` identity string.
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;CAC7D;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAG9F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAqBxD"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;CAC7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAS9F;AA2BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAoE5B;AA8CD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,YAAY,CAAC,CAgBvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAqBxD"}
package/dist/lib.js CHANGED
@@ -8,21 +8,186 @@
8
8
  * - `receipt` — signed `ExecutionReceipt` JSON
9
9
  * - `credential` — W3C-style `VerifiableCredential` JSON
10
10
  * - `presentation`— `VerifiablePresentation` JSON
11
+ * - `skill` — directory containing `SKILL.md` + `skill-envelope.json`
12
+ * plus any auxiliary `files[]` declared in the envelope
11
13
  *
12
14
  * Error handling: file I/O errors throw (caller decides how to surface).
13
15
  * Parse / signature errors are returned as `valid: false` results so the
14
16
  * caller can render a structured reason instead of catching exceptions.
15
17
  */
16
- import { readFile } from "node:fs/promises";
17
- import { verify, } from "@motebit/crypto";
18
+ import { readFile, stat } from "node:fs/promises";
19
+ import { join, basename } from "node:path";
20
+ import { verify, verifySkillBundle, } from "@motebit/crypto";
18
21
  /**
19
22
  * Verify an artifact read from disk. Auto-detects type via content
20
23
  * inspection in `@motebit/crypto`.
24
+ *
25
+ * Path-shape dispatch:
26
+ * - Directory → routed to `verifySkillDirectory` (a skill ships as
27
+ * `<dir>/SKILL.md` + `<dir>/skill-envelope.json` plus any auxiliary
28
+ * files declared in `envelope.files[]`). The full envelope-sig +
29
+ * body-hash + per-file-hash cross-check runs on disk.
30
+ * - File → read as bytes and routed through `verifyArtifact`, which
31
+ * calls `@motebit/crypto`'s detector.
21
32
  */
22
33
  export async function verifyFile(path, opts) {
34
+ // I/O failures bubble up per the existing contract — the caller
35
+ // (CLI, library consumer) decides whether to surface or transform.
36
+ const stats = await stat(path);
37
+ if (stats.isDirectory()) {
38
+ return verifySkillDirectory(path, opts);
39
+ }
23
40
  const content = await readFile(path, "utf-8");
24
41
  return verifyArtifact(content, opts);
25
42
  }
43
+ /**
44
+ * Body-bytes extraction from a SKILL.md file. Splits on the YAML
45
+ * frontmatter delimiters and returns the LF-normalized body bytes — the
46
+ * exact input that `signSkillEnvelope` hashed at sign time, per
47
+ * `spec/skills-v1.md` §5.1.
48
+ *
49
+ * Light-weight by design: no YAML parse, no schema validation. The
50
+ * verifier needs body bytes for hashing, not a structured manifest. A
51
+ * malformed frontmatter (no closing `---`) returns `null` so the caller
52
+ * surfaces it as `body_hash` step `actual: null` rather than throwing.
53
+ */
54
+ function extractSkillBody(rawText) {
55
+ // Strip the UTF-8 BOM (U+FEFF) if present, then normalize line
56
+ // endings. Regex unicode-escape keeps the source ASCII-only.
57
+ const text = rawText
58
+ .replace(/^\uFEFF/, "")
59
+ .replace(/\r\n/g, "\n")
60
+ .replace(/\r/g, "\n");
61
+ if (!text.startsWith("---\n"))
62
+ return null;
63
+ const closing = text.indexOf("\n---\n", 4);
64
+ if (closing === -1)
65
+ return null;
66
+ const bodyStart = closing + "\n---\n".length;
67
+ return new TextEncoder().encode(text.slice(bodyStart));
68
+ }
69
+ /**
70
+ * Verify a skill directory end-to-end: envelope signature + body hash
71
+ * + every declared file hash. Reads `<dir>/skill-envelope.json` and
72
+ * `<dir>/SKILL.md`, plus each file in `envelope.files[]` from the
73
+ * directory tree, then composes the unified `SkillVerifyResult`.
74
+ *
75
+ * Faithful to `services/relay/CLAUDE.md` rule 6 ("relay is a
76
+ * convenience layer, not a trust root") at the ecosystem layer: an
77
+ * agentskills.io user with a skill they downloaded from anywhere can
78
+ * run `motebit-verify <path-to-skill-dir>` and answer "is this signed
79
+ * AND do the bytes match the signature?" without trusting any motebit
80
+ * service.
81
+ *
82
+ * I/O failures (missing envelope, missing SKILL.md, unreadable
83
+ * directory) return `valid: false` with named errors rather than
84
+ * throwing, so the CLI's structured-output path can surface them
85
+ * uniformly with signature/hash failures.
86
+ */
87
+ export async function verifySkillDirectory(dir, opts) {
88
+ const envelopePath = join(dir, "skill-envelope.json");
89
+ const skillMdPath = join(dir, "SKILL.md");
90
+ // Step 0 — read the envelope. Failures collapse to a structured
91
+ // valid-false rather than throwing so the CLI's --json output stays
92
+ // uniform across signature-fails and disk-fails.
93
+ let envelopeJson;
94
+ try {
95
+ envelopeJson = await readFile(envelopePath, "utf-8");
96
+ }
97
+ catch (err) {
98
+ const msg = err instanceof Error ? err.message : String(err);
99
+ return invalidSkillResult(`failed to read ${basename(envelopePath)}: ${msg}`);
100
+ }
101
+ let envelope;
102
+ try {
103
+ envelope = JSON.parse(envelopeJson);
104
+ }
105
+ catch (err) {
106
+ const msg = err instanceof Error ? err.message : String(err);
107
+ return invalidSkillResult(`failed to parse ${basename(envelopePath)}: ${msg}`);
108
+ }
109
+ if (opts?.expectedType !== undefined && opts.expectedType !== "skill") {
110
+ return invalidSkillResult(`Expected type "${opts.expectedType}" but found a skill directory`, envelope);
111
+ }
112
+ // Step 1 — read SKILL.md, extract LF-normalized body bytes. Same I/O
113
+ // separation as before; the actual verification (sig + body + files)
114
+ // delegates to `verifySkillBundle` in @motebit/crypto so browser
115
+ // consumers and this directory walker run the same code.
116
+ let skillMd;
117
+ try {
118
+ skillMd = await readFile(skillMdPath, "utf-8");
119
+ }
120
+ catch (err) {
121
+ const msg = err instanceof Error ? err.message : String(err);
122
+ return ioFailureSkillResult(envelope, [
123
+ { message: `failed to read ${basename(skillMdPath)}: ${msg}`, path: "body_hash" },
124
+ ]);
125
+ }
126
+ const bodyBytes = extractSkillBody(skillMd);
127
+ if (bodyBytes === null) {
128
+ return ioFailureSkillResult(envelope, [
129
+ {
130
+ message: `${basename(skillMdPath)} is not a valid SKILL.md (missing frontmatter delimiters)`,
131
+ path: "body_hash",
132
+ },
133
+ ]);
134
+ }
135
+ // Step 2 — read every file declared in envelope.files[]. Missing
136
+ // bytes are passed through as `undefined` so verifySkillBundle can
137
+ // surface `reason: "missing"` per-entry uniformly with the bundle
138
+ // path.
139
+ const fileBytes = {};
140
+ for (const entry of envelope.files) {
141
+ const filePath = join(dir, entry.path);
142
+ try {
143
+ const buf = await readFile(filePath);
144
+ fileBytes[entry.path] = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
145
+ }
146
+ catch {
147
+ // Leave undefined — verifySkillBundle reports "missing".
148
+ }
149
+ }
150
+ return verifySkillBundle({ envelope, body: bodyBytes, files: fileBytes });
151
+ }
152
+ function invalidSkillResult(message, envelope) {
153
+ return {
154
+ type: "skill",
155
+ valid: false,
156
+ envelope: envelope ?? null,
157
+ ...(envelope ? { skill: `${envelope.skill.name}@${envelope.skill.version}` } : {}),
158
+ ...(envelope ? { signer: envelope.signature.public_key } : {}),
159
+ steps: {
160
+ envelope: { valid: false, reason: "wrong_suite" },
161
+ body_hash: null,
162
+ files: [],
163
+ },
164
+ errors: [{ message }],
165
+ };
166
+ }
167
+ /**
168
+ * Surface a SKILL.md-read failure (or malformed-frontmatter) with the
169
+ * envelope already loaded. We DON'T re-run sig verification here
170
+ * because verifySkillBundle is the single source of truth for that —
171
+ * a SKILL.md failure means we couldn't even feed bytes to the bundle
172
+ * primitive, so we report the structural issue directly. This keeps
173
+ * the directory walker's role purely "I/O shim" while
174
+ * verifySkillBundle owns all verification semantics.
175
+ */
176
+ function ioFailureSkillResult(envelope, extraErrors) {
177
+ return {
178
+ type: "skill",
179
+ valid: false,
180
+ envelope,
181
+ skill: `${envelope.skill.name}@${envelope.skill.version}`,
182
+ signer: envelope.signature.public_key,
183
+ steps: {
184
+ envelope: { valid: true, reason: "ok" },
185
+ body_hash: null,
186
+ files: [],
187
+ },
188
+ errors: [...extraErrors],
189
+ };
190
+ }
26
191
  /**
27
192
  * Verify an already-loaded artifact. Accepts a JSON string, an
28
193
  * already-parsed object, or a `motebit.md` identity string.
@@ -141,6 +306,29 @@ function summarizeValid(result) {
141
306
  }
142
307
  return out;
143
308
  }
309
+ case "skill": {
310
+ if (!result.envelope)
311
+ return [];
312
+ const out = [];
313
+ if (result.skill)
314
+ out.push(["skill:", result.skill]);
315
+ if (result.signer)
316
+ out.push(["signer:", result.signer]);
317
+ const env = result.steps.envelope.valid ? "✓" : "✗";
318
+ out.push(["envelope:", `${env} ${result.steps.envelope.reason}`]);
319
+ if (result.steps.body_hash !== null) {
320
+ const body = result.steps.body_hash.valid ? "✓" : "✗";
321
+ out.push([
322
+ "body:",
323
+ `${body} sha256 ${result.steps.body_hash.valid ? "matches" : "differs"}`,
324
+ ]);
325
+ }
326
+ if (result.steps.files.length > 0) {
327
+ const passed = result.steps.files.filter((f) => f.valid).length;
328
+ out.push(["files:", `${passed}/${result.steps.files.length} verified`]);
329
+ }
330
+ return out;
331
+ }
144
332
  }
145
333
  }
146
334
  //# sourceMappingURL=lib.js.map
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@motebit/verifier",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Apache-2.0 library for verifying signed Motebit artifacts (identity files, execution receipts, credentials, presentations) — file-reading and human-formatting helpers on top of @motebit/crypto. The canonical `motebit-verify` CLI now lives at @motebit/verify; this package is the Apache-2.0 library it sits on.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -53,7 +53,8 @@
53
53
  ]
54
54
  },
55
55
  "dependencies": {
56
- "@motebit/crypto": "1.0.0"
56
+ "@motebit/crypto": "1.2.0",
57
+ "@motebit/protocol": "1.2.0"
57
58
  },
58
59
  "devDependencies": {
59
60
  "@noble/ed25519": "~3.0.1",