@metacensus/api 0.3.0 → 0.5.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.
@@ -1,33 +1,53 @@
1
- // The TypeScript half of the MetaCensus signing chain; go/signing is the
2
- // other half, and ts/test/wire.test.mjs checks the two agree — neither may
3
- // be edited alone.
1
+ // The TypeScript half of the MetaCensus signing chain; go/signing is the other
2
+ // half, and ts/test/wire.test.mjs checks the two agree — neither may be edited
3
+ // alone. See README.md, "The signing chain".
4
4
  //
5
- // digest = SHA-384( JCS( {"content": C, "signature": S} ) )
5
+ // One format serves both layers. A participant signs with a passkey (WebAuthn);
6
+ // an institution countersigns headless. Both produce the same object — a
7
+ // WebAuthn assertion whose challenge is the record's digest:
6
8
  //
7
- // C is the content message, S is the UserSignature with `value` cleared.
8
- // Canonical JSON (RFC 8785) rather than the wire bytes: protojson isn't
9
- // byte-stable, so only canonicalizing keeps a record verifiable after it's
10
- // relayed, re-encoded and stored.
9
+ // challenge = SHA-256( JCS( D ) )
11
10
  //
12
- // The canonicalizer below is hand-written — it must match go/signing byte for
13
- // byte, which no general RFC 8785 library does — and signing uses the WebCrypto
14
- // `crypto` global and the platform's own base64 codec, so it pulls in nothing.
15
- // Identifies this scheme (JCS + SHA-384 + base64url r||s); a verifier that
16
- // doesn't recognize it should refuse rather than guess.
17
- export const SPEC = "metacensus.sig/1";
18
- // P-384/SHA-384 — `UserSignature.Alg`'s `Es384`. The enum is closed; adding
19
- // another algorithm is a contract release.
11
+ // D is {content, interpretation, keyId, time} for the participant and
12
+ // {signature, interpretation, keyId, time} for the institution. The assertion
13
+ // carries that challenge inside clientDataJSON and signs authenticatorData ‖
14
+ // SHA-256(clientDataJSON). Verification recomputes the challenge, confirms the
15
+ // binding, applies the layer's acceptance policy, then verifies the signature
16
+ // over the wrapper — it never re-serialises clientDataJSON, only hashes the
17
+ // stored bytes and parses them for `challenge`/`type`.
18
+ //
19
+ // This module holds the format primitives: the digest, a headless signer, and
20
+ // verification. The browser passkey ceremony — navigator.credentials.create /
21
+ // get — belongs to the consumer (metacensus/ui#55), which passes its assertion
22
+ // here to be verified. Canonical JSON (RFC 8785) rather than the wire bytes:
23
+ // protojson isn't byte-stable, so only canonicalizing keeps a record verifiable
24
+ // after it's relayed, re-encoded and stored.
25
+ // Versions the whole scheme (JCS + SHA-256 + P-256/ES256 + base64url) as one
26
+ // atom; a verifier that doesn't recognize it should refuse rather than guess.
27
+ export const SPEC = "metacensus.sig/2";
28
+ // clientDataJSON.type values: the participant's is WebAuthn's own, the
29
+ // institution's is honestly its own — never a forged "webauthn.get".
30
+ export const TYPE_GET = "webauthn.get";
31
+ export const TYPE_COUNTERSIGN = "metacensus.countersign";
32
+ // authenticatorData flag bits (WebAuthn §6.1). BE/BS record credential custody
33
+ // (synced vs device-bound) and are read, not set by policy.
34
+ export const FLAG_UP = 1 << 0; // user present
35
+ export const FLAG_UV = 1 << 2; // user verified (a gesture, not mere presence)
36
+ export const FLAG_BE = 1 << 3; // backup eligible (a syncable passkey)
37
+ export const FLAG_BS = 1 << 5; // backed up (currently synced)
38
+ // ES256: ECDSA on P-256 with SHA-256 — WebAuthn's default and this scheme's
39
+ // only algorithm. The enum is gone; a different curve is a different SPEC.
20
40
  const ALG = {
21
41
  name: "ECDSA",
22
- namedCurve: "P-384",
23
- hash: "SHA-384",
42
+ namedCurve: "P-256",
43
+ hash: "SHA-256",
24
44
  };
25
45
  // ---------------------------------------------------------------------------
26
46
  // JCS (RFC 8785)
27
47
  // ---------------------------------------------------------------------------
28
48
  /**
29
- * `value` as RFC 8785 canonical JSON of a ts-proto message — shaped to
30
- * match what protojson emits on the Go side (see buf.gen.yaml, wire.test.mjs).
49
+ * A value as RFC 8785 canonical JSON of a ts-proto message — shaped to match
50
+ * what protojson emits on the Go side (see buf.gen.yaml, wire.test.mjs).
31
51
  */
32
52
  export function canonicalize(value) {
33
53
  if (value === null)
@@ -99,56 +119,147 @@ function stringToJCS(s) {
99
119
  return out + '"';
100
120
  }
101
121
  // ---------------------------------------------------------------------------
102
- // The chain
122
+ // The digest
103
123
  // ---------------------------------------------------------------------------
124
+ /** An Interpretation for content of the given full proto name, under this SPEC. */
125
+ export function interpretation(contentType) {
126
+ return { spec: SPEC, contentType };
127
+ }
104
128
  /**
105
- * The exact string the digest is taken over — exported so a mismatch between
106
- * implementations shows up as two strings, not two hashes.
129
+ * The exact string the participant digest is taken over: {content,
130
+ * interpretation, keyId, time}. Exported so a mismatch between implementations
131
+ * shows up as two strings, not two hashes.
107
132
  */
108
- export function signingInput(content, signature) {
109
- if (!signature.signingTime) {
133
+ export function userSigningInput(content, interp, keyId, time) {
134
+ return canonicalize(baseFields(interp, keyId, time, { content }));
135
+ }
136
+ /** The string the institutional digest is taken over: {signature, interpretation, keyId, time}. */
137
+ export function countersignInput(userSignature, interp, keyId, time) {
138
+ return canonicalize(baseFields(interp, keyId, time, { signature: userSignature }));
139
+ }
140
+ function baseFields(interp, keyId, time, extra) {
141
+ if (!time) {
110
142
  // Message-typed, so canonicalization can't tell "absent" from a default;
111
143
  // it must be set explicitly.
112
- throw new Error("signing: signingTime is unset; every signature carries the time its signer claims");
144
+ throw new Error("signing: time is unset; every signature carries the time its signer claims or observes");
113
145
  }
114
- return canonicalize({ content, signature: { ...signature, value: "" } });
146
+ if (!keyId)
147
+ throw new Error("signing: keyId is unset; the signer's enrolled key must be named");
148
+ return { interpretation: interp, keyId, time, ...extra };
149
+ }
150
+ /** SHA-256 over userSigningInput — the participant assertion's challenge. */
151
+ export async function userChallenge(content, interp, keyId, time) {
152
+ return challenge(userSigningInput(content, interp, keyId, time));
115
153
  }
116
- /** SHA-384 over `signingInput`. */
117
- export async function digest(content, signature) {
118
- const bytes = new TextEncoder().encode(signingInput(content, signature));
119
- return crypto.subtle.digest("SHA-384", bytes);
154
+ /** SHA-256 over countersignInput — the institutional assertion's challenge. */
155
+ export async function countersignChallenge(userSignature, interp, keyId, time) {
156
+ return challenge(countersignInput(userSignature, interp, keyId, time));
157
+ }
158
+ async function challenge(input) {
159
+ return new Uint8Array(await sha256(new TextEncoder().encode(input)));
160
+ }
161
+ /**
162
+ * authenticatorData for a headless signer: SHA-256(rpId) ‖ flags ‖ signCount(0).
163
+ * A participant's comes from the authenticator with the real UV/BE/BS flags.
164
+ */
165
+ export async function authenticatorData(rpId, flags) {
166
+ const hash = new Uint8Array(await sha256(new TextEncoder().encode(rpId)));
167
+ const out = new Uint8Array(37);
168
+ out.set(hash, 0);
169
+ out[32] = flags & 0xff;
170
+ return out;
120
171
  }
121
172
  /**
122
- * Signs `content`, returning the `value` for the signature. Fills in
123
- * nothing else — the other fields are the signer's own claims and are
124
- * already inside the digest.
173
+ * Builds the assertion a headless signer emits: fills the challenge, serialises
174
+ * clientDataJSON, and signs authenticatorData ‖ SHA-256(clientDataJSON) with
175
+ * privateKey, DER-encoded as WebAuthn does. authData carries the honest flags
176
+ * (see authenticatorData). For a participant, the browser produces all of this
177
+ * and this module only verifies it.
125
178
  */
126
- export async function sign(privateKey, content, signature) {
127
- checkAttributes(signature);
128
- const raw = await crypto.subtle.sign(ALG, privateKey, new TextEncoder().encode(signingInput(content, signature)));
129
- // WebCrypto returns fixed-width r||s directly, not a DER SEQUENCE — no
130
- // re-encoding needed.
131
- return toBase64Url(new Uint8Array(raw));
132
- }
133
- /** Checks `signature` against `content` under `publicKey`. */
134
- export async function verify(publicKey, content, signature) {
135
- checkAttributes(signature);
136
- const value = fromBase64Url(signature.value);
137
- return crypto.subtle.verify(ALG, publicKey, value, new TextEncoder().encode(signingInput(content, signature)));
138
- }
139
- // Checked by both sign and verify, so a signature this module would refuse
140
- // is one it will never produce. `contentType` is the caller's responsibility
141
- // to set correctly — nothing here knows a plain object's proto name.
142
- function checkAttributes(signature) {
143
- if (signature.spec !== SPEC) {
144
- throw new Error(`signing: spec is ${JSON.stringify(signature.spec)}, and this module implements ${JSON.stringify(SPEC)}`);
179
+ export async function assert(privateKey, challenge, authData, clientData) {
180
+ const cdj = new TextEncoder().encode(JSON.stringify({ ...clientData, challenge: toBase64Url(challenge) }));
181
+ const raw = new Uint8Array(await crypto.subtle.sign(ALG, privateKey, await signedMessage(authData, cdj)));
182
+ return {
183
+ authenticatorData: toBase64Url(authData),
184
+ clientDataJson: toBase64Url(cdj),
185
+ signature: toBase64Url(rawToDer(raw)),
186
+ };
187
+ }
188
+ /** authenticatorData ‖ SHA-256(clientDataJSON) — what ES256 then hashes and signs. */
189
+ async function signedMessage(authData, clientDataJSON) {
190
+ const cdh = new Uint8Array(await sha256(clientDataJSON));
191
+ const msg = new Uint8Array(authData.length + cdh.length);
192
+ msg.set(authData, 0);
193
+ msg.set(cdh, authData.length);
194
+ return msg;
195
+ }
196
+ /** Accepts a passkey assertion: webauthn.get from a known origin, user-verified. */
197
+ export function participantPolicy(...origins) {
198
+ return { type: TYPE_GET, origins, requireUV: true };
199
+ }
200
+ /** Accepts the headless countersignature: the institutional type, no origin. */
201
+ export function institutionPolicy() {
202
+ return { type: TYPE_COUNTERSIGN, origins: [], requireUV: false };
203
+ }
204
+ /**
205
+ * Checks one assertion against a challenge under publicKey and policy: the
206
+ * challenge binding, then the assertion's own metadata, then the signature over
207
+ * the wrapper. clientDataJSON is hashed as stored and only parsed to read
208
+ * `challenge`/`type`; it is never re-serialised.
209
+ */
210
+ export async function verifyAssertion(publicKey, assertion, challenge, policy) {
211
+ const authData = fromBase64Url(assertion.authenticatorData);
212
+ const cdj = fromBase64Url(assertion.clientDataJson);
213
+ const sig = fromBase64Url(assertion.signature);
214
+ if (authData.length < 37)
215
+ return false;
216
+ let cd;
217
+ try {
218
+ cd = JSON.parse(new TextDecoder().decode(cdj));
145
219
  }
146
- if (signature.alg !== "Es384") {
147
- throw new Error(`signing: alg is ${JSON.stringify(signature.alg)}, and this module implements "Es384"`);
220
+ catch {
221
+ return false;
148
222
  }
149
- if (!signature.contentType) {
150
- throw new Error("signing: contentType is empty; it names the message the signature covers");
223
+ // Challenge binding: the assertion must commit to this record's digest.
224
+ if (cd.challenge !== toBase64Url(challenge))
225
+ return false;
226
+ // Acceptance policy — the honest per-layer difference.
227
+ if (cd.type !== policy.type)
228
+ return false;
229
+ if (policy.origins.length === 0) {
230
+ if (cd.origin)
231
+ return false;
151
232
  }
233
+ else if (!policy.origins.includes(cd.origin ?? "")) {
234
+ return false;
235
+ }
236
+ if (policy.requireUV && (authData[32] & FLAG_UV) === 0)
237
+ return false;
238
+ return crypto.subtle.verify(ALG, publicKey, derToRaw(sig), await signedMessage(authData, cdj));
239
+ }
240
+ /**
241
+ * Checks a participant signature over content: the interpretation is this
242
+ * scheme's and names content's type, the assertion binds to the record's
243
+ * digest, and it satisfies policy. Resolving publicKey — the enrolled key keyId
244
+ * names — is the caller's, except at sign-up (see enrolledKey).
245
+ */
246
+ export async function verifyUser(publicKey, content, interp, signature, policy) {
247
+ if (interp.spec !== SPEC)
248
+ return false;
249
+ if (!signature.assertion)
250
+ return false;
251
+ const challenge = await userChallenge(content, interp, signature.keyId, signature.time ?? "");
252
+ return verifyAssertion(publicKey, signature.assertion, challenge, policy);
253
+ }
254
+ /**
255
+ * Checks an institutional signature nesting over userSignature: it binds to
256
+ * userSignature (plus the record's interpretation) and satisfies policy.
257
+ */
258
+ export async function verifyCountersign(publicKey, userSignature, interp, institutional, policy) {
259
+ if (!institutional.assertion)
260
+ return false;
261
+ const challenge = await countersignChallenge(userSignature, interp, institutional.keyId, institutional.time ?? "");
262
+ return verifyAssertion(publicKey, institutional.assertion, challenge, policy);
152
263
  }
153
264
  // ---------------------------------------------------------------------------
154
265
  // Keys
@@ -169,12 +280,33 @@ export async function decodePublicKey(encoded) {
169
280
  return crypto.subtle.importKey("spki", fromBase64Url(encoded), ALG, true, ["verify"]);
170
281
  }
171
282
  /**
172
- * base64url of SHA-256 over the SPKI DER — `UserSignature.keyId`. Derived
173
- * rather than minted, so a client can compute it before it has an account.
283
+ * base64url of SHA-256 over the SPKI DER — `Signature.keyId`. Derived rather
284
+ * than minted, so a client can compute it before it has an account.
174
285
  */
175
286
  export async function keyId(publicKey) {
176
287
  const spki = await crypto.subtle.exportKey("spki", publicKey);
177
- return toBase64Url(new Uint8Array(await crypto.subtle.digest("SHA-256", spki)));
288
+ return toBase64Url(new Uint8Array(await sha256(new Uint8Array(spki))));
289
+ }
290
+ /**
291
+ * Resolves the key being enrolled at sign-up, the one write whose key is not
292
+ * yet in persistence: the key offered must thumbprint to the keyId claimed, or
293
+ * a key that is not the sender's could be enrolled under their account. Every
294
+ * other record resolves keyId against its owner's enrolled key.
295
+ */
296
+ export async function enrolledKey(publicKey, claimedKeyId) {
297
+ if (!publicKey)
298
+ throw new Error("signing: sign-up carries no enrolling public key");
299
+ const key = await decodePublicKey(publicKey);
300
+ if ((await keyId(key)) !== claimedKeyId) {
301
+ throw new Error("signing: keyId does not thumbprint the key offered");
302
+ }
303
+ return key;
304
+ }
305
+ // ---------------------------------------------------------------------------
306
+ // Bytes
307
+ // ---------------------------------------------------------------------------
308
+ function sha256(bytes) {
309
+ return crypto.subtle.digest("SHA-256", bytes);
178
310
  }
179
311
  function toBase64Url(bytes) {
180
312
  return bytes.toBase64({ alphabet: "base64url", omitPadding: true });
@@ -185,4 +317,63 @@ function toBase64Url(bytes) {
185
317
  function fromBase64Url(s) {
186
318
  return Uint8Array.fromBase64(s, { alphabet: "base64url" });
187
319
  }
320
+ // WebCrypto signs and verifies fixed-width r‖s (IEEE P1363); WebAuthn stores an
321
+ // ASN.1 DER SEQUENCE. These two bridge the formats for P-256 (32-byte coords),
322
+ // so one stored format (DER) serves a passkey and a headless signer alike.
323
+ function rawToDer(raw) {
324
+ const r = derInt(raw.subarray(0, 32));
325
+ const s = derInt(raw.subarray(32, 64));
326
+ const body = new Uint8Array(r.length + s.length);
327
+ body.set(r, 0);
328
+ body.set(s, r.length);
329
+ const out = new Uint8Array(2 + body.length);
330
+ out[0] = 0x30; // SEQUENCE
331
+ out[1] = body.length;
332
+ out.set(body, 2);
333
+ return out;
334
+ }
335
+ // One ASN.1 INTEGER from a big-endian coordinate: strip leading zeros, prepend
336
+ // a 0x00 when the high bit is set so the value stays positive.
337
+ function derInt(coord) {
338
+ let i = 0;
339
+ while (i < coord.length - 1 && coord[i] === 0)
340
+ i++;
341
+ let v = coord.subarray(i);
342
+ if (v[0] & 0x80) {
343
+ const pad = new Uint8Array(v.length + 1);
344
+ pad.set(v, 1);
345
+ v = pad;
346
+ }
347
+ const out = new Uint8Array(2 + v.length);
348
+ out[0] = 0x02; // INTEGER
349
+ out[1] = v.length;
350
+ out.set(v, 2);
351
+ return out;
352
+ }
353
+ function derToRaw(der) {
354
+ // SEQUENCE header, then two INTEGERs; left-pad each coordinate to 32 bytes.
355
+ let p = 2; // skip 0x30, length
356
+ if (der[p] !== 0x02)
357
+ throw new Error("signing: malformed DER signature");
358
+ const rLen = der[p + 1];
359
+ const r = der.subarray(p + 2, p + 2 + rLen);
360
+ p = p + 2 + rLen;
361
+ if (der[p] !== 0x02)
362
+ throw new Error("signing: malformed DER signature");
363
+ const sLen = der[p + 1];
364
+ const s = der.subarray(p + 2, p + 2 + sLen);
365
+ const out = new Uint8Array(64);
366
+ coordInto(out, 0, r);
367
+ coordInto(out, 32, s);
368
+ return out;
369
+ }
370
+ // Right-align a DER INTEGER (which may carry a leading 0x00 or be short) into a
371
+ // 32-byte coordinate slot.
372
+ function coordInto(out, at, v) {
373
+ let i = 0;
374
+ while (i < v.length - 32)
375
+ i++; // drop a leading 0x00 pad if present
376
+ const src = v.subarray(i);
377
+ out.set(src, at + (32 - src.length));
378
+ }
188
379
  //# sourceMappingURL=signing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/signing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/signing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metacensus/api",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "TypeScript for the MetaCensus API contract (/metacensus/api/v1 and /metacensus/public): generated types, a route manifest, a typed transport-agnostic client per surface, and the signing chain.",
5
5
  "type": "module",
6
6
  "engines": {