@motebit/crypto 1.1.0 → 1.2.1
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/artifacts.d.ts +1 -1
- package/dist/credential-anchor.d.ts.map +1 -1
- package/dist/deletion-certificate.d.ts +256 -0
- package/dist/deletion-certificate.d.ts.map +1 -0
- package/dist/index.d.ts +120 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +878 -13
- package/dist/merkle.d.ts +34 -0
- package/dist/merkle.d.ts.map +1 -0
- package/dist/skills.d.ts +95 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/witness-omission-dispute.d.ts +98 -0
- package/dist/witness-omission-dispute.d.ts.map +1 -0
- package/package.json +2 -2
package/dist/merkle.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merkle inclusion-proof verifier — binary tree with odd-leaf
|
|
3
|
+
* promotion (no duplication). One canonical primitive across every
|
|
4
|
+
* Merkle-anchored artifact in motebit.
|
|
5
|
+
*
|
|
6
|
+
* Permissive floor (Apache-2.0). Zero monorepo deps. Same algorithm
|
|
7
|
+
* as `@motebit/encryption/merkle.ts` — kept here so `@motebit/crypto`
|
|
8
|
+
* stays self-contained for browser-side re-verification.
|
|
9
|
+
*
|
|
10
|
+
* Consumers:
|
|
11
|
+
* - `credential-anchor.ts` — credential-anchor proof verification
|
|
12
|
+
* (`spec/credential-anchor-v1.md` §6).
|
|
13
|
+
* - `witness-omission-dispute.ts` — `inclusion_proof` evidence
|
|
14
|
+
* against a horizon cert's `federation_graph_anchor.merkle_root`.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Verify a Merkle inclusion proof against an expected root.
|
|
18
|
+
*
|
|
19
|
+
* Binary tree with odd-leaf promotion (no duplication). Siblings are
|
|
20
|
+
* ordered leaf-to-root; `layerSizes` lets the verifier detect odd-leaf
|
|
21
|
+
* promotion at each level (when `siblingPos` falls outside the layer,
|
|
22
|
+
* `current` passes through unchanged without consuming a sibling).
|
|
23
|
+
*
|
|
24
|
+
* Returns `false` on any malformed input or hash mismatch — never
|
|
25
|
+
* throws. Same fail-closed contract as `verifyBySuite`.
|
|
26
|
+
*
|
|
27
|
+
* @param leaf - hex-encoded SHA-256 leaf hash
|
|
28
|
+
* @param index - leaf position in the bottom layer (0-based)
|
|
29
|
+
* @param siblings - hex-encoded sibling hashes, leaf-to-root order
|
|
30
|
+
* @param layerSizes - bottom-up layer cardinalities
|
|
31
|
+
* @param expectedRoot - hex-encoded SHA-256 root the proof must reconstruct
|
|
32
|
+
*/
|
|
33
|
+
export declare function verifyMerkleInclusion(leaf: string, index: number, siblings: string[], layerSizes: number[], expectedRoot: string): Promise<boolean>;
|
|
34
|
+
//# sourceMappingURL=merkle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAyBH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAiClB"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill manifest + envelope signing and verification — spec/skills-v1.md.
|
|
3
|
+
*
|
|
4
|
+
* Skills are motebit-internal protocol artifacts. They install locally,
|
|
5
|
+
* verify on motebit runtimes, and are signed by their author's motebit
|
|
6
|
+
* identity using `motebit-jcs-ed25519-b64-v1` — the same suite used for
|
|
7
|
+
* execution receipts, tool invocation receipts, settlement anchors, and
|
|
8
|
+
* migration artifacts. NOT W3C `eddsa-jcs-2022` (that suite is reserved for
|
|
9
|
+
* credentials, identity files, and presentations needing third-party W3C
|
|
10
|
+
* interop).
|
|
11
|
+
*
|
|
12
|
+
* Signature recipe (spec §5.1):
|
|
13
|
+
*
|
|
14
|
+
* manifest_bytes = JCS(manifest_with_signature_value_removed) || 0x0A || lf_body
|
|
15
|
+
* envelope_bytes = JCS(envelope_with_signature_value_removed)
|
|
16
|
+
* signature = Ed25519.sign(bytes, privateKey) -- routed through verifyBySuite
|
|
17
|
+
*
|
|
18
|
+
* Verification is offline: no relay, no registry, no external service. Per
|
|
19
|
+
* @motebit/crypto/CLAUDE.md rule 4, third-party verifiers using only this
|
|
20
|
+
* package and the signer's public key can validate any motebit-signed skill.
|
|
21
|
+
*/
|
|
22
|
+
import type { SkillEnvelope, SkillManifest, SkillSignature } from "@motebit/protocol";
|
|
23
|
+
/** The suite skills sign under in v1. Mirrors EXECUTION_RECEIPT_SUITE. */
|
|
24
|
+
export declare const SKILL_SIGNATURE_SUITE: "motebit-jcs-ed25519-b64-v1";
|
|
25
|
+
/** Failure reasons surfaced by `verifySkillManifestDetailed` / `verifySkillEnvelopeDetailed`. */
|
|
26
|
+
export type SkillVerifyReason = "ok" | "no_signature" | "wrong_suite" | "bad_public_key" | "bad_signature_value" | "ed25519_mismatch";
|
|
27
|
+
export interface SkillVerifyDetail {
|
|
28
|
+
valid: boolean;
|
|
29
|
+
reason: SkillVerifyReason;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compute the canonical bytes that a SkillManifest signature is computed over.
|
|
33
|
+
* `body` is the LF-normalized SKILL.md body bytes (everything after the
|
|
34
|
+
* closing `---` delimiter), with CRLF/CR converted to LF, no BOM, UTF-8.
|
|
35
|
+
*
|
|
36
|
+
* Caller is responsible for body normalization. The reference parser in
|
|
37
|
+
* @motebit/skills (BSL) does the normalization at file-read time.
|
|
38
|
+
*
|
|
39
|
+
* The manifest's `motebit.signature.value` is removed before canonicalization;
|
|
40
|
+
* `suite` and `public_key` are preserved (they are signature-bound).
|
|
41
|
+
*/
|
|
42
|
+
export declare function canonicalizeSkillManifestBytes(manifest: SkillManifest, body: Uint8Array): Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* Compute the canonical bytes that a SkillEnvelope signature is computed
|
|
45
|
+
* over. Sibling to manifest canonicalization; envelope is pure JSON so no
|
|
46
|
+
* body concatenation.
|
|
47
|
+
*/
|
|
48
|
+
export declare function canonicalizeSkillEnvelopeBytes(envelope: SkillEnvelope): Uint8Array;
|
|
49
|
+
/**
|
|
50
|
+
* Sign a SkillManifest, returning the signed manifest with `motebit.signature`
|
|
51
|
+
* populated. Caller provides the LF-normalized body bytes; signing recipe is
|
|
52
|
+
* spec §5.1.
|
|
53
|
+
*
|
|
54
|
+
* The returned manifest's `motebit.signature.public_key` is hex-encoded and
|
|
55
|
+
* `motebit.signature.value` is base64url-encoded, matching the suite contract.
|
|
56
|
+
*/
|
|
57
|
+
export declare function signSkillManifest(unsigned: Omit<SkillManifest, "motebit"> & {
|
|
58
|
+
motebit: Omit<SkillManifest["motebit"], "signature">;
|
|
59
|
+
}, privateKey: Uint8Array, publicKey: Uint8Array, body: Uint8Array): Promise<SkillManifest>;
|
|
60
|
+
/**
|
|
61
|
+
* Sign a SkillEnvelope, returning the signed envelope. Sibling to
|
|
62
|
+
* `signSkillManifest`. Envelope canonicalization is pure JSON (§5.1).
|
|
63
|
+
*/
|
|
64
|
+
export declare function signSkillEnvelope(unsigned: Omit<SkillEnvelope, "signature">, privateKey: Uint8Array, publicKey: Uint8Array): Promise<SkillEnvelope>;
|
|
65
|
+
/**
|
|
66
|
+
* Verify a SkillManifest's signature against the provided public key and
|
|
67
|
+
* LF-normalized body bytes. Returns `false` on any failure path:
|
|
68
|
+
*
|
|
69
|
+
* - manifest is unsigned (`motebit.signature` absent)
|
|
70
|
+
* - suite mismatch (only `motebit-jcs-ed25519-b64-v1` accepted in v1)
|
|
71
|
+
* - public_key in the signature doesn't match the supplied public key
|
|
72
|
+
* - signature value fails base64url decode
|
|
73
|
+
* - Ed25519 verification fails
|
|
74
|
+
*
|
|
75
|
+
* Per CLAUDE.md rule 4, this is the third-party self-verification entry
|
|
76
|
+
* point. Only this package + the signer's public key are required.
|
|
77
|
+
*/
|
|
78
|
+
export declare function verifySkillManifest(manifest: SkillManifest, body: Uint8Array, publicKey: Uint8Array): Promise<boolean>;
|
|
79
|
+
/**
|
|
80
|
+
* Companion to `verifySkillManifest` that returns a categorized failure
|
|
81
|
+
* reason for observability. Same recipe; same fail-closed behavior.
|
|
82
|
+
*/
|
|
83
|
+
export declare function verifySkillManifestDetailed(manifest: SkillManifest, body: Uint8Array, publicKey: Uint8Array): Promise<SkillVerifyDetail>;
|
|
84
|
+
/**
|
|
85
|
+
* Verify a SkillEnvelope's signature. Sibling to `verifySkillManifest` —
|
|
86
|
+
* same suite, same fail-closed semantics. Note: envelope verification does
|
|
87
|
+
* NOT cross-check `body_hash` or `files[].hash` against on-disk bytes; the
|
|
88
|
+
* caller (install-time logic in the registry) is responsible for that pass
|
|
89
|
+
* after signature verification succeeds.
|
|
90
|
+
*/
|
|
91
|
+
export declare function verifySkillEnvelope(envelope: SkillEnvelope, publicKey: Uint8Array): Promise<boolean>;
|
|
92
|
+
export declare function verifySkillEnvelopeDetailed(envelope: SkillEnvelope, publicKey: Uint8Array): Promise<SkillVerifyDetail>;
|
|
93
|
+
/** Decode a hex public key from a SkillSignature for caller convenience. */
|
|
94
|
+
export declare function decodeSkillSignaturePublicKey(sig: SkillSignature): Uint8Array;
|
|
95
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWtF,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,EAAG,4BAAqC,CAAC;AAE3E,iGAAiG;AACjG,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,cAAc,GACd,aAAa,GACb,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,UAAU,GACf,UAAU,CAiBZ;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,aAAa,GAAG,UAAU,CAOlF;AAMD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG;IACzC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;CACtD,EACD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAC1C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,aAAa,CAAC,CAoBxB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAoB5B;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAmB5B;AAeD,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,CAE7E"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Witness-omission dispute — sign + verify (retention phase 4b-3).
|
|
3
|
+
*
|
|
4
|
+
* Permissive floor (Apache-2.0). Zero monorepo deps beyond
|
|
5
|
+
* `@motebit/protocol` types. Routes signing through
|
|
6
|
+
* `@motebit/crypto/suite-dispatch`.
|
|
7
|
+
*
|
|
8
|
+
* Path A quorum's soft-accountability layer for `append_only_horizon`
|
|
9
|
+
* certs: a peer who believes `cert.witnessed_by[]` wrongly omits them
|
|
10
|
+
* files this dispute within 24h of `cert.issued_at`. Two evidence
|
|
11
|
+
* shapes:
|
|
12
|
+
*
|
|
13
|
+
* - `inclusion_proof` — disputant proves their peer pubkey is in
|
|
14
|
+
* the cert's `federation_graph_anchor.merkle_root` via a Merkle
|
|
15
|
+
* inclusion proof. The verifier reconstructs against the cert's
|
|
16
|
+
* anchor root.
|
|
17
|
+
*
|
|
18
|
+
* - `alternative_peering` — disputant supplies a signed peering
|
|
19
|
+
* artifact from the cert issuer (today: a federation Heartbeat,
|
|
20
|
+
* `motebit-concat-ed25519-hex-v1`) whose timestamp window covers
|
|
21
|
+
* `cert.horizon_ts ± 5 min` (mirrors heartbeat suspension
|
|
22
|
+
* threshold). The cert's published anchor is claimed incomplete.
|
|
23
|
+
*
|
|
24
|
+
* The verifier returns a per-step result; certificates remain
|
|
25
|
+
* TERMINAL per `retention-policy.md` decision 5 — a sustained dispute
|
|
26
|
+
* is a reputation hit on the issuer, not a cert invalidation.
|
|
27
|
+
*/
|
|
28
|
+
import type { DeletionCertificate, WitnessOmissionDispute } from "@motebit/protocol";
|
|
29
|
+
/** Result of verifying a witness-omission dispute. Fail-closed: any failure → `valid: false`. */
|
|
30
|
+
export interface WitnessOmissionDisputeVerifyResult {
|
|
31
|
+
readonly valid: boolean;
|
|
32
|
+
readonly errors: string[];
|
|
33
|
+
/** Per-step breakdown — useful for adjudication audit display. */
|
|
34
|
+
readonly steps: {
|
|
35
|
+
/**
|
|
36
|
+
* Window check (two gates, both must pass):
|
|
37
|
+
* A. `now - cert.issued_at <= WITNESS_OMISSION_DISPUTE_WINDOW_MS`
|
|
38
|
+
* B. `dispute.filed_at ∈ [cert.issued_at, cert.issued_at + WINDOW_MS]`
|
|
39
|
+
*/
|
|
40
|
+
readonly window_open: boolean;
|
|
41
|
+
/** Dispute pins the disputed cert (`cert_issuer` + `cert_signature` match). */
|
|
42
|
+
readonly cert_binding_valid: boolean;
|
|
43
|
+
/** Disputant's Ed25519 signature over the dispute body. */
|
|
44
|
+
readonly disputant_signature_valid: boolean;
|
|
45
|
+
/** Evidence-shape verification. `null` when prior checks already failed. */
|
|
46
|
+
readonly evidence_valid: boolean | null;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolver context for `verifyWitnessOmissionDispute`. The caller
|
|
51
|
+
* supplies the cert (resolved from its local store via the dispute's
|
|
52
|
+
* `cert_signature` pointer), the issuer's pubkey (for verifying the
|
|
53
|
+
* cert binding and any alternative-peering artifact), the disputant's
|
|
54
|
+
* pubkey, and a `now` clock.
|
|
55
|
+
*/
|
|
56
|
+
export interface WitnessOmissionDisputeVerifyContext {
|
|
57
|
+
/** The disputed cert, resolved by the caller from `dispute.cert_signature`. */
|
|
58
|
+
readonly cert: Extract<DeletionCertificate, {
|
|
59
|
+
kind: "append_only_horizon";
|
|
60
|
+
}>;
|
|
61
|
+
/** Cert issuer's Ed25519 public key (32 bytes). */
|
|
62
|
+
readonly issuerPublicKey: Uint8Array;
|
|
63
|
+
/** Disputant peer's Ed25519 public key (32 bytes). `null` → unknown disputant, fail-closed. */
|
|
64
|
+
readonly disputantPublicKey: Uint8Array | null;
|
|
65
|
+
/** Wall-clock at validation time, in unix ms. */
|
|
66
|
+
readonly now: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Compute the canonical signing bytes for a `WitnessOmissionDispute`.
|
|
70
|
+
* Strips `signature` so the disputant signs every other field —
|
|
71
|
+
* including `cert_signature`, `cert_issuer`, and the evidence body.
|
|
72
|
+
*/
|
|
73
|
+
export declare function canonicalizeWitnessOmissionDispute(dispute: WitnessOmissionDispute): Uint8Array;
|
|
74
|
+
/**
|
|
75
|
+
* Sign a `WitnessOmissionDispute` as the disputant. Caller provides
|
|
76
|
+
* the unsigned body (everything except `suite` and `signature`); this
|
|
77
|
+
* function appends both.
|
|
78
|
+
*/
|
|
79
|
+
export declare function signWitnessOmissionDispute(body: Omit<WitnessOmissionDispute, "suite" | "signature">, privateKey: Uint8Array): Promise<WitnessOmissionDispute>;
|
|
80
|
+
/**
|
|
81
|
+
* Verify a `WitnessOmissionDispute` against the disputed cert.
|
|
82
|
+
*
|
|
83
|
+
* Step ladder (fail-closed throughout):
|
|
84
|
+
* 1. Window: `now - cert.issued_at <= WINDOW` AND
|
|
85
|
+
* `filed_at ∈ [cert.issued_at, cert.issued_at + WINDOW]`.
|
|
86
|
+
* 2. Cert binding: `dispute.cert_signature === cert.signature` and
|
|
87
|
+
* `dispute.cert_issuer` matches the cert's subject.
|
|
88
|
+
* 3. Disputant signature over `canonicalJson(dispute minus signature)`.
|
|
89
|
+
* 4. Evidence: dispatched by `evidence.kind` —
|
|
90
|
+
* - `inclusion_proof`: requires cert has a `federation_graph_anchor`;
|
|
91
|
+
* verifies the Merkle proof against `anchor.merkle_root`.
|
|
92
|
+
* - `alternative_peering`: dispatches on `peering_artifact`'s
|
|
93
|
+
* self-described shape (today: federation Heartbeat); verifies
|
|
94
|
+
* the embedded signature against the issuer pubkey and the
|
|
95
|
+
* timestamp window covers `cert.horizon_ts`.
|
|
96
|
+
*/
|
|
97
|
+
export declare function verifyWitnessOmissionDispute(dispute: WitnessOmissionDispute, ctx: WitnessOmissionDisputeVerifyContext): Promise<WitnessOmissionDisputeVerifyResult>;
|
|
98
|
+
//# sourceMappingURL=witness-omission-dispute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"witness-omission-dispute.d.ts","sourceRoot":"","sources":["../src/witness-omission-dispute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAuB3B,iGAAiG;AACjG,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE;QACd;;;;WAIG;QACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9B,+EAA+E;QAC/E,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACrC,2DAA2D;QAC3D,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;QAC5C,4EAA4E;QAC5E,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;KACzC,CAAC;CACH;AAID;;;;;;GAMG;AACH,MAAM,WAAW,mCAAmC;IAClD,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,IAAI,EAAE,qBAAqB,CAAA;KAAE,CAAC,CAAC;IAC7E,mDAAmD;IACnD,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/C,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAID;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,sBAAsB,GAAG,UAAU,CAI9F;AAID;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,GAAG,WAAW,CAAC,EACzD,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,sBAAsB,CAAC,CASjC;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,sBAAsB,EAC/B,GAAG,EAAE,mCAAmC,GACvC,OAAO,CAAC,kCAAkC,CAAC,CA4F7C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@motebit/crypto",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Sign and verify every Motebit artifact — identity files, execution receipts, credentials, delegations, succession records, credential anchors. Ed25519 today, cryptosuite-agile for post-quantum tomorrow. Apache-2.0, zero monorepo dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"tsup": "^8.0.0",
|
|
65
65
|
"typescript": "^5.6.0",
|
|
66
66
|
"vitest": "^2.1.0",
|
|
67
|
-
"@motebit/protocol": "1.
|
|
67
|
+
"@motebit/protocol": "1.2.0"
|
|
68
68
|
},
|
|
69
69
|
"engines": {
|
|
70
70
|
"node": ">=20"
|