@xfuel/verify 0.3.3 → 0.3.5
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 +17 -0
- package/dist/cli.js +221 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -12
- package/dist/index.js.map +1 -1
- package/dist/receipt-version.d.ts +92 -0
- package/dist/receipt-version.d.ts.map +1 -0
- package/dist/receipt-version.js +323 -0
- package/dist/receipt-version.js.map +1 -0
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +7 -6
- package/dist/refusal.js.map +1 -1
- package/dist/shell.d.ts +65 -0
- package/dist/shell.d.ts.map +1 -0
- package/dist/shell.js +268 -0
- package/dist/shell.js.map +1 -0
- package/dist/v11-receipt.d.ts +2 -0
- package/dist/v11-receipt.d.ts.map +1 -1
- package/dist/v11-receipt.js +35 -18
- package/dist/v11-receipt.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Exact-type allowlist for receipt versions.
|
|
4
|
+
*
|
|
5
|
+
* The signed JWS payload is the only version that counts. `Number()` and
|
|
6
|
+
* `parseInt` are not used: strings, booleans, arrays, null, and non-integers
|
|
7
|
+
* are unsupported. JSON `11.0` and `1.1e1` are the number 11 after parse.
|
|
8
|
+
*
|
|
9
|
+
* `hmac_attestation.payload_version` is the HMAC field-list version (5 or 8).
|
|
10
|
+
* It is not a copy of the JWS payload version. chit-1ebc5616 is signed
|
|
11
|
+
* payload_version 6 with HMAC 8. That pair still verifies.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.UPGRADE_HINT = exports.INVALID_JWS = exports.VERSION_MISMATCH = exports.UNSUPPORTED_VERSION = exports.VERIFIER_MIN = exports.SUPPORTED_RECEIPT_VERSIONS = exports.REFUSAL_EXACT_VERSIONS = exports.UNVERSIONED_OUTER_VERSIONS = exports.V11_VERSION = exports.ISSUER_ROOT_PAYLOAD_VERSION = exports.LEGACY_PAYLOAD_VERSIONS = void 0;
|
|
15
|
+
exports.isPlainObject = isPlainObject;
|
|
16
|
+
exports.isJsonInteger = isJsonInteger;
|
|
17
|
+
exports.claimsAreUnversionedV4V5 = claimsAreUnversionedV4V5;
|
|
18
|
+
exports.unversionedOuterVersion = unversionedOuterVersion;
|
|
19
|
+
exports.readSignedClaims = readSignedClaims;
|
|
20
|
+
exports.classifySignedClaims = classifySignedClaims;
|
|
21
|
+
exports.signedClaimsOnAllowlist = signedClaimsOnAllowlist;
|
|
22
|
+
exports.classifyReceiptDocument = classifyReceiptDocument;
|
|
23
|
+
exports.classifyShellDocument = classifyShellDocument;
|
|
24
|
+
exports.formatSupportedReceiptVersions = formatSupportedReceiptVersions;
|
|
25
|
+
exports.refusalPayloadVersion = refusalPayloadVersion;
|
|
26
|
+
exports.LEGACY_PAYLOAD_VERSIONS = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
|
27
|
+
exports.ISSUER_ROOT_PAYLOAD_VERSION = 11;
|
|
28
|
+
exports.V11_VERSION = 11;
|
|
29
|
+
exports.UNVERSIONED_OUTER_VERSIONS = [4, 5];
|
|
30
|
+
exports.REFUSAL_EXACT_VERSIONS = [1, 2, 3];
|
|
31
|
+
exports.SUPPORTED_RECEIPT_VERSIONS = {
|
|
32
|
+
v: [exports.V11_VERSION],
|
|
33
|
+
payload_version: [...exports.LEGACY_PAYLOAD_VERSIONS, exports.ISSUER_ROOT_PAYLOAD_VERSION],
|
|
34
|
+
refusal_payload_version: [...exports.REFUSAL_EXACT_VERSIONS],
|
|
35
|
+
legacy_unversioned_outer: [...exports.UNVERSIONED_OUTER_VERSIONS],
|
|
36
|
+
};
|
|
37
|
+
exports.VERIFIER_MIN = '0.3.5';
|
|
38
|
+
exports.UNSUPPORTED_VERSION = 'unsupported_version';
|
|
39
|
+
exports.VERSION_MISMATCH = 'version_mismatch';
|
|
40
|
+
exports.INVALID_JWS = 'invalid_jws';
|
|
41
|
+
exports.UPGRADE_HINT = 'this receipt requires a verifier newer than @xfuel/verify 0.3.5';
|
|
42
|
+
/** Named claims on the Sep 4–5 object JWS (payload v4/v5), without a signed version. */
|
|
43
|
+
const UNVERSIONED_TOP = new Set([
|
|
44
|
+
'task_id',
|
|
45
|
+
'iss',
|
|
46
|
+
'iat',
|
|
47
|
+
'payment',
|
|
48
|
+
'provider_cogs',
|
|
49
|
+
'route',
|
|
50
|
+
'output',
|
|
51
|
+
'binding',
|
|
52
|
+
'caller_binding',
|
|
53
|
+
]);
|
|
54
|
+
const UNVERSIONED_PAYMENT = new Set([
|
|
55
|
+
'rail',
|
|
56
|
+
'ref',
|
|
57
|
+
'gross_amount',
|
|
58
|
+
'net_amount',
|
|
59
|
+
'fee_amount',
|
|
60
|
+
'protocol_fee_bps',
|
|
61
|
+
'platform_fee',
|
|
62
|
+
'platform_fee_bps',
|
|
63
|
+
'fee_bps',
|
|
64
|
+
]);
|
|
65
|
+
const UNVERSIONED_COGS = new Set(['actual']);
|
|
66
|
+
const UNVERSIONED_ROUTE = new Set(['model', 'model_commitment', 'provider']);
|
|
67
|
+
const UNVERSIONED_OUTPUT = new Set(['hash']);
|
|
68
|
+
const UNVERSIONED_BINDING = new Set(['expected_commitment']);
|
|
69
|
+
const UNVERSIONED_CALLER = new Set(['payer_wallet', 'agent_pubkey', 'api_key_hash']);
|
|
70
|
+
function hasOwn(obj, key) {
|
|
71
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
72
|
+
}
|
|
73
|
+
function isPlainObject(value) {
|
|
74
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
75
|
+
}
|
|
76
|
+
/** JSON number that is a whole integer. Rejects strings, booleans, arrays, and floats. */
|
|
77
|
+
function isJsonInteger(value) {
|
|
78
|
+
return typeof value === 'number' && Number.isInteger(value);
|
|
79
|
+
}
|
|
80
|
+
function fail(reason, extra = []) {
|
|
81
|
+
const errors = reason === exports.UNSUPPORTED_VERSION
|
|
82
|
+
? [exports.UNSUPPORTED_VERSION, ...extra, exports.UPGRADE_HINT]
|
|
83
|
+
: [reason, ...extra];
|
|
84
|
+
return { ok: false, reason, errors };
|
|
85
|
+
}
|
|
86
|
+
function subset(value, allowed) {
|
|
87
|
+
if (value == null)
|
|
88
|
+
return true;
|
|
89
|
+
if (!isPlainObject(value))
|
|
90
|
+
return false;
|
|
91
|
+
return Object.keys(value).every((key) => allowed.has(key));
|
|
92
|
+
}
|
|
93
|
+
/** True when every claim key belongs to the v4/v5 object, before v6 fields existed. */
|
|
94
|
+
function claimsAreUnversionedV4V5(claims) {
|
|
95
|
+
if (!Object.keys(claims).every((key) => UNVERSIONED_TOP.has(key)))
|
|
96
|
+
return false;
|
|
97
|
+
if (!subset(claims.payment, UNVERSIONED_PAYMENT))
|
|
98
|
+
return false;
|
|
99
|
+
if (!subset(claims.provider_cogs, UNVERSIONED_COGS))
|
|
100
|
+
return false;
|
|
101
|
+
if (!subset(claims.route, UNVERSIONED_ROUTE))
|
|
102
|
+
return false;
|
|
103
|
+
if (isPlainObject(claims.route) && claims.route.model_commitment != null && isPlainObject(claims.route.model_commitment)) {
|
|
104
|
+
if (!subset(claims.route.model_commitment, new Set(['commitment'])))
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
if (!subset(claims.output, UNVERSIONED_OUTPUT))
|
|
108
|
+
return false;
|
|
109
|
+
if (!subset(claims.binding, UNVERSIONED_BINDING))
|
|
110
|
+
return false;
|
|
111
|
+
if (!subset(claims.caller_binding, UNVERSIONED_CALLER))
|
|
112
|
+
return false;
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
function stamped(container) {
|
|
116
|
+
if (!isPlainObject(container) || !hasOwn(container, 'payload_version')) {
|
|
117
|
+
return { present: false, value: undefined };
|
|
118
|
+
}
|
|
119
|
+
if (container.payload_version == null)
|
|
120
|
+
return { present: false, value: undefined };
|
|
121
|
+
return { present: true, value: container.payload_version };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Outer payload_version slots that may name a v4/v5 receipt whose JWS
|
|
125
|
+
* itself has no version. They must all be the same integer, 4 or 5.
|
|
126
|
+
*/
|
|
127
|
+
function unversionedOuterVersion(receipt) {
|
|
128
|
+
const slots = [
|
|
129
|
+
stamped(receipt.issuer_signature),
|
|
130
|
+
stamped(receipt.hmac_attestation),
|
|
131
|
+
stamped(receipt.signature),
|
|
132
|
+
].filter((slot) => slot.present);
|
|
133
|
+
if (slots.length === 0)
|
|
134
|
+
return null;
|
|
135
|
+
const first = slots[0].value;
|
|
136
|
+
if (!isJsonInteger(first) || (first !== 4 && first !== 5))
|
|
137
|
+
return null;
|
|
138
|
+
for (const slot of slots) {
|
|
139
|
+
if (!Object.is(slot.value, first))
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
return first;
|
|
143
|
+
}
|
|
144
|
+
function outerV(receipt) {
|
|
145
|
+
if (!hasOwn(receipt, 'v') || receipt.v == null)
|
|
146
|
+
return { present: false, value: undefined };
|
|
147
|
+
return { present: true, value: receipt.v };
|
|
148
|
+
}
|
|
149
|
+
function versionsAgree(signed, outer) {
|
|
150
|
+
if (!outer.present)
|
|
151
|
+
return true;
|
|
152
|
+
if (typeof signed !== typeof outer.value)
|
|
153
|
+
return false;
|
|
154
|
+
return Object.is(signed, outer.value);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Signed `v: 11` agrees with an outer `issuer_signature.payload_version` of
|
|
158
|
+
* the number 11. That is the gateway's non-enumerable v11 stamp. Any other
|
|
159
|
+
* value or type is a mismatch. A missing stamp agrees.
|
|
160
|
+
*/
|
|
161
|
+
function v11PayloadStampAgrees(outer) {
|
|
162
|
+
if (!outer.present)
|
|
163
|
+
return true;
|
|
164
|
+
return typeof outer.value === 'number' && outer.value === 11;
|
|
165
|
+
}
|
|
166
|
+
function readSignedClaims(jws) {
|
|
167
|
+
if (typeof jws !== 'string' || jws.length === 0)
|
|
168
|
+
return { ok: false, reason: exports.INVALID_JWS };
|
|
169
|
+
const parts = jws.split('.');
|
|
170
|
+
if (parts.length < 2 || !parts[1])
|
|
171
|
+
return { ok: false, reason: exports.INVALID_JWS };
|
|
172
|
+
let text;
|
|
173
|
+
try {
|
|
174
|
+
text = Buffer.from(parts[1], 'base64url').toString('utf8');
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return { ok: false, reason: exports.INVALID_JWS };
|
|
178
|
+
}
|
|
179
|
+
if (!text)
|
|
180
|
+
return { ok: false, reason: exports.INVALID_JWS };
|
|
181
|
+
let parsed;
|
|
182
|
+
try {
|
|
183
|
+
parsed = JSON.parse(text);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return { ok: false, reason: exports.INVALID_JWS };
|
|
187
|
+
}
|
|
188
|
+
if (!isPlainObject(parsed))
|
|
189
|
+
return { ok: false, reason: exports.UNSUPPORTED_VERSION };
|
|
190
|
+
return { ok: true, claims: parsed };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Allowlist on the signed claims. `outer` is the receipt document.
|
|
194
|
+
* Pass null to ignore outer copies (builders, claims-only checks).
|
|
195
|
+
*/
|
|
196
|
+
function classifySignedClaims(claims, outer) {
|
|
197
|
+
if (!isPlainObject(claims))
|
|
198
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
199
|
+
const hasV = hasOwn(claims, 'v');
|
|
200
|
+
const hasPv = hasOwn(claims, 'payload_version');
|
|
201
|
+
const outerDoc = outer && isPlainObject(outer) ? outer : null;
|
|
202
|
+
const outerVersion = outerDoc ? stamped(outerDoc.issuer_signature) : { present: false, value: undefined };
|
|
203
|
+
const topV = outerDoc ? outerV(outerDoc) : { present: false, value: undefined };
|
|
204
|
+
if (hasV && hasPv) {
|
|
205
|
+
const extra = typeof claims.v === 'number' && claims.v === 11 ? ['v11_disallowed_field'] : [];
|
|
206
|
+
return fail(exports.UNSUPPORTED_VERSION, extra);
|
|
207
|
+
}
|
|
208
|
+
if (hasV) {
|
|
209
|
+
if (!(typeof claims.v === 'number' && claims.v === 11))
|
|
210
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
211
|
+
if (outerDoc && !versionsAgree(11, topV))
|
|
212
|
+
return fail(exports.VERSION_MISMATCH);
|
|
213
|
+
if (outerDoc && !v11PayloadStampAgrees(outerVersion))
|
|
214
|
+
return fail(exports.VERSION_MISMATCH);
|
|
215
|
+
return { ok: true, family: 'v11', version: 11, version_source: 'signed' };
|
|
216
|
+
}
|
|
217
|
+
if (hasPv) {
|
|
218
|
+
const version = claims.payload_version;
|
|
219
|
+
const issuerRoot = hasOwn(claims, 'issuer_root')
|
|
220
|
+
&& claims.issuer_root != null
|
|
221
|
+
&& typeof claims.issuer_root === 'object';
|
|
222
|
+
const legacy = isJsonInteger(version) && exports.LEGACY_PAYLOAD_VERSIONS.includes(version);
|
|
223
|
+
const root = isJsonInteger(version) && version === exports.ISSUER_ROOT_PAYLOAD_VERSION && issuerRoot;
|
|
224
|
+
if (!legacy && !root)
|
|
225
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
226
|
+
if (outerDoc && !versionsAgree(version, outerVersion))
|
|
227
|
+
return fail(exports.VERSION_MISMATCH);
|
|
228
|
+
if (outerDoc && topV.present)
|
|
229
|
+
return fail(exports.VERSION_MISMATCH);
|
|
230
|
+
return { ok: true, family: 'legacy', version: version, version_source: 'signed' };
|
|
231
|
+
}
|
|
232
|
+
if (!claimsAreUnversionedV4V5(claims))
|
|
233
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
234
|
+
if (!outerDoc)
|
|
235
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
236
|
+
if (topV.present)
|
|
237
|
+
return fail(exports.VERSION_MISMATCH);
|
|
238
|
+
const inferred = unversionedOuterVersion(outerDoc);
|
|
239
|
+
if (inferred == null)
|
|
240
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
241
|
+
return { ok: true, family: 'legacy', version: inferred, version_source: 'inferred' };
|
|
242
|
+
}
|
|
243
|
+
/** True when the signed claims are on the allowlist. Outer copies are not checked. */
|
|
244
|
+
function signedClaimsOnAllowlist(claims) {
|
|
245
|
+
const decision = classifySignedClaims(claims, null);
|
|
246
|
+
return decision.ok === true;
|
|
247
|
+
}
|
|
248
|
+
function classifyReceiptDocument(receipt) {
|
|
249
|
+
if (!isPlainObject(receipt))
|
|
250
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
251
|
+
const signature = receipt.issuer_signature;
|
|
252
|
+
const jws = isPlainObject(signature) ? signature.jws : undefined;
|
|
253
|
+
// A jws that is present but not a string is a malformed JWS, not an
|
|
254
|
+
// unsigned receipt. Later code would call .split() on it and throw.
|
|
255
|
+
if (jws != null && typeof jws !== 'string')
|
|
256
|
+
return fail(exports.INVALID_JWS);
|
|
257
|
+
if (typeof jws !== 'string' || jws.length === 0) {
|
|
258
|
+
return { ok: true, family: 'unsigned' };
|
|
259
|
+
}
|
|
260
|
+
const read = readSignedClaims(jws);
|
|
261
|
+
if (!read.ok) {
|
|
262
|
+
return read.reason === exports.UNSUPPORTED_VERSION ? fail(exports.UNSUPPORTED_VERSION) : fail(exports.INVALID_JWS);
|
|
263
|
+
}
|
|
264
|
+
return classifySignedClaims(read.claims, receipt);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Public shell with no holder JWS. Exact types. Unknown versions are not
|
|
268
|
+
* INCLUDED_SHELL. null payload_version is not a version.
|
|
269
|
+
*/
|
|
270
|
+
function classifyShellDocument(shell) {
|
|
271
|
+
if (!isPlainObject(shell))
|
|
272
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
273
|
+
const hasV = hasOwn(shell, 'v') && shell.v != null;
|
|
274
|
+
const hasPv = hasOwn(shell, 'payload_version') && shell.payload_version != null;
|
|
275
|
+
if (hasV) {
|
|
276
|
+
if (!(typeof shell.v === 'number' && shell.v === 11))
|
|
277
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
278
|
+
if (hasPv && !(typeof shell.payload_version === 'number' && shell.payload_version === 11)) {
|
|
279
|
+
return fail(exports.VERSION_MISMATCH);
|
|
280
|
+
}
|
|
281
|
+
return { ok: true };
|
|
282
|
+
}
|
|
283
|
+
if (!hasPv)
|
|
284
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
285
|
+
const version = shell.payload_version;
|
|
286
|
+
if (!isJsonInteger(version))
|
|
287
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
288
|
+
if (exports.LEGACY_PAYLOAD_VERSIONS.includes(version))
|
|
289
|
+
return { ok: true };
|
|
290
|
+
const root = version === 11 && shell.issuer_root != null && typeof shell.issuer_root === 'object';
|
|
291
|
+
if (root)
|
|
292
|
+
return { ok: true };
|
|
293
|
+
return fail(exports.UNSUPPORTED_VERSION);
|
|
294
|
+
}
|
|
295
|
+
function formatSupportedReceiptVersions() {
|
|
296
|
+
return [
|
|
297
|
+
'Supported receipt versions (signed payload, exact JSON numbers):',
|
|
298
|
+
` v: ${exports.SUPPORTED_RECEIPT_VERSIONS.v.join(', ')}`,
|
|
299
|
+
` payload_version: ${exports.LEGACY_PAYLOAD_VERSIONS.join(', ')}, and 11 only with a signed issuer_root`,
|
|
300
|
+
` refusal payload_version: ${exports.REFUSAL_EXACT_VERSIONS.join(', ')}`,
|
|
301
|
+
' unversioned JWS: outer version 4 or 5 and no field introduced at v6 or later (version_source: inferred)',
|
|
302
|
+
'Unknown versions fail closed: unsupported_version, exit 1.',
|
|
303
|
+
`Receipts issued after 2026-10-08 require @xfuel/verify >= ${exports.VERIFIER_MIN}.`,
|
|
304
|
+
'Older verifiers may print VERIFIED for formats they do not understand.',
|
|
305
|
+
].join('\n');
|
|
306
|
+
}
|
|
307
|
+
/** Legacy refusal versions. Exact integers. v11 refusals use the v: 11 rule. */
|
|
308
|
+
function refusalPayloadVersion(claims) {
|
|
309
|
+
if (!isPlainObject(claims))
|
|
310
|
+
return { ok: false, reason: exports.UNSUPPORTED_VERSION };
|
|
311
|
+
if (hasOwn(claims, 'v')) {
|
|
312
|
+
if (typeof claims.v === 'number' && claims.v === 11 && !hasOwn(claims, 'payload_version')) {
|
|
313
|
+
return { ok: false, reason: exports.UNSUPPORTED_VERSION };
|
|
314
|
+
}
|
|
315
|
+
return { ok: false, reason: exports.UNSUPPORTED_VERSION };
|
|
316
|
+
}
|
|
317
|
+
const version = claims.payload_version;
|
|
318
|
+
if (!isJsonInteger(version) || !exports.REFUSAL_EXACT_VERSIONS.includes(version)) {
|
|
319
|
+
return { ok: false, reason: exports.UNSUPPORTED_VERSION };
|
|
320
|
+
}
|
|
321
|
+
return { ok: true, version: version };
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=receipt-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipt-version.js","sourceRoot":"","sources":["../src/receipt-version.ts"],"names":[],"mappings":"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"}
|
package/dist/refusal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"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"}
|
package/dist/refusal.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.verifyRefusal = verifyRefusal;
|
|
|
12
12
|
*/
|
|
13
13
|
const jws_js_1 = require("./jws.js");
|
|
14
14
|
const request_binding_js_1 = require("./request-binding.js");
|
|
15
|
+
const receipt_version_js_1 = require("./receipt-version.js");
|
|
15
16
|
exports.REFUSAL_SCHEMA = 'chit402.refusal.v1';
|
|
16
17
|
exports.REFUSAL_SCHEMA_V2 = 'chit402.refusal.v2';
|
|
17
18
|
/** Versions a verifier accepts. Version 1 has no history pin. Version 3 is refusal v2. */
|
|
@@ -164,7 +165,11 @@ function verifyRefusal(doc, options = {}) {
|
|
|
164
165
|
if (!trusted)
|
|
165
166
|
return failed(jws_js_1.KEY_UNTRUSTED, { kid: kid || null });
|
|
166
167
|
const signed = payload;
|
|
167
|
-
const
|
|
168
|
+
const versionCheck = (0, receipt_version_js_1.refusalPayloadVersion)(payload);
|
|
169
|
+
if (!versionCheck.ok)
|
|
170
|
+
return failed('unsupported_version', { kid });
|
|
171
|
+
const version = versionCheck.version;
|
|
172
|
+
const boundRefusal = signed.schema === exports.REFUSAL_SCHEMA_V2 || version === 3;
|
|
168
173
|
if (boundRefusal) {
|
|
169
174
|
const digest = signed.request_digest;
|
|
170
175
|
const preimage = requestPreimageOf(doc);
|
|
@@ -182,11 +187,7 @@ function verifyRefusal(doc, options = {}) {
|
|
|
182
187
|
// signed schema fails. An omitted outer schema still follows the JWS.
|
|
183
188
|
if (doc.schema != null && doc.schema !== signed.schema)
|
|
184
189
|
return failed('schema_mismatch', { kid });
|
|
185
|
-
|
|
186
|
-
if (!exports.REFUSAL_PAYLOAD_VERSIONS.includes(version)) {
|
|
187
|
-
return failed('payload_version_mismatch', { kid });
|
|
188
|
-
}
|
|
189
|
-
if (doc.payload_version != null && Number(doc.payload_version) !== version) {
|
|
190
|
+
if (doc.payload_version != null && doc.payload_version !== version) {
|
|
190
191
|
return failed('payload_version_mismatch', { kid });
|
|
191
192
|
}
|
|
192
193
|
if (version >= 2) {
|
package/dist/refusal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal.js","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"refusal.js","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"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"}
|
package/dist/shell.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export declare const SHELL_SCHEMA = "chit402.receipt_shell.v1";
|
|
2
|
+
export declare const INCLUDED_SHELL_LINE = "INCLUDED_SHELL: signature requires owner view";
|
|
3
|
+
export declare function isReceiptShell(doc: unknown): doc is Record<string, unknown>;
|
|
4
|
+
export declare function decodeJwsPayload(jws: unknown): Record<string, unknown> | null;
|
|
5
|
+
/** Project the public shell from a holder receipt. Leaf proof is not invented. */
|
|
6
|
+
export declare function shellFromHolder(receipt: Record<string, unknown>): Record<string, unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* The owner view returns `{ jws, salt, private_fields }`. A saved holder
|
|
9
|
+
* receipt has `issuer_signature`. Either can be the `--jws` file.
|
|
10
|
+
* An `issuer_jwk` on the owner-view body is ignored. Trust is a pinned
|
|
11
|
+
* kid or a JWKS entry, not a key the response carries.
|
|
12
|
+
*/
|
|
13
|
+
export declare function holderDocumentFromOwnerView(doc: Record<string, unknown> | string): Record<string, unknown>;
|
|
14
|
+
export interface ShellHolderCheck {
|
|
15
|
+
signatureValid: boolean;
|
|
16
|
+
keyTrusted: boolean;
|
|
17
|
+
signatureReason?: string | null;
|
|
18
|
+
inclusionSupplied: boolean;
|
|
19
|
+
inclusionOk: boolean;
|
|
20
|
+
inclusionReason?: string | null;
|
|
21
|
+
paymentRef?: string | null;
|
|
22
|
+
bindingExpected?: boolean;
|
|
23
|
+
bindingMatches?: boolean;
|
|
24
|
+
shellLeaf?: string | null;
|
|
25
|
+
provedLeaf?: string | null;
|
|
26
|
+
/** The supplied head carries an issuer JWS (checked by verifyReceipt). */
|
|
27
|
+
headSigned?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* VERIFIED requires a trusted issuer key, a passing inclusion proof, and a
|
|
31
|
+
* signed payment. A shell alone, a missing proof, or a key that only
|
|
32
|
+
* verifies because it is embedded in the holder is not VERIFIED.
|
|
33
|
+
*/
|
|
34
|
+
export declare function shellHolderVerdict(check: ShellHolderCheck): {
|
|
35
|
+
verified: boolean;
|
|
36
|
+
reason: string | null;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Expected shell from the signed JWS claims only. Outer holder fields
|
|
40
|
+
* (payment.settled_amount, payment.network, payment_meta, task_id) are
|
|
41
|
+
* not signed and are not used, so they cannot ride along under VERIFIED.
|
|
42
|
+
*/
|
|
43
|
+
export declare function signedShellFromHolder(holder: Record<string, unknown> | string): Record<string, unknown>;
|
|
44
|
+
export declare function compareShellToJws(shell: Record<string, unknown>, holder: Record<string, unknown> | string): {
|
|
45
|
+
ok: boolean;
|
|
46
|
+
field?: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* v11: body_commitment = HMAC-SHA256(salt, raw body),
|
|
50
|
+
* request_digest = SHA-256 of the JCS object
|
|
51
|
+
* {body_commitment, idempotency_key, method, nonce, path}.
|
|
52
|
+
*/
|
|
53
|
+
export declare function openV11Commitment(input: {
|
|
54
|
+
payload: Record<string, unknown> | null;
|
|
55
|
+
saltHex: string;
|
|
56
|
+
body: Buffer | string;
|
|
57
|
+
method?: string;
|
|
58
|
+
path?: string;
|
|
59
|
+
nonce?: string;
|
|
60
|
+
idempotencyKey?: string;
|
|
61
|
+
}): {
|
|
62
|
+
ok: boolean;
|
|
63
|
+
reason?: string;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../src/shell.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,6BAA6B,CAAC;AACvD,eAAO,MAAM,mBAAmB,kDAAkD,CAAC;AAEnF,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE3E;AAoBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAS7E;AAuBD,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqCzF;AAcD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoC1G;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAyBxG;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMvG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAc3I;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBnC"}
|