@peac/protocol 0.10.6 → 0.10.8
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/crypto-utils.d.ts +9 -0
- package/dist/crypto-utils.d.ts.map +1 -0
- package/dist/crypto-utils.js +21 -0
- package/dist/crypto-utils.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/pointer-fetch.d.ts +86 -0
- package/dist/pointer-fetch.d.ts.map +1 -0
- package/dist/pointer-fetch.js +305 -0
- package/dist/pointer-fetch.js.map +1 -0
- package/dist/ssrf-safe-fetch.d.ts +205 -0
- package/dist/ssrf-safe-fetch.d.ts.map +1 -0
- package/dist/ssrf-safe-fetch.js +671 -0
- package/dist/ssrf-safe-fetch.js.map +1 -0
- package/dist/transport-profiles.d.ts +115 -0
- package/dist/transport-profiles.d.ts.map +1 -0
- package/dist/transport-profiles.js +424 -0
- package/dist/transport-profiles.js.map +1 -0
- package/dist/verification-report.d.ts +135 -0
- package/dist/verification-report.d.ts.map +1 -0
- package/dist/verification-report.js +322 -0
- package/dist/verification-report.js.map +1 -0
- package/dist/verifier-core.d.ts +62 -0
- package/dist/verifier-core.d.ts.map +1 -0
- package/dist/verifier-core.js +578 -0
- package/dist/verifier-core.js.map +1 -0
- package/dist/verifier-types.d.ts +328 -0
- package/dist/verifier-types.d.ts.map +1 -0
- package/dist/verifier-types.js +161 -0
- package/dist/verifier-types.js.map +1 -0
- package/package.json +17 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssrf-safe-fetch.js","sourceRoot":"","sources":["../src/ssrf-safe-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PEAC Transport Profile Parsers
|
|
3
|
+
*
|
|
4
|
+
* Implements parsing for transport profiles per TRANSPORT-PROFILES.md:
|
|
5
|
+
* - Header profile (PEAC-Receipt header)
|
|
6
|
+
* - Pointer profile (PEAC-Receipt-Pointer header)
|
|
7
|
+
* - Body profile (peac_receipt/peac_receipts in JSON body)
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Transport profile type
|
|
13
|
+
*/
|
|
14
|
+
export type TransportProfile = 'header' | 'pointer' | 'body';
|
|
15
|
+
/**
|
|
16
|
+
* Result of parsing a header transport profile
|
|
17
|
+
*/
|
|
18
|
+
export interface HeaderProfileResult {
|
|
19
|
+
profile: 'header';
|
|
20
|
+
receipt: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Result of parsing a pointer transport profile
|
|
24
|
+
*/
|
|
25
|
+
export interface PointerProfileResult {
|
|
26
|
+
profile: 'pointer';
|
|
27
|
+
digestAlg: 'sha256';
|
|
28
|
+
digestValue: string;
|
|
29
|
+
url: string;
|
|
30
|
+
/**
|
|
31
|
+
* Extension parameters (keys starting with ext_).
|
|
32
|
+
* Stored separately from normative fields for forward-compatibility.
|
|
33
|
+
* Consumers SHOULD NOT rely on extension keys for core verification logic.
|
|
34
|
+
*/
|
|
35
|
+
extensions?: Record<string, string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of parsing a body transport profile
|
|
39
|
+
*/
|
|
40
|
+
export interface BodyProfileResult {
|
|
41
|
+
profile: 'body';
|
|
42
|
+
receipts: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parsed transport profile (discriminated union)
|
|
46
|
+
*/
|
|
47
|
+
export type ParsedTransportProfile = HeaderProfileResult | PointerProfileResult | BodyProfileResult;
|
|
48
|
+
/**
|
|
49
|
+
* Transport profile parse error
|
|
50
|
+
*/
|
|
51
|
+
export interface TransportProfileError {
|
|
52
|
+
ok: false;
|
|
53
|
+
reason: 'invalid_transport' | 'malformed_receipt' | 'pointer_fetch_blocked';
|
|
54
|
+
errorCode: string;
|
|
55
|
+
message: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Transport profile parse success
|
|
59
|
+
*/
|
|
60
|
+
export interface TransportProfileSuccess<T extends ParsedTransportProfile = ParsedTransportProfile> {
|
|
61
|
+
ok: true;
|
|
62
|
+
result: T;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Transport profile parse result
|
|
66
|
+
*/
|
|
67
|
+
export type TransportProfileParseResult<T extends ParsedTransportProfile = ParsedTransportProfile> = TransportProfileSuccess<T> | TransportProfileError;
|
|
68
|
+
/**
|
|
69
|
+
* Parse PEAC-Receipt header
|
|
70
|
+
*
|
|
71
|
+
* Per TRANSPORT-PROFILES.md:
|
|
72
|
+
* - Multiple headers MUST be rejected
|
|
73
|
+
* - Comma-separated values MUST be rejected
|
|
74
|
+
* - Value MUST be JWS compact serialization (three dot-separated segments)
|
|
75
|
+
*
|
|
76
|
+
* @param headerValue - PEAC-Receipt header value (string or array if multiple)
|
|
77
|
+
* @returns Parse result
|
|
78
|
+
*/
|
|
79
|
+
export declare function parseHeaderProfile(headerValue: string | string[] | undefined): TransportProfileParseResult<HeaderProfileResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Parse PEAC-Receipt-Pointer header
|
|
82
|
+
*
|
|
83
|
+
* Per TRANSPORT-PROFILES.md:
|
|
84
|
+
* - Format: RFC 8941 dictionary with sha256 and url parameters
|
|
85
|
+
* - Multiple headers MUST be rejected
|
|
86
|
+
* - URL MUST be HTTPS
|
|
87
|
+
*
|
|
88
|
+
* Example: sha256="7d8f...", url="https://receipts.example.com/abc123"
|
|
89
|
+
*
|
|
90
|
+
* @param headerValue - PEAC-Receipt-Pointer header value (string or array if multiple)
|
|
91
|
+
* @returns Parse result
|
|
92
|
+
*/
|
|
93
|
+
export declare function parsePointerProfile(headerValue: string | string[] | undefined): TransportProfileParseResult<PointerProfileResult>;
|
|
94
|
+
/**
|
|
95
|
+
* Parse body profile (JSON body with peac_receipt or peac_receipts)
|
|
96
|
+
*
|
|
97
|
+
* Per TRANSPORT-PROFILES.md:
|
|
98
|
+
* - peac_receipt: single receipt (string)
|
|
99
|
+
* - peac_receipts: multiple receipts (array of strings)
|
|
100
|
+
*
|
|
101
|
+
* @param body - Parsed JSON body object
|
|
102
|
+
* @returns Parse result
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseBodyProfile(body: unknown): TransportProfileParseResult<BodyProfileResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Auto-detect and parse transport profile from request context
|
|
107
|
+
*
|
|
108
|
+
* @param context - Request context with headers and optional body
|
|
109
|
+
* @returns Parse result
|
|
110
|
+
*/
|
|
111
|
+
export declare function parseTransportProfile(context: {
|
|
112
|
+
headers: Record<string, string | string[] | undefined>;
|
|
113
|
+
body?: unknown;
|
|
114
|
+
}): TransportProfileParseResult;
|
|
115
|
+
//# sourceMappingURL=transport-profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-profiles.d.ts","sourceRoot":"","sources":["../src/transport-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CACtC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB;IAEzD,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;CACX;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB,IAC/F,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAMrD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACzC,2BAA2B,CAAC,mBAAmB,CAAC,CA4ElD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACzC,2BAA2B,CAAC,oBAAoB,CAAC,CAuHnD;AA6FD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,2BAA2B,CAAC,iBAAiB,CAAC,CA0F9F;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,2BAA2B,CA2B9B"}
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PEAC Transport Profile Parsers
|
|
4
|
+
*
|
|
5
|
+
* Implements parsing for transport profiles per TRANSPORT-PROFILES.md:
|
|
6
|
+
* - Header profile (PEAC-Receipt header)
|
|
7
|
+
* - Pointer profile (PEAC-Receipt-Pointer header)
|
|
8
|
+
* - Body profile (peac_receipt/peac_receipts in JSON body)
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.parseHeaderProfile = parseHeaderProfile;
|
|
14
|
+
exports.parsePointerProfile = parsePointerProfile;
|
|
15
|
+
exports.parseBodyProfile = parseBodyProfile;
|
|
16
|
+
exports.parseTransportProfile = parseTransportProfile;
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Header Profile Parser
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* Parse PEAC-Receipt header
|
|
22
|
+
*
|
|
23
|
+
* Per TRANSPORT-PROFILES.md:
|
|
24
|
+
* - Multiple headers MUST be rejected
|
|
25
|
+
* - Comma-separated values MUST be rejected
|
|
26
|
+
* - Value MUST be JWS compact serialization (three dot-separated segments)
|
|
27
|
+
*
|
|
28
|
+
* @param headerValue - PEAC-Receipt header value (string or array if multiple)
|
|
29
|
+
* @returns Parse result
|
|
30
|
+
*/
|
|
31
|
+
function parseHeaderProfile(headerValue) {
|
|
32
|
+
// Check for missing header
|
|
33
|
+
if (headerValue === undefined || headerValue === '') {
|
|
34
|
+
return {
|
|
35
|
+
ok: false,
|
|
36
|
+
reason: 'invalid_transport',
|
|
37
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
38
|
+
message: 'PEAC-Receipt header is missing',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Check for multiple headers (array)
|
|
42
|
+
if (Array.isArray(headerValue)) {
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
reason: 'invalid_transport',
|
|
46
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
47
|
+
message: 'Multiple PEAC-Receipt headers are not allowed',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Check for comma-separated values (HTTP header list syntax)
|
|
51
|
+
if (headerValue.includes(',')) {
|
|
52
|
+
// Could be comma in base64url, but JWS compact has exactly 2 periods
|
|
53
|
+
// If there are commas between periods, it's likely multiple values
|
|
54
|
+
const parts = headerValue.split('.');
|
|
55
|
+
if (parts.length !== 3 || parts.some((p) => p.includes(','))) {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
reason: 'invalid_transport',
|
|
59
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
60
|
+
message: 'Comma-separated PEAC-Receipt values are not allowed',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Validate JWS compact serialization structure (three segments)
|
|
65
|
+
const segments = headerValue.split('.');
|
|
66
|
+
if (segments.length !== 3) {
|
|
67
|
+
return {
|
|
68
|
+
ok: false,
|
|
69
|
+
reason: 'malformed_receipt',
|
|
70
|
+
errorCode: 'E_VERIFY_MALFORMED_RECEIPT',
|
|
71
|
+
message: `Invalid JWS compact serialization: expected 3 segments, got ${segments.length}`,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// All segments must be non-empty base64url strings
|
|
75
|
+
const base64urlRegex = /^[A-Za-z0-9_-]*$/;
|
|
76
|
+
for (let i = 0; i < segments.length; i++) {
|
|
77
|
+
const segment = segments[i];
|
|
78
|
+
if (segment.length === 0) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
reason: 'malformed_receipt',
|
|
82
|
+
errorCode: 'E_VERIFY_MALFORMED_RECEIPT',
|
|
83
|
+
message: `Invalid JWS compact serialization: segment ${i + 1} is empty`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (!base64urlRegex.test(segment)) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
reason: 'malformed_receipt',
|
|
90
|
+
errorCode: 'E_VERIFY_MALFORMED_RECEIPT',
|
|
91
|
+
message: `Invalid JWS compact serialization: segment ${i + 1} contains invalid characters`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
ok: true,
|
|
97
|
+
result: {
|
|
98
|
+
profile: 'header',
|
|
99
|
+
receipt: headerValue,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
// Pointer Profile Parser
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
/**
|
|
107
|
+
* Parse PEAC-Receipt-Pointer header
|
|
108
|
+
*
|
|
109
|
+
* Per TRANSPORT-PROFILES.md:
|
|
110
|
+
* - Format: RFC 8941 dictionary with sha256 and url parameters
|
|
111
|
+
* - Multiple headers MUST be rejected
|
|
112
|
+
* - URL MUST be HTTPS
|
|
113
|
+
*
|
|
114
|
+
* Example: sha256="7d8f...", url="https://receipts.example.com/abc123"
|
|
115
|
+
*
|
|
116
|
+
* @param headerValue - PEAC-Receipt-Pointer header value (string or array if multiple)
|
|
117
|
+
* @returns Parse result
|
|
118
|
+
*/
|
|
119
|
+
function parsePointerProfile(headerValue) {
|
|
120
|
+
// Check for missing header
|
|
121
|
+
if (headerValue === undefined || headerValue === '') {
|
|
122
|
+
return {
|
|
123
|
+
ok: false,
|
|
124
|
+
reason: 'invalid_transport',
|
|
125
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
126
|
+
message: 'PEAC-Receipt-Pointer header is missing',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Check for multiple headers (array)
|
|
130
|
+
if (Array.isArray(headerValue)) {
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
reason: 'invalid_transport',
|
|
134
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
135
|
+
message: 'Multiple PEAC-Receipt-Pointer headers are not allowed',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Parse RFC 8941 dictionary format
|
|
139
|
+
// Format: sha256="<hex>", url="<url>"
|
|
140
|
+
// We use a simple parser here instead of a full RFC 8941 implementation
|
|
141
|
+
const parseResult = parseSimpleDictionary(headerValue);
|
|
142
|
+
// Strict: Reject duplicate parameters
|
|
143
|
+
if (parseResult.duplicates.length > 0) {
|
|
144
|
+
return {
|
|
145
|
+
ok: false,
|
|
146
|
+
reason: 'invalid_transport',
|
|
147
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
148
|
+
message: `PEAC-Receipt-Pointer has duplicate parameter: ${parseResult.duplicates[0]}`,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Strict: Reject unknown parameters (only sha256, url, and ext_* are valid)
|
|
152
|
+
// Extension keys (ext_*) are allowed for forward-compatibility
|
|
153
|
+
const ALLOWED_KEYS = new Set(['sha256', 'url']);
|
|
154
|
+
const unknownKeys = parseResult.keys.filter((k) => !ALLOWED_KEYS.has(k) && !k.startsWith('ext_'));
|
|
155
|
+
if (unknownKeys.length > 0) {
|
|
156
|
+
return {
|
|
157
|
+
ok: false,
|
|
158
|
+
reason: 'invalid_transport',
|
|
159
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
160
|
+
message: `PEAC-Receipt-Pointer has unknown parameter: ${unknownKeys[0]}`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const params = parseResult.params;
|
|
164
|
+
if (!params.sha256) {
|
|
165
|
+
return {
|
|
166
|
+
ok: false,
|
|
167
|
+
reason: 'invalid_transport',
|
|
168
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
169
|
+
message: 'PEAC-Receipt-Pointer missing sha256 parameter',
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
if (!params.url) {
|
|
173
|
+
return {
|
|
174
|
+
ok: false,
|
|
175
|
+
reason: 'invalid_transport',
|
|
176
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
177
|
+
message: 'PEAC-Receipt-Pointer missing url parameter',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// Validate digest is lowercase hex
|
|
181
|
+
const hexRegex = /^[0-9a-f]{64}$/;
|
|
182
|
+
if (!hexRegex.test(params.sha256)) {
|
|
183
|
+
return {
|
|
184
|
+
ok: false,
|
|
185
|
+
reason: 'invalid_transport',
|
|
186
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
187
|
+
message: 'PEAC-Receipt-Pointer sha256 must be 64 lowercase hex characters',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// Validate URL is HTTPS
|
|
191
|
+
try {
|
|
192
|
+
const url = new URL(params.url);
|
|
193
|
+
if (url.protocol !== 'https:') {
|
|
194
|
+
return {
|
|
195
|
+
ok: false,
|
|
196
|
+
reason: 'pointer_fetch_blocked',
|
|
197
|
+
errorCode: 'E_VERIFY_POINTER_FETCH_BLOCKED',
|
|
198
|
+
message: 'Pointer URL must use HTTPS',
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
return {
|
|
204
|
+
ok: false,
|
|
205
|
+
reason: 'invalid_transport',
|
|
206
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
207
|
+
message: 'PEAC-Receipt-Pointer url is not a valid URL',
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Extract extension keys (ext_*) for forward-compatibility
|
|
211
|
+
const extensions = {};
|
|
212
|
+
for (const key of parseResult.keys) {
|
|
213
|
+
if (key.startsWith('ext_')) {
|
|
214
|
+
extensions[key] = params[key];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
ok: true,
|
|
219
|
+
result: {
|
|
220
|
+
profile: 'pointer',
|
|
221
|
+
digestAlg: 'sha256',
|
|
222
|
+
digestValue: params.sha256,
|
|
223
|
+
url: params.url,
|
|
224
|
+
...(Object.keys(extensions).length > 0 && { extensions }),
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Simple RFC 8941-like dictionary parser (ReDoS-safe)
|
|
230
|
+
*
|
|
231
|
+
* Parses: key1="value1", key2="value2"
|
|
232
|
+
* Returns map of key -> value (unquoted) plus metadata for strict validation
|
|
233
|
+
*
|
|
234
|
+
* Uses explicit character-by-character parsing to avoid ReDoS vulnerabilities
|
|
235
|
+
* from regex alternation patterns.
|
|
236
|
+
*/
|
|
237
|
+
function parseSimpleDictionary(input) {
|
|
238
|
+
const params = {};
|
|
239
|
+
const duplicates = [];
|
|
240
|
+
const keys = [];
|
|
241
|
+
let i = 0;
|
|
242
|
+
const len = input.length;
|
|
243
|
+
while (i < len) {
|
|
244
|
+
// Skip whitespace and commas
|
|
245
|
+
while (i < len && (input[i] === ' ' || input[i] === ',' || input[i] === '\t')) {
|
|
246
|
+
i++;
|
|
247
|
+
}
|
|
248
|
+
if (i >= len)
|
|
249
|
+
break;
|
|
250
|
+
// Parse key (word characters only)
|
|
251
|
+
const keyStart = i;
|
|
252
|
+
while (i < len && /\w/.test(input[i])) {
|
|
253
|
+
i++;
|
|
254
|
+
}
|
|
255
|
+
const key = input.slice(keyStart, i);
|
|
256
|
+
if (!key)
|
|
257
|
+
break;
|
|
258
|
+
// Skip whitespace before '='
|
|
259
|
+
while (i < len && input[i] === ' ')
|
|
260
|
+
i++;
|
|
261
|
+
// Expect '='
|
|
262
|
+
if (i >= len || input[i] !== '=')
|
|
263
|
+
break;
|
|
264
|
+
i++; // skip '='
|
|
265
|
+
// Skip whitespace after '='
|
|
266
|
+
while (i < len && input[i] === ' ')
|
|
267
|
+
i++;
|
|
268
|
+
// Parse value (quoted or unquoted)
|
|
269
|
+
let value;
|
|
270
|
+
if (input[i] === '"') {
|
|
271
|
+
// Quoted value - find closing quote
|
|
272
|
+
i++; // skip opening quote
|
|
273
|
+
const valueStart = i;
|
|
274
|
+
while (i < len && input[i] !== '"') {
|
|
275
|
+
i++;
|
|
276
|
+
}
|
|
277
|
+
value = input.slice(valueStart, i);
|
|
278
|
+
if (i < len)
|
|
279
|
+
i++; // skip closing quote
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
// Unquoted value - read until comma or whitespace
|
|
283
|
+
const valueStart = i;
|
|
284
|
+
while (i < len && input[i] !== ',' && input[i] !== ' ' && input[i] !== '\t') {
|
|
285
|
+
i++;
|
|
286
|
+
}
|
|
287
|
+
value = input.slice(valueStart, i);
|
|
288
|
+
}
|
|
289
|
+
keys.push(key);
|
|
290
|
+
// Track duplicates
|
|
291
|
+
if (key in params) {
|
|
292
|
+
duplicates.push(key);
|
|
293
|
+
}
|
|
294
|
+
params[key] = value;
|
|
295
|
+
}
|
|
296
|
+
return { params, duplicates, keys };
|
|
297
|
+
}
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
// Body Profile Parser
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
/**
|
|
302
|
+
* Parse body profile (JSON body with peac_receipt or peac_receipts)
|
|
303
|
+
*
|
|
304
|
+
* Per TRANSPORT-PROFILES.md:
|
|
305
|
+
* - peac_receipt: single receipt (string)
|
|
306
|
+
* - peac_receipts: multiple receipts (array of strings)
|
|
307
|
+
*
|
|
308
|
+
* @param body - Parsed JSON body object
|
|
309
|
+
* @returns Parse result
|
|
310
|
+
*/
|
|
311
|
+
function parseBodyProfile(body) {
|
|
312
|
+
if (body === null || typeof body !== 'object') {
|
|
313
|
+
return {
|
|
314
|
+
ok: false,
|
|
315
|
+
reason: 'invalid_transport',
|
|
316
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
317
|
+
message: 'Body must be a JSON object',
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
const obj = body;
|
|
321
|
+
// Check for peac_receipts (array, takes precedence)
|
|
322
|
+
if ('peac_receipts' in obj) {
|
|
323
|
+
if (!Array.isArray(obj.peac_receipts)) {
|
|
324
|
+
return {
|
|
325
|
+
ok: false,
|
|
326
|
+
reason: 'invalid_transport',
|
|
327
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
328
|
+
message: 'peac_receipts must be an array',
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
const receipts = [];
|
|
332
|
+
for (let i = 0; i < obj.peac_receipts.length; i++) {
|
|
333
|
+
const receipt = obj.peac_receipts[i];
|
|
334
|
+
if (typeof receipt !== 'string') {
|
|
335
|
+
return {
|
|
336
|
+
ok: false,
|
|
337
|
+
reason: 'invalid_transport',
|
|
338
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
339
|
+
message: `peac_receipts[${i}] must be a string`,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
receipts.push(receipt);
|
|
343
|
+
}
|
|
344
|
+
if (receipts.length === 0) {
|
|
345
|
+
return {
|
|
346
|
+
ok: false,
|
|
347
|
+
reason: 'invalid_transport',
|
|
348
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
349
|
+
message: 'peac_receipts array is empty',
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
return {
|
|
353
|
+
ok: true,
|
|
354
|
+
result: {
|
|
355
|
+
profile: 'body',
|
|
356
|
+
receipts,
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
// Check for peac_receipt (single)
|
|
361
|
+
if ('peac_receipt' in obj) {
|
|
362
|
+
if (typeof obj.peac_receipt !== 'string') {
|
|
363
|
+
return {
|
|
364
|
+
ok: false,
|
|
365
|
+
reason: 'invalid_transport',
|
|
366
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
367
|
+
message: 'peac_receipt must be a string',
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
if (obj.peac_receipt.length === 0) {
|
|
371
|
+
return {
|
|
372
|
+
ok: false,
|
|
373
|
+
reason: 'invalid_transport',
|
|
374
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
375
|
+
message: 'peac_receipt is empty',
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
return {
|
|
379
|
+
ok: true,
|
|
380
|
+
result: {
|
|
381
|
+
profile: 'body',
|
|
382
|
+
receipts: [obj.peac_receipt],
|
|
383
|
+
},
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
return {
|
|
387
|
+
ok: false,
|
|
388
|
+
reason: 'invalid_transport',
|
|
389
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
390
|
+
message: 'Body must contain peac_receipt or peac_receipts',
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
// ---------------------------------------------------------------------------
|
|
394
|
+
// Auto-detect Parser
|
|
395
|
+
// ---------------------------------------------------------------------------
|
|
396
|
+
/**
|
|
397
|
+
* Auto-detect and parse transport profile from request context
|
|
398
|
+
*
|
|
399
|
+
* @param context - Request context with headers and optional body
|
|
400
|
+
* @returns Parse result
|
|
401
|
+
*/
|
|
402
|
+
function parseTransportProfile(context) {
|
|
403
|
+
const peacReceipt = context.headers['peac-receipt'] ?? context.headers['PEAC-Receipt'];
|
|
404
|
+
const peacPointer = context.headers['peac-receipt-pointer'] ?? context.headers['PEAC-Receipt-Pointer'];
|
|
405
|
+
// Header profile takes precedence
|
|
406
|
+
if (peacReceipt !== undefined) {
|
|
407
|
+
return parseHeaderProfile(peacReceipt);
|
|
408
|
+
}
|
|
409
|
+
// Pointer profile second
|
|
410
|
+
if (peacPointer !== undefined) {
|
|
411
|
+
return parsePointerProfile(peacPointer);
|
|
412
|
+
}
|
|
413
|
+
// Body profile last (if body provided)
|
|
414
|
+
if (context.body !== undefined) {
|
|
415
|
+
return parseBodyProfile(context.body);
|
|
416
|
+
}
|
|
417
|
+
return {
|
|
418
|
+
ok: false,
|
|
419
|
+
reason: 'invalid_transport',
|
|
420
|
+
errorCode: 'E_VERIFY_INVALID_TRANSPORT',
|
|
421
|
+
message: 'No transport profile detected (missing PEAC-Receipt, PEAC-Receipt-Pointer, or body receipt)',
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
//# sourceMappingURL=transport-profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-profiles.js","sourceRoot":"","sources":["../src/transport-profiles.ts"],"names":[],"mappings":"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"}
|