@attestry/sdk 0.6.0 → 0.7.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 +3 -3
- package/dist/annex-iv-verify/data-integrity.d.ts +57 -0
- package/dist/annex-iv-verify/data-integrity.d.ts.map +1 -0
- package/dist/annex-iv-verify/data-integrity.js +172 -0
- package/dist/annex-iv-verify/data-integrity.js.map +1 -0
- package/dist/annex-iv-verify/ed25519.d.ts +21 -0
- package/dist/annex-iv-verify/ed25519.d.ts.map +1 -0
- package/dist/annex-iv-verify/ed25519.js +67 -0
- package/dist/annex-iv-verify/ed25519.js.map +1 -0
- package/dist/annex-iv-verify/index.d.ts +4 -0
- package/dist/annex-iv-verify/index.d.ts.map +1 -0
- package/dist/annex-iv-verify/index.js +11 -0
- package/dist/annex-iv-verify/index.js.map +1 -0
- package/dist/annex-iv-verify/jwk.d.ts +27 -0
- package/dist/annex-iv-verify/jwk.d.ts.map +1 -0
- package/dist/annex-iv-verify/jwk.js +57 -0
- package/dist/annex-iv-verify/jwk.js.map +1 -0
- package/dist/annex-iv-verify/multibase.d.ts +31 -0
- package/dist/annex-iv-verify/multibase.d.ts.map +1 -0
- package/dist/annex-iv-verify/multibase.js +131 -0
- package/dist/annex-iv-verify/multibase.js.map +1 -0
- package/dist/annex-iv-verify/resolver.d.ts +28 -0
- package/dist/annex-iv-verify/resolver.d.ts.map +1 -0
- package/dist/annex-iv-verify/resolver.js +58 -0
- package/dist/annex-iv-verify/resolver.js.map +1 -0
- package/dist/annex-iv-verify/status-list.d.ts +57 -0
- package/dist/annex-iv-verify/status-list.d.ts.map +1 -0
- package/dist/annex-iv-verify/status-list.js +185 -0
- package/dist/annex-iv-verify/status-list.js.map +1 -0
- package/dist/annex-iv-verify/verify.d.ts +164 -0
- package/dist/annex-iv-verify/verify.d.ts.map +1 -0
- package/dist/annex-iv-verify/verify.js +273 -0
- package/dist/annex-iv-verify/verify.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/annex-iv.d.ts +110 -0
- package/dist/resources/annex-iv.d.ts.map +1 -0
- package/dist/resources/annex-iv.js +146 -0
- package/dist/resources/annex-iv.js.map +1 -0
- package/dist/transport.js +1 -1
- package/dist/transport.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { type PublicKeyResolver } from "./data-integrity.js";
|
|
2
|
+
import { BITSTRING_STATUS_LIST_ENTRY, type CredentialStatusEntry, type RevocationCheck } from "./status-list.js";
|
|
3
|
+
import { type Ed25519PublicJwk } from "./resolver.js";
|
|
4
|
+
/** The domain-separation tag — verifier-ENFORCED (step 0). */
|
|
5
|
+
export declare const ANNEX_IV_BIND_TYPE = "ANNEX-IV-BIND-v1";
|
|
6
|
+
/** The JWS protected-header `typ` — a second, header-level domain tag. */
|
|
7
|
+
export declare const ANNEX_IV_BIND_JWS_TYP = "application/annex-iv-bind-v1+jws";
|
|
8
|
+
/** The JWS signature algorithm (Ed25519). */
|
|
9
|
+
export declare const ANNEX_IV_BIND_ALG = "EdDSA";
|
|
10
|
+
/** The honest temporal label for the JWS path (declared N/A by design). */
|
|
11
|
+
export declare const ANNEX_IV_BIND_SIGNING_TIME_LABEL = "issuer-asserted signing time, not independently timestamped";
|
|
12
|
+
/** The signed `ANNEX-IV-BIND-v1` payload — the full triple + binding fields. */
|
|
13
|
+
export interface AnnexIvBindPayload {
|
|
14
|
+
/** Domain-separation tag (literal {@link ANNEX_IV_BIND_TYPE}). */
|
|
15
|
+
type: typeof ANNEX_IV_BIND_TYPE;
|
|
16
|
+
/** The Attestry issuer id (the same value the status-list VC carries). */
|
|
17
|
+
issuer: string;
|
|
18
|
+
/** `"sha256:" + 64hex` of the EXACT emitted PDF Buffer. */
|
|
19
|
+
pdf_byte_sha256: string;
|
|
20
|
+
/** `attestations.certificateHash` for the file's current attestation cert. */
|
|
21
|
+
attestation_certificate_hash: string;
|
|
22
|
+
/** `evidencePacks.contentHash[]` (`sha256:<hex>`) — DEDUPED then sorted ascending. */
|
|
23
|
+
evidence_pack_content_hashes: string[];
|
|
24
|
+
/** The file's `signedAt`, ISO-8601 UTC second-precision (issuer-asserted signing time). */
|
|
25
|
+
issued_at: string;
|
|
26
|
+
/** The active signing-key id. */
|
|
27
|
+
kid: string;
|
|
28
|
+
/** The FULL `verificationMethod` URL: `<keysBaseUrl>#<kid>`. */
|
|
29
|
+
verificationMethod: string;
|
|
30
|
+
/** The published status-list VC URL. */
|
|
31
|
+
status_list_ref: string;
|
|
32
|
+
/** The per-file UNIQUE revocation index. */
|
|
33
|
+
status_list_index: number;
|
|
34
|
+
/** A `BitstringStatusListEntry`-shaped object driving offline revocation. */
|
|
35
|
+
credentialStatus: CredentialStatusEntry;
|
|
36
|
+
}
|
|
37
|
+
/** A parsed compact JWS (the three base64url segments + decoded header/payload). */
|
|
38
|
+
export interface ParsedAnnexIvBindJws {
|
|
39
|
+
protectedB64: string;
|
|
40
|
+
payloadB64: string;
|
|
41
|
+
signatureB64: string;
|
|
42
|
+
header: Record<string, unknown>;
|
|
43
|
+
payload: AnnexIvBindPayload;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse a compact `ANNEX-IV-BIND-v1` JWS into its segments + decoded
|
|
47
|
+
* header/payload. Fails closed on a malformed serialization, wrong segment
|
|
48
|
+
* count, or absent domain tags. Does NOT verify the signature.
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseAnnexIvBindJws(jws: string): ParsedAnnexIvBindJws;
|
|
51
|
+
/**
|
|
52
|
+
* The MINIMAL internal signature verify: `ed25519Verify` over the RECEIVED
|
|
53
|
+
* `protected_b64 ‖ "." ‖ payload_b64` octets (RFC-7515 §5.2 — NEVER
|
|
54
|
+
* re-canonicalize/re-encode at verify), against the resolver-supplied public
|
|
55
|
+
* key. Returns a boolean; never throws.
|
|
56
|
+
*/
|
|
57
|
+
export declare function verifyAnnexIvBindReceivedOctets(parsed: ParsedAnnexIvBindJws, publicKey: Uint8Array | null | undefined): boolean;
|
|
58
|
+
/** The structured, fail-closed result of {@link verifyAnnexIvBindOffline}. */
|
|
59
|
+
export interface VerifyAnnexIvBindResult {
|
|
60
|
+
/** Overall verdict: tag ∧ fields ∧ signature ∧ byte-hash ∧ not-a-confirmed-revocation. */
|
|
61
|
+
valid: boolean;
|
|
62
|
+
/** The first failing step (0–4) or "revocation" — for diagnostics. */
|
|
63
|
+
reason?: string;
|
|
64
|
+
/** True once the protected-header + payload domain tags both matched (step 0). */
|
|
65
|
+
tagOk: boolean;
|
|
66
|
+
/** True once every bind field was present + well-typed (step 1). */
|
|
67
|
+
fieldsOk: boolean;
|
|
68
|
+
/** True once `ed25519Verify` over the RECEIVED octets passed (step 3). */
|
|
69
|
+
signatureOk: boolean;
|
|
70
|
+
/** True once `sha256(suppliedPdfBytes) === payload.pdf_byte_sha256` (step 4). */
|
|
71
|
+
byteBindingOk: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* The two-check revocation result (step 6). `checked:false` is the honest
|
|
74
|
+
* "status not evaluated" label (no cached list / offline) — never a false
|
|
75
|
+
* "not revoked".
|
|
76
|
+
*/
|
|
77
|
+
revocation: RevocationCheck;
|
|
78
|
+
/**
|
|
79
|
+
* Temporal is declared N/A for the JWS path: a 10-yr Art-18 artifact has no
|
|
80
|
+
* validity window — invalidation is revocation, and `issued_at` is the
|
|
81
|
+
* labelled issuer-asserted signing time, not a window.
|
|
82
|
+
*/
|
|
83
|
+
temporal: {
|
|
84
|
+
applicable: false;
|
|
85
|
+
issuedAt: string | null;
|
|
86
|
+
/** {@link ANNEX_IV_BIND_SIGNING_TIME_LABEL}. */
|
|
87
|
+
label: string;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Inputs to {@link verifyAnnexIvBindOffline} — sidecar + PDF bytes + key
|
|
92
|
+
* material, NO DB, NO network.
|
|
93
|
+
*
|
|
94
|
+
* Key resolution precedence: `resolvePublicKey` (if given) → else a resolver
|
|
95
|
+
* built from `jwks` → else a typed `AttestryError` (missing key material).
|
|
96
|
+
*/
|
|
97
|
+
export interface VerifyAnnexIvBindOfflineInput {
|
|
98
|
+
/** The compact RFC-7515 sidecar JWS (the `bind_artifact` / `sidecarJws`). */
|
|
99
|
+
sidecarJws: string;
|
|
100
|
+
/** The PDF bytes to byte-bind against `payload.pdf_byte_sha256` (step 4). */
|
|
101
|
+
pdfBytes: Uint8Array;
|
|
102
|
+
/**
|
|
103
|
+
* A cached/out-of-band status-list VC for the two-check revocation (step 6).
|
|
104
|
+
* Omitted ⇒ `revocation.checked = false` (honest "status not evaluated").
|
|
105
|
+
*/
|
|
106
|
+
cachedStatusListCredential?: unknown;
|
|
107
|
+
/**
|
|
108
|
+
* How the envelope's FULL `verificationMethod` URL resolves to a raw public
|
|
109
|
+
* key (step 2). Takes precedence over `jwks`. A resolver that returns
|
|
110
|
+
* null/undefined ⇒ fail-closed `valid:false`. A resolver that THROWS
|
|
111
|
+
* PROPAGATES (verdict-identity with the kernel — it calls the resolver bare).
|
|
112
|
+
*/
|
|
113
|
+
resolvePublicKey?: PublicKeyResolver;
|
|
114
|
+
/**
|
|
115
|
+
* A JWKS (an array of public JWKs, or a `{ keys }` object). When
|
|
116
|
+
* `resolvePublicKey` is absent, a fail-closed resolver is built from this via
|
|
117
|
+
* `makeJwksResolver` (kid-match → `null` on a bad/absent entry, never throws).
|
|
118
|
+
*/
|
|
119
|
+
jwks?: Ed25519PublicJwk[] | {
|
|
120
|
+
keys: Ed25519PublicJwk[];
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The OFFLINE Annex IV bind verifier: sidecar + PDF bytes + key material →
|
|
125
|
+
* valid/invalid, **NO DB, NO network**. The faithful SDK port of the kernel's
|
|
126
|
+
* `verifyAnnexIvBind` (same ordered, fail-closed steps; the kernel is the
|
|
127
|
+
* source of truth and the golden cross-vectors break first on divergence):
|
|
128
|
+
*
|
|
129
|
+
* 0. Domain-tag assert — the protected-header `typ` AND the payload `type`
|
|
130
|
+
* both match (parse fails closed otherwise). A validly-signed attestation /
|
|
131
|
+
* status-list VC fed here is rejected ON THE TAG, not the hash.
|
|
132
|
+
* 1. Every bind field present + well-typed — fail-closed on ANY absence.
|
|
133
|
+
* 2. Resolve the key OFFLINE from the envelope's FULL `verificationMethod` URL
|
|
134
|
+
* (precedence: `resolvePublicKey` → `jwks`→`makeJwksResolver` → typed throw).
|
|
135
|
+
* 3. `ed25519Verify` over the RECEIVED `protected_b64 ‖ "." ‖ payload_b64`
|
|
136
|
+
* octets — NEVER re-canonicalize/re-encode at verify (RFC-7515 §5.2).
|
|
137
|
+
* 4. Byte-binding (AFTER 0–3): `sha256(suppliedPdfBytes)` vs `pdf_byte_sha256`.
|
|
138
|
+
* 5. Temporal — declared N/A (10-yr artifact; invalidation = revocation).
|
|
139
|
+
* 6. Two-check revocation — `checkRevocationOffline(credentialStatus, cached,
|
|
140
|
+
* resolver, issuer)`; VALID requires signature-valid AND bit-not-revoked;
|
|
141
|
+
* no cached list ⇒ `checked:false`.
|
|
142
|
+
*
|
|
143
|
+
* THROW/NEVER-THROW CONTRACT (the single source of truth):
|
|
144
|
+
* - Throws ONLY the typed missing-key-material precondition (`AttestryError`)
|
|
145
|
+
* — a usage error, NOT a verification failure.
|
|
146
|
+
* - NEVER throws on a malformed/forged JSON ARTIFACT (sidecar / pdf /
|
|
147
|
+
* statusList → fail-closed `valid:false`; the per-guard hostile table pins
|
|
148
|
+
* the tampered-list cases). CAVEAT: a `cachedStatusListCredential` HAND-BUILT
|
|
149
|
+
* with a non-JSON-representable value (NaN / Infinity / BigInt / a circular
|
|
150
|
+
* ref) in a canonicalized field propagates the JCS `canonicalize` throw —
|
|
151
|
+
* verdict-IDENTICAL with the kernel oracle (a JSON-sourced cached VC, the
|
|
152
|
+
* documented path, cannot carry these); a loud catchable error, NEVER a
|
|
153
|
+
* false `valid:true`.
|
|
154
|
+
* - A caller-supplied `resolvePublicKey` that THROWS **propagates** (the
|
|
155
|
+
* kernel calls the resolver bare at both the signature leg and the
|
|
156
|
+
* revocation leg — the SDK re-throws to stay verdict-identical). This is
|
|
157
|
+
* DISTINCT from a resolver that RETURNS null (→ `valid:false` "public key
|
|
158
|
+
* did not resolve offline") and from `makeJwksResolver`'s deliberate
|
|
159
|
+
* fail-closed-to-null on a bad/absent jwks entry.
|
|
160
|
+
*/
|
|
161
|
+
export declare function verifyAnnexIvBindOffline(input: VerifyAnnexIvBindOfflineInput): VerifyAnnexIvBindResult;
|
|
162
|
+
export { BITSTRING_STATUS_LIST_ENTRY };
|
|
163
|
+
export type { CredentialStatusEntry, RevocationCheck };
|
|
164
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/annex-iv-verify/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// VERIFY-only faithful port of the bind verify-core of
|
|
2
|
+
// `src/lib/annex-iv/cryptobind.ts` — the kernel `verifyAnnexIvBind` is the
|
|
3
|
+
// source of truth; the golden cross-vectors (`__tests__/golden-vectors.json`)
|
|
4
|
+
// break first on any divergence. Do NOT edit semantics independently.
|
|
5
|
+
//
|
|
6
|
+
// This is the ONE HAND-WRITTEN file in the port (the 5 crypto files are
|
|
7
|
+
// verbatim copies). It carries the verify-core ONLY — the sign-side
|
|
8
|
+
// (`signAnnexIvBind`, `buildAnnexIvBindPayload`, `cryptobindTechnicalFilePdf`,
|
|
9
|
+
// the renderer, the key-registry) is NOT ported; the SDK never mints. Imports
|
|
10
|
+
// are rewritten to explicit `.js` extensions (the SDK is `module:"Node16"`).
|
|
11
|
+
//
|
|
12
|
+
// Two intentional divergences from the kernel SOURCE TEXT that are NOT semantic
|
|
13
|
+
// divergences (verdict-identity is preserved — the probe proved it):
|
|
14
|
+
// 1. `AnnexIvBindError` is a LOCAL `class extends Error` (the kernel's extends
|
|
15
|
+
// the abstract `AnnexIvError` with `code`/`httpStatus`; the verify path
|
|
16
|
+
// reads ONLY `e.message` via the step-0 catch, never class identity / code /
|
|
17
|
+
// httpStatus). Every thrown MESSAGE string is preserved VERBATIM.
|
|
18
|
+
// 2. `verifyAnnexIvBindOffline` has NO env-registry default resolver — it
|
|
19
|
+
// requires caller-supplied key material (`resolvePublicKey` or `jwks`) per
|
|
20
|
+
// the SDK contract; the kernel's default `resolvePublicKeyByVerificationMethod`
|
|
21
|
+
// is server-only.
|
|
22
|
+
import { AttestryError } from "../errors.js";
|
|
23
|
+
import { base64urlToBytes } from "./jwk.js";
|
|
24
|
+
import { ed25519Verify, sha256 } from "./ed25519.js";
|
|
25
|
+
import { BITSTRING_STATUS_LIST_ENTRY, checkRevocationOffline, } from "./status-list.js";
|
|
26
|
+
import { makeJwksResolver } from "./resolver.js";
|
|
27
|
+
// ─── Constants (verbatim from cryptobind.ts) ───────────────────────────────--
|
|
28
|
+
/** The domain-separation tag — verifier-ENFORCED (step 0). */
|
|
29
|
+
export const ANNEX_IV_BIND_TYPE = "ANNEX-IV-BIND-v1";
|
|
30
|
+
/** The JWS protected-header `typ` — a second, header-level domain tag. */
|
|
31
|
+
export const ANNEX_IV_BIND_JWS_TYP = "application/annex-iv-bind-v1+jws";
|
|
32
|
+
/** The JWS signature algorithm (Ed25519). */
|
|
33
|
+
export const ANNEX_IV_BIND_ALG = "EdDSA";
|
|
34
|
+
/** The honest temporal label for the JWS path (declared N/A by design). */
|
|
35
|
+
export const ANNEX_IV_BIND_SIGNING_TIME_LABEL = "issuer-asserted signing time, not independently timestamped";
|
|
36
|
+
// ─── Local typed error (C-C-1) ──────────────────────────────────────────────-
|
|
37
|
+
//
|
|
38
|
+
// The kernel's `AnnexIvBindError extends AnnexIvError` (an abstract base with
|
|
39
|
+
// `code`/`httpStatus`, used by the route mapper). The verify path NEVER reads
|
|
40
|
+
// class identity / `code` / `httpStatus` — only `e.message` (via the step-0
|
|
41
|
+
// catch below) — so a minimal local `extends Error` is verdict-identical. The
|
|
42
|
+
// thrown message strings are preserved verbatim from `parseAnnexIvBindJws`.
|
|
43
|
+
class AnnexIvBindError extends Error {
|
|
44
|
+
constructor(message) {
|
|
45
|
+
super(message);
|
|
46
|
+
this.name = "AnnexIvBindError";
|
|
47
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// ─── Internals (verbatim) ──────────────────────────────────────────────────--
|
|
51
|
+
const SHA256_HEX_RE = /^sha256:[0-9a-f]{64}$/;
|
|
52
|
+
const BIND_HASH_RE = /^sha256:[0-9a-f]{64}$/;
|
|
53
|
+
const textEncoder = new TextEncoder();
|
|
54
|
+
/** Lowercase 64-hex SHA-256 of `bytes`, prefixed `sha256:` (the repo convention). */
|
|
55
|
+
function sha256Prefixed(bytes) {
|
|
56
|
+
const hashBytes = sha256(bytes);
|
|
57
|
+
let hex = "";
|
|
58
|
+
for (const b of hashBytes)
|
|
59
|
+
hex += b.toString(16).padStart(2, "0");
|
|
60
|
+
return `sha256:${hex}`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse a compact `ANNEX-IV-BIND-v1` JWS into its segments + decoded
|
|
64
|
+
* header/payload. Fails closed on a malformed serialization, wrong segment
|
|
65
|
+
* count, or absent domain tags. Does NOT verify the signature.
|
|
66
|
+
*/
|
|
67
|
+
export function parseAnnexIvBindJws(jws) {
|
|
68
|
+
if (typeof jws !== "string") {
|
|
69
|
+
throw new AnnexIvBindError("JWS must be a string");
|
|
70
|
+
}
|
|
71
|
+
const parts = jws.split(".");
|
|
72
|
+
if (parts.length !== 3) {
|
|
73
|
+
throw new AnnexIvBindError(`compact JWS must have 3 segments, got ${parts.length}`);
|
|
74
|
+
}
|
|
75
|
+
const [protectedB64, payloadB64, signatureB64] = parts;
|
|
76
|
+
let header;
|
|
77
|
+
let payload;
|
|
78
|
+
try {
|
|
79
|
+
header = JSON.parse(Buffer.from(base64urlToBytes(protectedB64)).toString("utf8"));
|
|
80
|
+
payload = JSON.parse(Buffer.from(base64urlToBytes(payloadB64)).toString("utf8"));
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
throw new AnnexIvBindError(`malformed JWS segment: ${e instanceof Error ? e.message : String(e)}`);
|
|
84
|
+
}
|
|
85
|
+
if (header.typ !== ANNEX_IV_BIND_JWS_TYP) {
|
|
86
|
+
throw new AnnexIvBindError(`unexpected JWS typ: ${JSON.stringify(header.typ)}`);
|
|
87
|
+
}
|
|
88
|
+
if (payload?.type !== ANNEX_IV_BIND_TYPE) {
|
|
89
|
+
throw new AnnexIvBindError(`unexpected payload type: ${JSON.stringify(payload?.type)}`);
|
|
90
|
+
}
|
|
91
|
+
return { protectedB64, payloadB64, signatureB64, header, payload };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The MINIMAL internal signature verify: `ed25519Verify` over the RECEIVED
|
|
95
|
+
* `protected_b64 ‖ "." ‖ payload_b64` octets (RFC-7515 §5.2 — NEVER
|
|
96
|
+
* re-canonicalize/re-encode at verify), against the resolver-supplied public
|
|
97
|
+
* key. Returns a boolean; never throws.
|
|
98
|
+
*/
|
|
99
|
+
export function verifyAnnexIvBindReceivedOctets(parsed, publicKey) {
|
|
100
|
+
if (!publicKey)
|
|
101
|
+
return false;
|
|
102
|
+
let signature;
|
|
103
|
+
try {
|
|
104
|
+
signature = base64urlToBytes(parsed.signatureB64);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
const signingInput = textEncoder.encode(`${parsed.protectedB64}.${parsed.payloadB64}`);
|
|
110
|
+
return ed25519Verify(signature, signingInput, publicKey);
|
|
111
|
+
}
|
|
112
|
+
// ─── Fail-closed result helpers (verbatim) ──────────────────────────────────-
|
|
113
|
+
/** A fail-closed INVALID result carrying the failing step + the (partial) flags. */
|
|
114
|
+
function bindInvalid(reason, flags = {}) {
|
|
115
|
+
return {
|
|
116
|
+
valid: false,
|
|
117
|
+
reason,
|
|
118
|
+
tagOk: false,
|
|
119
|
+
fieldsOk: false,
|
|
120
|
+
signatureOk: false,
|
|
121
|
+
byteBindingOk: false,
|
|
122
|
+
revocation: { checked: false, revoked: false, reason: "not evaluated" },
|
|
123
|
+
temporal: { applicable: false, issuedAt: null, label: ANNEX_IV_BIND_SIGNING_TIME_LABEL },
|
|
124
|
+
...flags,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** True iff every bind field on the parsed payload is present + well-typed (step 1). */
|
|
128
|
+
function allBindFieldsWellTyped(p) {
|
|
129
|
+
return (typeof p.pdf_byte_sha256 === "string" &&
|
|
130
|
+
BIND_HASH_RE.test(p.pdf_byte_sha256) &&
|
|
131
|
+
typeof p.attestation_certificate_hash === "string" &&
|
|
132
|
+
p.attestation_certificate_hash.length > 0 &&
|
|
133
|
+
Array.isArray(p.evidence_pack_content_hashes) &&
|
|
134
|
+
p.evidence_pack_content_hashes.every((h) => typeof h === "string" && SHA256_HEX_RE.test(h)) &&
|
|
135
|
+
typeof p.issued_at === "string" &&
|
|
136
|
+
p.issued_at.length > 0 &&
|
|
137
|
+
typeof p.kid === "string" &&
|
|
138
|
+
p.kid.length > 0 &&
|
|
139
|
+
typeof p.verificationMethod === "string" &&
|
|
140
|
+
p.verificationMethod.length > 0 &&
|
|
141
|
+
typeof p.status_list_ref === "string" &&
|
|
142
|
+
p.status_list_ref.length > 0 &&
|
|
143
|
+
Number.isInteger(p.status_list_index) &&
|
|
144
|
+
p.status_list_index >= 0 &&
|
|
145
|
+
typeof p.issuer === "string" &&
|
|
146
|
+
p.issuer.length > 0 &&
|
|
147
|
+
p.credentialStatus != null &&
|
|
148
|
+
typeof p.credentialStatus === "object");
|
|
149
|
+
}
|
|
150
|
+
// ─── The OFFLINE verifier (verbatim logic; SDK key-resolution) ──────────────--
|
|
151
|
+
/**
|
|
152
|
+
* The OFFLINE Annex IV bind verifier: sidecar + PDF bytes + key material →
|
|
153
|
+
* valid/invalid, **NO DB, NO network**. The faithful SDK port of the kernel's
|
|
154
|
+
* `verifyAnnexIvBind` (same ordered, fail-closed steps; the kernel is the
|
|
155
|
+
* source of truth and the golden cross-vectors break first on divergence):
|
|
156
|
+
*
|
|
157
|
+
* 0. Domain-tag assert — the protected-header `typ` AND the payload `type`
|
|
158
|
+
* both match (parse fails closed otherwise). A validly-signed attestation /
|
|
159
|
+
* status-list VC fed here is rejected ON THE TAG, not the hash.
|
|
160
|
+
* 1. Every bind field present + well-typed — fail-closed on ANY absence.
|
|
161
|
+
* 2. Resolve the key OFFLINE from the envelope's FULL `verificationMethod` URL
|
|
162
|
+
* (precedence: `resolvePublicKey` → `jwks`→`makeJwksResolver` → typed throw).
|
|
163
|
+
* 3. `ed25519Verify` over the RECEIVED `protected_b64 ‖ "." ‖ payload_b64`
|
|
164
|
+
* octets — NEVER re-canonicalize/re-encode at verify (RFC-7515 §5.2).
|
|
165
|
+
* 4. Byte-binding (AFTER 0–3): `sha256(suppliedPdfBytes)` vs `pdf_byte_sha256`.
|
|
166
|
+
* 5. Temporal — declared N/A (10-yr artifact; invalidation = revocation).
|
|
167
|
+
* 6. Two-check revocation — `checkRevocationOffline(credentialStatus, cached,
|
|
168
|
+
* resolver, issuer)`; VALID requires signature-valid AND bit-not-revoked;
|
|
169
|
+
* no cached list ⇒ `checked:false`.
|
|
170
|
+
*
|
|
171
|
+
* THROW/NEVER-THROW CONTRACT (the single source of truth):
|
|
172
|
+
* - Throws ONLY the typed missing-key-material precondition (`AttestryError`)
|
|
173
|
+
* — a usage error, NOT a verification failure.
|
|
174
|
+
* - NEVER throws on a malformed/forged JSON ARTIFACT (sidecar / pdf /
|
|
175
|
+
* statusList → fail-closed `valid:false`; the per-guard hostile table pins
|
|
176
|
+
* the tampered-list cases). CAVEAT: a `cachedStatusListCredential` HAND-BUILT
|
|
177
|
+
* with a non-JSON-representable value (NaN / Infinity / BigInt / a circular
|
|
178
|
+
* ref) in a canonicalized field propagates the JCS `canonicalize` throw —
|
|
179
|
+
* verdict-IDENTICAL with the kernel oracle (a JSON-sourced cached VC, the
|
|
180
|
+
* documented path, cannot carry these); a loud catchable error, NEVER a
|
|
181
|
+
* false `valid:true`.
|
|
182
|
+
* - A caller-supplied `resolvePublicKey` that THROWS **propagates** (the
|
|
183
|
+
* kernel calls the resolver bare at both the signature leg and the
|
|
184
|
+
* revocation leg — the SDK re-throws to stay verdict-identical). This is
|
|
185
|
+
* DISTINCT from a resolver that RETURNS null (→ `valid:false` "public key
|
|
186
|
+
* did not resolve offline") and from `makeJwksResolver`'s deliberate
|
|
187
|
+
* fail-closed-to-null on a bad/absent jwks entry.
|
|
188
|
+
*/
|
|
189
|
+
export function verifyAnnexIvBindOffline(input) {
|
|
190
|
+
// Key-resolution precedence (C-D2). A missing-key-material precondition is a
|
|
191
|
+
// loud, typed usage error — never a bare TypeError, never a verification fail.
|
|
192
|
+
let resolvePublicKey;
|
|
193
|
+
if (input.resolvePublicKey) {
|
|
194
|
+
resolvePublicKey = input.resolvePublicKey;
|
|
195
|
+
}
|
|
196
|
+
else if (input.jwks) {
|
|
197
|
+
resolvePublicKey = makeJwksResolver(input.jwks);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
throw new AttestryError("verifyAnnexIvBindOffline requires key material: pass `resolvePublicKey` or `jwks`");
|
|
201
|
+
}
|
|
202
|
+
// Step 0 — parse + domain-tag assert. `parseAnnexIvBindJws` fails closed on a
|
|
203
|
+
// wrong segment count, malformed JSON, or a mismatched/absent `typ`/`type` tag.
|
|
204
|
+
let parsed;
|
|
205
|
+
try {
|
|
206
|
+
parsed = parseAnnexIvBindJws(input.sidecarJws);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
return bindInvalid(`domain tag / parse: ${e instanceof Error ? e.message : String(e)}`);
|
|
210
|
+
}
|
|
211
|
+
const payload = parsed.payload;
|
|
212
|
+
// Step 1 — every bind field present + well-typed (fail-closed on ANY absence).
|
|
213
|
+
if (!allBindFieldsWellTyped(payload)) {
|
|
214
|
+
return bindInvalid("missing or ill-typed bind field", {
|
|
215
|
+
tagOk: true,
|
|
216
|
+
temporal: {
|
|
217
|
+
applicable: false,
|
|
218
|
+
issuedAt: typeof payload.issued_at === "string" ? payload.issued_at : null,
|
|
219
|
+
label: ANNEX_IV_BIND_SIGNING_TIME_LABEL,
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
const temporal = {
|
|
224
|
+
applicable: false,
|
|
225
|
+
issuedAt: payload.issued_at,
|
|
226
|
+
label: ANNEX_IV_BIND_SIGNING_TIME_LABEL,
|
|
227
|
+
};
|
|
228
|
+
// Step 2 — resolve the key OFFLINE from the FULL verificationMethod URL. A
|
|
229
|
+
// caller-supplied resolver that throws PROPAGATES (bare call — verdict-identity).
|
|
230
|
+
const publicKey = resolvePublicKey(payload.verificationMethod);
|
|
231
|
+
if (!publicKey) {
|
|
232
|
+
return bindInvalid("public key did not resolve offline", { tagOk: true, fieldsOk: true, temporal });
|
|
233
|
+
}
|
|
234
|
+
// Step 3 — verify over the RECEIVED octets (no re-canonicalization).
|
|
235
|
+
const signatureOk = verifyAnnexIvBindReceivedOctets(parsed, publicKey);
|
|
236
|
+
if (!signatureOk) {
|
|
237
|
+
return bindInvalid("signature invalid over the received octets", {
|
|
238
|
+
tagOk: true,
|
|
239
|
+
fieldsOk: true,
|
|
240
|
+
temporal,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
// Step 4 — byte-binding (AFTER 0–3): sha256(supplied bytes) vs pdf_byte_sha256.
|
|
244
|
+
const byteBindingOk = sha256Prefixed(input.pdfBytes) === payload.pdf_byte_sha256;
|
|
245
|
+
if (!byteBindingOk) {
|
|
246
|
+
return bindInvalid("PDF byte-hash does not match the signed pdf_byte_sha256", {
|
|
247
|
+
tagOk: true,
|
|
248
|
+
fieldsOk: true,
|
|
249
|
+
signatureOk: true,
|
|
250
|
+
temporal,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
// Step 6 — two-check revocation (4-arg, incl. the issuer-binding leg). The
|
|
254
|
+
// revocation leg also calls the resolver bare (a throw propagates). A confirmed
|
|
255
|
+
// revocation (checked AND revoked) is the only revocation FAIL; an unchecked
|
|
256
|
+
// status leaves the verdict standing, honestly labelled `checked:false`.
|
|
257
|
+
const revocation = checkRevocationOffline(payload.credentialStatus, input.cachedStatusListCredential, resolvePublicKey, payload.issuer);
|
|
258
|
+
const confirmedRevoked = revocation.checked && revocation.revoked;
|
|
259
|
+
return {
|
|
260
|
+
valid: !confirmedRevoked,
|
|
261
|
+
reason: confirmedRevoked ? "revoked" : undefined,
|
|
262
|
+
tagOk: true,
|
|
263
|
+
fieldsOk: true,
|
|
264
|
+
signatureOk: true,
|
|
265
|
+
byteBindingOk: true,
|
|
266
|
+
revocation,
|
|
267
|
+
temporal,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
// Re-export the entry-shaped type + the revocation-check shape for consumers
|
|
271
|
+
// that want the full structured result types.
|
|
272
|
+
export { BITSTRING_STATUS_LIST_ENTRY };
|
|
273
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/annex-iv-verify/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AbacPoliciesResource } from "./resources/abac-policies.js";
|
|
2
|
+
import { AnnexIvResource } from "./resources/annex-iv.js";
|
|
2
3
|
import { AuditLogResource } from "./resources/audit-log.js";
|
|
3
4
|
import { BatchResource } from "./resources/batch.js";
|
|
4
5
|
import { ChatResource } from "./resources/chat.js";
|
|
@@ -33,6 +34,7 @@ export declare class AttestryClient {
|
|
|
33
34
|
readonly abacPolicies: AbacPoliciesResource;
|
|
34
35
|
readonly evidencePack: EvidencePackResource;
|
|
35
36
|
readonly vision: VisionResource;
|
|
37
|
+
readonly annexIv: AnnexIvResource;
|
|
36
38
|
private readonly _config;
|
|
37
39
|
constructor(options: AttestryClientOptions);
|
|
38
40
|
/** Internal — resources call this to dispatch HTTP requests. */
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAE5C,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAE5C,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAGlC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;gBAErD,OAAO,EAAE,qBAAqB;IAkB1C,gEAAgE;IAChE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD;;;;;;;;OAQG;IACH,cAAc,CAAC,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;QACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,QAAQ,CAAC;CAGtB"}
|
package/dist/client.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// it's not literally private because TypeScript class-private fields
|
|
9
9
|
// would also hide it from the resource modules in this codebase.
|
|
10
10
|
import { AbacPoliciesResource } from "./resources/abac-policies.js";
|
|
11
|
+
import { AnnexIvResource } from "./resources/annex-iv.js";
|
|
11
12
|
import { AuditLogResource } from "./resources/audit-log.js";
|
|
12
13
|
import { BatchResource } from "./resources/batch.js";
|
|
13
14
|
import { ChatResource } from "./resources/chat.js";
|
|
@@ -36,6 +37,8 @@ export class AttestryClient {
|
|
|
36
37
|
// 2.0 flagship resources (the ≥0.6.0 union — W1 deliverable 5)
|
|
37
38
|
evidencePack;
|
|
38
39
|
vision;
|
|
40
|
+
// Annex IV technical-file bind path (work-item C — the ≥0.7.0 surface).
|
|
41
|
+
annexIv;
|
|
39
42
|
// Frozen at construction time; resources read this through `_request`.
|
|
40
43
|
_config;
|
|
41
44
|
constructor(options) {
|
|
@@ -53,6 +56,7 @@ export class AttestryClient {
|
|
|
53
56
|
this.abacPolicies = new AbacPoliciesResource(this);
|
|
54
57
|
this.evidencePack = new EvidencePackResource(this);
|
|
55
58
|
this.vision = new VisionResource(this);
|
|
59
|
+
this.annexIv = new AnnexIvResource(this);
|
|
56
60
|
}
|
|
57
61
|
/** Internal — resources call this to dispatch HTTP requests. */
|
|
58
62
|
_request(args) {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,EAAE;AACF,mEAAmE;AACnE,wEAAwE;AACxE,qEAAqE;AACrE,iEAAiE;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,OAAO,IAAI,gBAAgB,EAC3B,mBAAmB,EACnB,aAAa,IAAI,sBAAsB,GACxC,MAAM,gBAAgB,CAAC;AAWxB,MAAM,OAAO,cAAc;IAChB,SAAS,CAAoB;IAC7B,SAAS,CAAoB;IAC7B,IAAI,CAAe;IACnB,QAAQ,CAAmB;IAC3B,iBAAiB,CAA4B;IAC7C,eAAe,CAA0B;IACzC,KAAK,CAAgB;IACrB,IAAI,CAAe;IACnB,KAAK,CAAgB;IACrB,QAAQ,CAAmB;IAC3B,YAAY,CAAuB;IAC5C,+DAA+D;IACtD,YAAY,CAAuB;IACnC,MAAM,CAAiB;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,4 +14,8 @@ export { GateResource, type GateInput, type GateGap, type GateResponse, } from "
|
|
|
14
14
|
export { BatchResource, BATCH_JOB_TYPES, BATCH_JOB_STATUSES, type BatchJobType, type BatchJobStatusValue, type BatchSystemResult, type BatchConfig, type BatchSubmitInput, type BatchSubmitResponse, type BatchJobStatus, } from "./resources/batch.js";
|
|
15
15
|
export { ShipGateResource, type ShipGateInput, type ShipGateCheckResponse, type ShipGateReasonCode, type ShipGateState, } from "./resources/ship-gate.js";
|
|
16
16
|
export { AbacPoliciesResource, ABAC_POLICY_RESOURCES, ABAC_POLICY_ACTIONS, ABAC_POLICY_EFFECTS, type AbacPolicy, type AbacPoliciesListResponse, type AbacPolicyCreateInput, type AbacPolicyUpdateInput, type AbacPolicyEffect, type AbacPolicyResource, type AbacPolicyAction, type AbacAttrRoot, type AbacAttrPath, type AbacAttrValue, type AbacLeafCondition, type AbacCompoundCondition, type AbacCondition, } from "./resources/abac-policies.js";
|
|
17
|
+
export { EvidencePackResource, PACK_TYPES, PACK_STATUSES, EXPORT_FORMATS, type PackType, type PackStatus, type ExportFormat, type CreateEvidencePackInput, type GetEvidencePackInput, type ListEvidencePacksInput, type AddBundleInput, type SignEvidencePackInput, type SupersedeEvidencePackNewPack, type SupersedeEvidencePackInput, type RevokeEvidencePackInput, type ExportEvidencePackInput, type EvidencePack, type ReperformanceBundle, type GetEvidencePackResponse, type ListEvidencePacksResponse, type HashCollision, type AddBundleResponse, type SupersedeEvidencePackResponse, type EvidencePackExportResult, } from "./resources/evidence-pack.js";
|
|
18
|
+
export { VisionResource, SUPPORTED_MEDIA_TYPES, SUPPORTED_DOCUMENT_TYPES, VISION_MODELS, PACK_INTEGRATION_STATUSES, type VisionSupportedMediaType, type VisionSupportedDocumentType, type VisionModelTier, type VisionPackIntegrationStatus, type VisionExtractInput, type VisionBatchDocument, type VisionBatchExtractInput, type VisionSchemaCompatibility, type VisionPackIntegrationHashCollision, type VisionPackIntegrationResult, type VisionTokensUsed, type VisionExtractResponse, type VisionBatchExtractResponse, type VisionJobStatus, } from "./resources/vision.js";
|
|
19
|
+
export { AnnexIvResource, type AnnexIvGenerateResult, type AnnexIvBindResult, type AnnexIvDownloadPdfResult, type GenerateAnnexIvInput, type GetAnnexIvBindInput, type DownloadAnnexIvPdfInput, } from "./resources/annex-iv.js";
|
|
20
|
+
export { verifyAnnexIvBindOffline, makeJwksResolver, type VerifyAnnexIvBindOfflineInput, type VerifyAnnexIvBindResult, type PublicKeyResolver, type Ed25519PublicJwk, type AnnexIvBindPayload, } from "./annex-iv-verify/index.js";
|
|
17
21
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,4 +17,16 @@ export { GateResource, } from "./resources/gate.js";
|
|
|
17
17
|
export { BatchResource, BATCH_JOB_TYPES, BATCH_JOB_STATUSES, } from "./resources/batch.js";
|
|
18
18
|
export { ShipGateResource, } from "./resources/ship-gate.js";
|
|
19
19
|
export { AbacPoliciesResource, ABAC_POLICY_RESOURCES, ABAC_POLICY_ACTIONS, ABAC_POLICY_EFFECTS, } from "./resources/abac-policies.js";
|
|
20
|
+
// ─── Evidence packs (W1 deliverable 5 — the 24-symbol surface, C-D6/RD-C6) ──
|
|
21
|
+
// 4 runtime-valued (EvidencePackResource + PACK_TYPES/PACK_STATUSES/EXPORT_FORMATS)
|
|
22
|
+
// + 20 type-erased (17 interfaces + 3 types) = 24. (Pinned in public-api.test.ts.)
|
|
23
|
+
export { EvidencePackResource, PACK_TYPES, PACK_STATUSES, EXPORT_FORMATS, } from "./resources/evidence-pack.js";
|
|
24
|
+
// ─── Vision (W1 — the 19-symbol surface, C-D6) ──────────────────────────────
|
|
25
|
+
// 5 runtime-valued + 14 type-erased = 19.
|
|
26
|
+
export { VisionResource, SUPPORTED_MEDIA_TYPES, SUPPORTED_DOCUMENT_TYPES, VISION_MODELS, PACK_INTEGRATION_STATUSES, } from "./resources/vision.js";
|
|
27
|
+
// ─── Annex IV technical-file bind path (work-item C — the ≥0.7.0 surface) ───
|
|
28
|
+
export { AnnexIvResource, } from "./resources/annex-iv.js";
|
|
29
|
+
// The bundled PURE offline verifier — a TOP-LEVEL export (no apiKey/transport/
|
|
30
|
+
// network), NOT a client method (C-D5).
|
|
31
|
+
export { verifyAnnexIvBindOffline, makeJwksResolver, } from "./annex-iv-verify/index.js";
|
|
20
32
|
//# 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,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,uCAAuC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EACL,cAAc,EACd,UAAU,EACV,eAAe,GAIhB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EACL,qBAAqB,GAEtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,GAUlB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,iBAAiB,EACjB,2BAA2B,GAsB5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,YAAY,EACZ,kBAAkB,GAQnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAKzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,GAK3B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,uBAAuB,GAKxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,GAIb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GAQnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,GAKjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GAcpB,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,EAAE;AACF,4EAA4E;AAC5E,uCAAuC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EACL,cAAc,EACd,UAAU,EACV,eAAe,GAIhB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EACL,qBAAqB,GAEtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,GAUlB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,iBAAiB,EACjB,2BAA2B,GAsB5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,YAAY,EACZ,kBAAkB,GAQnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAKzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,GAK3B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,uBAAuB,GAKxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,YAAY,GAIb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,GAQnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,gBAAgB,GAKjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GAcpB,MAAM,8BAA8B,CAAC;AAEtC,+EAA+E;AAC/E,oFAAoF;AACpF,mFAAmF;AACnF,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,aAAa,EACb,cAAc,GAqBf,MAAM,8BAA8B,CAAC;AAEtC,+EAA+E;AAC/E,0CAA0C;AAC1C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,yBAAyB,GAe1B,MAAM,uBAAuB,CAAC;AAE/B,+EAA+E;AAC/E,OAAO,EACL,eAAe,GAOhB,MAAM,yBAAyB,CAAC;AAEjC,+EAA+E;AAC/E,wCAAwC;AACxC,OAAO,EACL,wBAAwB,EACxB,gBAAgB,GAMjB,MAAM,4BAA4B,CAAC"}
|