agentic-payments 0.1.14 → 0.1.16

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.
@@ -1,95 +1,212 @@
1
1
  /**
2
- * RFC 9421 HTTP Message Signatures
2
+ * RFC 9421 HTTP Message Signatures (Ed25519)
3
3
  *
4
- * Implements cryptographic signing and verification of HTTP requests per RFC 9421
4
+ * The signer lists every component it signs, in signing order, in the
5
+ * `Signature-Input` field, and the `@signature-params` line of the signature
6
+ * base is byte-identical to that field's value, so any RFC 9421 verifier can
7
+ * rebuild the same base. The verifier is driven by the received
8
+ * `Signature-Input`: it rebuilds the base in the listed order, refuses
9
+ * components the caller relies on but the signer did not cover, and checks
10
+ * `created`, `expires` and `alg`.
5
11
  */
6
12
  import { sha256 } from '@noble/hashes/sha256';
13
+ import { sha512 } from '@noble/hashes/sha512';
7
14
  import { bytesToHex, hexToBytes } from '@noble/hashes/utils';
8
15
  import * as ed25519 from '@noble/ed25519';
16
+ import { assertLabel, parseSignatureField, parseSignatureInputField, serializeSignatureParams, serializeString, } from './rfc9421-fields.js';
17
+ ed25519.etc.sha512Sync = (...m) => sha512(ed25519.etc.concatBytes(...m));
18
+ const ALG = 'ed25519';
19
+ const DEFAULT_LABEL = 'sig1';
20
+ const DEFAULT_EXPIRES_IN = 300;
21
+ const DEFAULT_CLOCK_SKEW = 30;
22
+ /** Derived components this implementation can resolve, in signing order. */
23
+ const DERIVED = ['@method', '@authority', '@path'];
24
+ const FIELD_NAME_RE = /^[a-z0-9!#$%&'*+.^_`|~-]+$/;
25
+ function assertFieldValue(name, value) {
26
+ if (/[\r\n\0]/.test(value)) {
27
+ throw new Error(`component "${name}" contains CR, LF or NUL`);
28
+ }
29
+ return value.trim();
30
+ }
9
31
  /**
10
- * Sign HTTP message per RFC 9421
32
+ * Resolve the caller's view of the message into canonical component values.
33
+ * Field names are lowercased; a name supplied twice (in any case) is an error.
11
34
  */
12
- export async function signHttpMessage(components, privateKeyHex, keyId) {
13
- const nonce = generateNonce();
14
- const created = Math.floor(Date.now() / 1000);
15
- // Build signature base
16
- const baseParts = [
17
- `"@method": ${components.method}`,
18
- `"@authority": ${components.authority}`,
19
- `"@path": ${components.path}`,
20
- ];
21
- if (components.contentDigest) {
22
- baseParts.push(`"content-digest": ${components.contentDigest}`);
35
+ function resolveComponents(components) {
36
+ const values = new Map();
37
+ const method = assertFieldValue('@method', components.method);
38
+ const authority = assertFieldValue('@authority', components.authority).toLowerCase();
39
+ let path = assertFieldValue('@path', components.path);
40
+ if (path === '')
41
+ path = '/';
42
+ if (!method || !authority)
43
+ throw new Error('@method and @authority must be non-empty');
44
+ if (!path.startsWith('/') || path.includes('?')) {
45
+ throw new Error('@path must be an absolute path without a query');
23
46
  }
24
- if (components.headers) {
25
- for (const [name, value] of Object.entries(components.headers)) {
26
- baseParts.push(`"${name.toLowerCase()}": ${value}`);
27
- }
47
+ values.set('@method', method);
48
+ values.set('@authority', authority);
49
+ values.set('@path', path);
50
+ if (components.contentDigest !== undefined) {
51
+ values.set('content-digest', assertFieldValue('content-digest', components.contentDigest));
52
+ }
53
+ for (const [rawName, rawValue] of Object.entries(components.headers ?? {})) {
54
+ const name = rawName.toLowerCase();
55
+ if (!FIELD_NAME_RE.test(name))
56
+ throw new Error(`invalid header name "${rawName}"`);
57
+ if (values.has(name))
58
+ throw new Error(`header "${name}" is supplied more than once`);
59
+ values.set(name, assertFieldValue(name, rawValue));
60
+ }
61
+ return values;
62
+ }
63
+ function buildSignatureBase(covered, values, signatureParams) {
64
+ const lines = covered.map((name) => {
65
+ const value = values.get(name);
66
+ if (value === undefined)
67
+ throw new Error(`covered component "${name}" is not available`);
68
+ return `${serializeString(name)}: ${value}`;
69
+ });
70
+ lines.push(`"@signature-params": ${signatureParams}`);
71
+ return lines.join('\n');
72
+ }
73
+ /**
74
+ * Sign an HTTP request per RFC 9421 with Ed25519.
75
+ *
76
+ * Covers `@method`, `@authority`, `@path`, then `content-digest` when
77
+ * `contentDigest` is given, then every entry of `headers` in insertion order.
78
+ * All of them are listed, in that order, in `Signature-Input`.
79
+ */
80
+ export async function signHttpMessage(components, privateKeyHex, keyId, options = {}) {
81
+ const label = options.label ?? DEFAULT_LABEL;
82
+ assertLabel(label);
83
+ const values = resolveComponents(components);
84
+ const covered = [...values.keys()];
85
+ const created = options.created ?? Math.floor(Date.now() / 1000);
86
+ const expiresIn = options.expiresInSeconds ?? DEFAULT_EXPIRES_IN;
87
+ if (!Number.isInteger(created) || created < 0)
88
+ throw new Error('created must be a non-negative integer');
89
+ if (!Number.isInteger(expiresIn) || expiresIn < 0) {
90
+ throw new Error('expiresInSeconds must be a non-negative integer');
28
91
  }
29
- // Add signature parameters
30
- baseParts.push(`"@signature-params": ("@method" "@authority" "@path");created=${created};nonce="${nonce}";keyid="${keyId}"`);
31
- const signatureBase = baseParts.join('\n');
32
- // Sign with Ed25519
33
- const privateKey = hexToBytes(privateKeyHex);
34
- const messageBytes = new TextEncoder().encode(signatureBase);
35
- const signatureBytes = await ed25519.sign(messageBytes, privateKey);
92
+ const expires = expiresIn > 0 ? created + expiresIn : undefined;
93
+ const nonce = options.nonce ?? generateNonce();
94
+ const params = [['created', created]];
95
+ if (expires !== undefined)
96
+ params.push(['expires', expires]);
97
+ params.push(['nonce', nonce], ['keyid', keyId], ['alg', ALG]);
98
+ if (options.tag !== undefined)
99
+ params.push(['tag', options.tag]);
100
+ const signatureParams = serializeSignatureParams(covered, params);
101
+ const signatureBase = buildSignatureBase(covered, values, signatureParams);
102
+ const signatureBytes = ed25519.sign(new TextEncoder().encode(signatureBase), hexToBytes(privateKeyHex));
36
103
  const signatureB64 = Buffer.from(signatureBytes).toString('base64');
37
- // Build Signature-Input header
38
- const signatureInput = `sig1=("@method" "@authority" "@path");created=${created};nonce="${nonce}";keyid="${keyId}";alg="ed25519"`;
39
104
  return {
40
- signatureInput,
41
- signature: `sig1=:${signatureB64}:`,
105
+ signatureInput: `${label}=${signatureParams}`,
106
+ signature: `${label}=:${signatureB64}:`,
42
107
  nonce,
43
108
  created,
109
+ ...(expires !== undefined ? { expires } : {}),
110
+ coveredComponents: covered,
44
111
  };
45
112
  }
113
+ function selectMember(members, label, field) {
114
+ if (label !== undefined) {
115
+ const value = members.get(label);
116
+ if (value === undefined)
117
+ throw new Error(`${field} has no member "${label}"`);
118
+ return [label, value];
119
+ }
120
+ if (members.size !== 1)
121
+ throw new Error(`${field} has ${members.size} members; pass options.label`);
122
+ return [...members.entries()][0];
123
+ }
124
+ function checkParams(input, signed, maxAgeSeconds, options) {
125
+ const params = new Map(input.params);
126
+ const created = params.get('created');
127
+ const expires = params.get('expires');
128
+ const alg = params.get('alg');
129
+ const now = options.now ?? Math.floor(Date.now() / 1000);
130
+ const skew = options.clockSkewSeconds ?? DEFAULT_CLOCK_SKEW;
131
+ if (typeof created !== 'number')
132
+ throw new Error('signature has no created parameter');
133
+ if (created > now + skew)
134
+ throw new Error('signature created in the future');
135
+ if (now - created > maxAgeSeconds)
136
+ throw new Error('signature is older than maxAgeSeconds');
137
+ if (expires !== undefined) {
138
+ if (typeof expires !== 'number' || expires < created)
139
+ throw new Error('invalid expires parameter');
140
+ if (now > expires + skew)
141
+ throw new Error('signature has expired');
142
+ }
143
+ else if (options.requireExpires) {
144
+ throw new Error('signature has no expires parameter');
145
+ }
146
+ if (alg !== undefined && alg !== ALG)
147
+ throw new Error(`unsupported alg "${String(alg)}"`);
148
+ if (options.expectedKeyId !== undefined && params.get('keyid') !== options.expectedKeyId) {
149
+ throw new Error('keyid does not match the expected key');
150
+ }
151
+ if (signed.created !== undefined && signed.created !== created) {
152
+ throw new Error('created does not match Signature-Input');
153
+ }
154
+ if (signed.nonce !== undefined && signed.nonce !== params.get('nonce')) {
155
+ throw new Error('nonce does not match Signature-Input');
156
+ }
157
+ }
158
+ function checkCoverage(covered, values, options) {
159
+ const seen = new Set();
160
+ for (const name of covered) {
161
+ if (seen.has(name))
162
+ throw new Error(`component "${name}" is listed twice`);
163
+ seen.add(name);
164
+ if (name.startsWith('@') && !DERIVED.includes(name)) {
165
+ throw new Error(`unsupported derived component "${name}"`);
166
+ }
167
+ if (!name.startsWith('@') && !FIELD_NAME_RE.test(name)) {
168
+ throw new Error(`invalid component name "${name}"`);
169
+ }
170
+ }
171
+ // Everything the caller relies on must be covered; nothing unlisted is trusted.
172
+ const required = [...values.keys(), ...(options.requiredComponents ?? []).map((n) => n.toLowerCase())];
173
+ for (const name of required) {
174
+ if (!seen.has(name))
175
+ throw new Error(`component "${name}" is not covered by the signature`);
176
+ }
177
+ }
46
178
  /**
47
- * Verify RFC 9421 HTTP signature
179
+ * Verify an RFC 9421 Ed25519 signature on an HTTP request.
180
+ *
181
+ * `components` is the verifier's view of the received request. The signature
182
+ * base is rebuilt from the received `Signature-Input` (its order, its
183
+ * parameters). Verification fails unless every supplied component, including
184
+ * `contentDigest` and every entry of `headers`, is covered, `created` is
185
+ * present and no older than `maxAgeSeconds` (and not in the future beyond the
186
+ * clock skew), `expires` (if present) has not passed, and `alg` (if present)
187
+ * is `ed25519`. Never throws; returns false on any failure.
48
188
  *
49
- * @param maxAgeSeconds - Maximum age of signature in seconds (default: 300 = 5 minutes)
189
+ * @param maxAgeSeconds - Maximum age of the signature in seconds (default 300)
50
190
  */
51
- export async function verifyHttpSignature(components, signed, publicKeyHex, maxAgeSeconds = 300) {
191
+ export async function verifyHttpSignature(components, signed, publicKeyHex, maxAgeSeconds = 300, options = {}) {
52
192
  try {
53
- // Validate timestamp to prevent replay attacks
54
- const now = Math.floor(Date.now() / 1000);
55
- const age = Math.abs(now - signed.created);
56
- if (age > maxAgeSeconds) {
57
- console.error(`Signature expired: age=${age}s, max=${maxAgeSeconds}s`);
58
- return false;
59
- }
60
- // Reconstruct signature base
61
- const baseParts = [
62
- `"@method": ${components.method}`,
63
- `"@authority": ${components.authority}`,
64
- `"@path": ${components.path}`,
65
- ];
66
- if (components.contentDigest) {
67
- baseParts.push(`"content-digest": ${components.contentDigest}`);
68
- }
69
- if (components.headers) {
70
- for (const [name, value] of Object.entries(components.headers)) {
71
- baseParts.push(`"${name.toLowerCase()}": ${value}`);
72
- }
73
- }
74
- // Extract keyid from signature input
75
- const keyId = extractKeyId(signed.signatureInput);
76
- // Add signature parameters
77
- baseParts.push(`"@signature-params": ("@method" "@authority" "@path");created=${signed.created};nonce="${signed.nonce}";keyid="${keyId}"`);
78
- const signatureBase = baseParts.join('\n');
79
- // Extract signature bytes
80
- const sigMatch = signed.signature.match(/^sig1=:(.+):$/);
81
- if (!sigMatch || !sigMatch[1]) {
82
- throw new Error('Invalid signature format');
83
- }
84
- const signatureB64 = sigMatch[1];
85
- const signatureBytes = Buffer.from(signatureB64, 'base64');
86
- // Verify with Ed25519
87
- const publicKey = hexToBytes(publicKeyHex);
88
- const messageBytes = new TextEncoder().encode(signatureBase);
89
- return await ed25519.verify(signatureBytes, messageBytes, publicKey);
193
+ const [label, input] = selectMember(parseSignatureInputField(signed.signatureInput), options.label, 'Signature-Input');
194
+ const signatures = parseSignatureField(signed.signature);
195
+ const signatureBytes = signatures.get(label);
196
+ if (!signatureBytes)
197
+ throw new Error(`Signature has no member "${label}"`);
198
+ if (signatureBytes.length !== 64)
199
+ throw new Error('Ed25519 signatures are 64 bytes');
200
+ const values = resolveComponents(components);
201
+ checkCoverage(input.components, values, options);
202
+ checkParams(input, signed, maxAgeSeconds, options);
203
+ const signatureParams = serializeSignatureParams(input.components, input.params);
204
+ const signatureBase = buildSignatureBase(input.components, values, signatureParams);
205
+ return ed25519.verify(signatureBytes, new TextEncoder().encode(signatureBase), hexToBytes(publicKeyHex), {
206
+ zip215: false,
207
+ });
90
208
  }
91
- catch (error) {
92
- console.error('Signature verification failed:', error);
209
+ catch {
93
210
  return false;
94
211
  }
95
212
  }
@@ -109,14 +226,4 @@ function generateNonce() {
109
226
  crypto.getRandomValues(bytes);
110
227
  return bytesToHex(bytes);
111
228
  }
112
- /**
113
- * Extract keyid from Signature-Input header
114
- */
115
- function extractKeyId(signatureInput) {
116
- const match = signatureInput.match(/keyid="([^"]+)"/);
117
- if (!match || !match[1]) {
118
- throw new Error('Missing keyid in signature-input');
119
- }
120
- return match[1];
121
- }
122
229
  //# sourceMappingURL=rfc9421.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rfc9421.js","sourceRoot":"","sources":["../../src/visa-tap/rfc9421.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAG1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAA+B,EAC/B,aAAqB,EACrB,KAAa;IAEb,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE9C,uBAAuB;IACvB,MAAM,SAAS,GAAa;QAC1B,cAAc,UAAU,CAAC,MAAM,EAAE;QACjC,iBAAiB,UAAU,CAAC,SAAS,EAAE;QACvC,YAAY,UAAU,CAAC,IAAI,EAAE;KAC9B,CAAC;IAEF,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,SAAS,CAAC,IAAI,CACZ,iEAAiE,OAAO,WAAW,KAAK,YAAY,KAAK,GAAG,CAC7G,CAAC;IAEF,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3C,oBAAoB;IACpB,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpE,+BAA+B;IAC/B,MAAM,cAAc,GAAG,iDAAiD,OAAO,WAAW,KAAK,YAAY,KAAK,iBAAiB,CAAC;IAElI,OAAO;QACL,cAAc;QACd,SAAS,EAAE,SAAS,YAAY,GAAG;QACnC,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAA+B,EAC/B,MAAyB,EACzB,YAAoB,EACpB,gBAAwB,GAAG;IAE3B,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3C,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,UAAU,aAAa,GAAG,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,6BAA6B;QAC7B,MAAM,SAAS,GAAa;YAC1B,cAAc,UAAU,CAAC,MAAM,EAAE;YACjC,iBAAiB,UAAU,CAAC,SAAS,EAAE;YACvC,YAAY,UAAU,CAAC,IAAI,EAAE;SAC9B,CAAC;QAEF,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAElD,2BAA2B;QAC3B,SAAS,CAAC,IAAI,CACZ,iEAAiE,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,KAAK,YAAY,KAAK,GAAG,CAC3H,CAAC;QAEF,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE3D,sBAAsB;QACtB,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAE7D,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,YAAY,OAAO,GAAG,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,cAAsB;IAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"rfc9421.js","sourceRoot":"","sources":["../../src/visa-tap/rfc9421.ts"],"names":[],"mappings":"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"}
@@ -61,10 +61,10 @@ export interface SignatureComponents {
61
61
  headers?: Record<string, string>;
62
62
  }
63
63
  /**
64
- * RFC 9421 Signed HTTP Message
64
+ * RFC 9421 Signed HTTP Message, as returned by signHttpMessage
65
65
  */
66
66
  export interface SignedHttpMessage {
67
- /** Signature-Input header value */
67
+ /** Signature-Input header value; lists every covered component, in order */
68
68
  signatureInput: string;
69
69
  /** Signature header value */
70
70
  signature: string;
@@ -72,6 +72,56 @@ export interface SignedHttpMessage {
72
72
  nonce: string;
73
73
  /** Creation timestamp (Unix seconds) */
74
74
  created: number;
75
+ /** Expiry timestamp (Unix seconds), when one was set */
76
+ expires?: number;
77
+ /** Covered component identifiers, in signing order */
78
+ coveredComponents: string[];
79
+ }
80
+ /**
81
+ * A received RFC 9421 signature to verify. Only the two header values are
82
+ * required; `created` and `nonce`, when given, must match Signature-Input.
83
+ */
84
+ export interface VerifiableHttpSignature {
85
+ /** Signature-Input header value */
86
+ signatureInput: string;
87
+ /** Signature header value */
88
+ signature: string;
89
+ /** Expected nonce (must equal the signed nonce parameter) */
90
+ nonce?: string;
91
+ /** Expected created time (must equal the signed created parameter) */
92
+ created?: number;
93
+ }
94
+ /**
95
+ * Options for signHttpMessage
96
+ */
97
+ export interface SignHttpMessageOptions {
98
+ /** Signature label (default "sig1") */
99
+ label?: string;
100
+ /** Creation time in Unix seconds (default: now) */
101
+ created?: number;
102
+ /** Lifetime written to the expires parameter (default 300; 0 omits expires) */
103
+ expiresInSeconds?: number;
104
+ /** Nonce (default: 16 random bytes, hex) */
105
+ nonce?: string;
106
+ /** Optional tag parameter */
107
+ tag?: string;
108
+ }
109
+ /**
110
+ * Options for verifyHttpSignature
111
+ */
112
+ export interface VerifyHttpSignatureOptions {
113
+ /** Label to verify; required when Signature-Input has several members */
114
+ label?: string;
115
+ /** Current time in Unix seconds (default: now) */
116
+ now?: number;
117
+ /** Allowed clock skew for created/expires in seconds (default 30) */
118
+ clockSkewSeconds?: number;
119
+ /** Reject unless the keyid parameter equals this value */
120
+ expectedKeyId?: string;
121
+ /** Extra component identifiers that must be covered */
122
+ requiredComponents?: string[];
123
+ /** Reject signatures that carry no expires parameter */
124
+ requireExpires?: boolean;
75
125
  }
76
126
  /**
77
127
  * QUIC Transport Configuration
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/visa-tap/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc;IACd,OAAO,EAAE,oBAAoB,CAAC;IAC9B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iCAAiC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa;IACb,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5C,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/visa-tap/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-payments",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "Dual-protocol payment infrastructure for autonomous AI commerce (AP2 + ACP)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,20 +12,6 @@
12
12
  "import": "./dist/index.js",
13
13
  "default": "./dist/index.js"
14
14
  },
15
- "./wasm": {
16
- "types": "./dist/wasm/index.d.ts",
17
- "import": "./dist/wasm/index.js",
18
- "browser": "./dist/wasm/browser.js",
19
- "node": "./dist/wasm/node.js"
20
- },
21
- "./ap2": {
22
- "types": "./dist/ap2/index.d.ts",
23
- "import": "./dist/ap2/index.js"
24
- },
25
- "./acp": {
26
- "types": "./dist/acp/index.d.ts",
27
- "import": "./dist/acp/index.js"
28
- },
29
15
  "./visa-tap": {
30
16
  "types": "./dist/visa-tap/index.d.ts",
31
17
  "import": "./dist/visa-tap/index.js"
@@ -96,15 +82,7 @@
96
82
  ],
97
83
  "author": "rUv <ruv@ruv.io>",
98
84
  "license": "(MIT OR Apache-2.0)",
99
- "repository": {
100
- "type": "git",
101
- "url": "https://github.com/agentic-catalog/agentic-payments.git",
102
- "directory": "crates/agentic-payments"
103
- },
104
- "bugs": {
105
- "url": "https://github.com/agentic-catalog/agentic-payments/issues"
106
- },
107
- "homepage": "https://github.com/agentic-catalog/agentic-payments#readme",
85
+ "homepage": "https://www.npmjs.com/package/agentic-payments",
108
86
  "engines": {
109
87
  "node": ">=18.0.0",
110
88
  "npm": ">=8.0.0"
@@ -135,11 +113,12 @@
135
113
  "@typescript-eslint/eslint-plugin": "^6.19.0",
136
114
  "@typescript-eslint/parser": "^6.19.0",
137
115
  "@vitest/coverage-v8": "^1.6.1",
138
- "agentic-flow": "^3.4.0",
116
+ "agentic-flow": "^3.4.4",
139
117
  "eslint": "^8.56.0",
140
118
  "eslint-config-prettier": "^9.1.0",
141
119
  "eslint-plugin-import": "^2.29.1",
142
120
  "eventsource": "^4.0.0",
121
+ "http-message-signatures": "^1.0.6",
143
122
  "node-fetch": "^3.3.2",
144
123
  "prettier": "^3.2.4",
145
124
  "size-limit": "^11.0.1",