@sempdev/semp 0.5.0 → 0.5.1
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/index.d.ts +1 -1
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js +1 -1
- package/dist/crypto/index.js.map +1 -1
- package/dist/crypto/kem.d.ts +29 -0
- package/dist/crypto/kem.d.ts.map +1 -1
- package/dist/crypto/kem.js +63 -0
- package/dist/crypto/kem.js.map +1 -1
- package/dist/delivery/forwarder.d.ts +16 -0
- package/dist/delivery/forwarder.d.ts.map +1 -1
- package/dist/delivery/forwarder.js +47 -0
- package/dist/delivery/forwarder.js.map +1 -1
- package/dist/handshake/client_state.d.ts +2 -1
- package/dist/handshake/client_state.d.ts.map +1 -1
- package/dist/handshake/client_state.js +41 -8
- package/dist/handshake/client_state.js.map +1 -1
- package/dist/handshake/driver.d.ts +16 -5
- package/dist/handshake/driver.d.ts.map +1 -1
- package/dist/handshake/driver.js +61 -12
- package/dist/handshake/driver.js.map +1 -1
- package/dist/handshake/index.d.ts +1 -1
- package/dist/handshake/index.d.ts.map +1 -1
- package/dist/handshake/index.js.map +1 -1
- package/dist/handshake/server.d.ts +26 -1
- package/dist/handshake/server.d.ts.map +1 -1
- package/dist/handshake/server.js +85 -10
- package/dist/handshake/server.js.map +1 -1
- package/dist/handshake/server_state.d.ts +29 -0
- package/dist/handshake/server_state.d.ts.map +1 -1
- package/dist/handshake/server_state.js +112 -7
- package/dist/handshake/server_state.js.map +1 -1
- package/dist/session/dispatcher.d.ts +2 -0
- package/dist/session/dispatcher.d.ts.map +1 -1
- package/dist/session/dispatcher.js +6 -0
- package/dist/session/dispatcher.js.map +1 -1
- package/package.json +1 -1
|
@@ -28,9 +28,11 @@
|
|
|
28
28
|
* @module
|
|
29
29
|
*/
|
|
30
30
|
import { marshal as canonicalMarshal } from "../canonical/index.js";
|
|
31
|
-
import { deriveSessionKeysWithResumption, newHKDFSHA512, x25519Agree, x25519PublicKey, } from "../crypto/index.js";
|
|
32
|
-
import { fingerprint, publicKeyFromSeed } from "../keys/index.js";
|
|
31
|
+
import { deriveSessionKeysWithResumption, hybridEncapsulate, newHKDFSHA512, x25519Agree, x25519PublicKey, } from "../crypto/index.js";
|
|
32
|
+
import { fingerprint, publicKeyFromSeed, verify as ed25519Verify } from "../keys/index.js";
|
|
33
|
+
import { sha256 } from "@noble/hashes/sha2.js";
|
|
33
34
|
import { confirmationHash } from "./confirm.js";
|
|
35
|
+
import { IdentityPrefix, openIdentityProof, } from "./identity.js";
|
|
34
36
|
import { buildAccepted, buildRejected, buildResponse, } from "./messages.js";
|
|
35
37
|
/**
|
|
36
38
|
* Error thrown when a built-in policy check rejects the peer
|
|
@@ -66,6 +68,11 @@ export class HandshakeServer {
|
|
|
66
68
|
sessionKeys = null;
|
|
67
69
|
serverIdProof = null;
|
|
68
70
|
finalSession = null;
|
|
71
|
+
// Authenticated client identity. Populated by onConfirm once the
|
|
72
|
+
// identity_proof block has decrypted (and, when configured, the
|
|
73
|
+
// inner identity_signature has verified).
|
|
74
|
+
clientIdentityValue = null;
|
|
75
|
+
clientLongTermKeyIdValue = null;
|
|
69
76
|
constructor(cfg) {
|
|
70
77
|
if (cfg.supportedSuites.length === 0) {
|
|
71
78
|
throw new Error("handshake: server has no supported suites");
|
|
@@ -102,13 +109,30 @@ export class HandshakeServer {
|
|
|
102
109
|
const rej = buildRejectedSigned(this.sessionId, "version_unsupported", undefined, this.cfg.serverDomainSigningSeed);
|
|
103
110
|
throw new HandshakeServerRejectionError("version_unsupported", undefined, rej);
|
|
104
111
|
}
|
|
105
|
-
|
|
106
|
-
const serverEphPub = x25519PublicKey(this.serverEphPriv);
|
|
107
|
-
const serverEphKeyId = fingerprint(serverEphPub);
|
|
108
|
-
this.serverNonce = this.cfg.serverNonce ?? randomBytes(32);
|
|
112
|
+
const isPQ = negotiated === "pq-kyber768-x25519";
|
|
109
113
|
const clientEphPub = base64Decode(init.client_ephemeral_key.key);
|
|
110
114
|
const clientNonce = base64Decode(init.nonce);
|
|
111
|
-
|
|
115
|
+
this.serverNonce = this.cfg.serverNonce ?? randomBytes(32);
|
|
116
|
+
// Wire form of server_ephemeral_key depends on the suite: a
|
|
117
|
+
// 32-byte X25519 pub for baseline, a 1120-byte hybrid KEM
|
|
118
|
+
// ciphertext (kyberCt || responderX25519Pub) for PQ. The
|
|
119
|
+
// server holds no ephemeral private key on the PQ path
|
|
120
|
+
// because Encapsulate produces the shared secret directly.
|
|
121
|
+
let serverEphPub;
|
|
122
|
+
let shared;
|
|
123
|
+
if (isPQ) {
|
|
124
|
+
const enc = hybridEncapsulate(clientEphPub);
|
|
125
|
+
serverEphPub = enc.ciphertext;
|
|
126
|
+
shared = enc.sharedSecret;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.serverEphPriv = this.cfg.serverEphemeralPriv ?? randomBytes(32);
|
|
130
|
+
serverEphPub = x25519PublicKey(this.serverEphPriv);
|
|
131
|
+
shared = x25519Agree(this.serverEphPriv, clientEphPub);
|
|
132
|
+
}
|
|
133
|
+
const serverEphKeyId = isPQ
|
|
134
|
+
? hexSha256(serverEphPub)
|
|
135
|
+
: fingerprint(serverEphPub);
|
|
112
136
|
const kdf = newHKDFSHA512();
|
|
113
137
|
this.sessionKeys = deriveSessionKeysWithResumption(kdf, shared, clientNonce, this.serverNonce);
|
|
114
138
|
this.serverIdProof = {
|
|
@@ -168,10 +192,53 @@ export class HandshakeServer {
|
|
|
168
192
|
const rej = buildRejectedSigned(this.sessionId, "handshake_invalid", undefined, this.cfg.serverDomainSigningSeed);
|
|
169
193
|
throw new HandshakeServerRejectionError("handshake_invalid", "confirmation hash mismatch", rej);
|
|
170
194
|
}
|
|
195
|
+
// Decrypt the identity_proof block (if non-empty) and, when
|
|
196
|
+
// `lookupClientIdentityKey` is configured, verify the inner
|
|
197
|
+
// identity_signature over `SEMP-IDENTITY: || session_id ||
|
|
198
|
+
// confirmation_hash` against the looked-up public key. Reject
|
|
199
|
+
// with `auth_failed` on AEAD open failure, on lookup failure,
|
|
200
|
+
// or on signature failure.
|
|
201
|
+
let identityBlock;
|
|
202
|
+
if (confirm.identity_proof !== "") {
|
|
203
|
+
try {
|
|
204
|
+
identityBlock = openIdentityProof({
|
|
205
|
+
identityProofB64: confirm.identity_proof,
|
|
206
|
+
encC2S: this.sessionKeys.encC2S,
|
|
207
|
+
sessionId: this.sessionId,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
212
|
+
const rej = buildRejectedSigned(this.sessionId, "auth_failed", reason, this.cfg.serverDomainSigningSeed);
|
|
213
|
+
throw new HandshakeServerRejectionError("auth_failed", reason, rej);
|
|
214
|
+
}
|
|
215
|
+
if (this.cfg.lookupClientIdentityKey !== undefined) {
|
|
216
|
+
let clientPub;
|
|
217
|
+
try {
|
|
218
|
+
clientPub = this.cfg.lookupClientIdentityKey(identityBlock.client_identity, identityBlock.client_long_term_key_id);
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
222
|
+
const rej = buildRejectedSigned(this.sessionId, "auth_failed", reason, this.cfg.serverDomainSigningSeed);
|
|
223
|
+
throw new HandshakeServerRejectionError("auth_failed", reason, rej);
|
|
224
|
+
}
|
|
225
|
+
const sessionIdBytes = new TextEncoder().encode(this.sessionId);
|
|
226
|
+
const signed = concat(new TextEncoder().encode(IdentityPrefix), concat(sessionIdBytes, wantHash));
|
|
227
|
+
const sig = base64Decode(identityBlock.identity_signature);
|
|
228
|
+
if (!ed25519Verify(clientPub, sig, signed)) {
|
|
229
|
+
const reason = "identity_signature did not verify";
|
|
230
|
+
const rej = buildRejectedSigned(this.sessionId, "auth_failed", reason, this.cfg.serverDomainSigningSeed);
|
|
231
|
+
throw new HandshakeServerRejectionError("auth_failed", reason, rej);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
this.clientIdentityValue = identityBlock.client_identity;
|
|
235
|
+
this.clientLongTermKeyIdValue = identityBlock.client_long_term_key_id;
|
|
236
|
+
}
|
|
171
237
|
if (this.cfg.verifyIdentityProof !== undefined) {
|
|
172
238
|
const verdict = this.cfg.verifyIdentityProof({
|
|
173
239
|
identityProofB64: confirm.identity_proof,
|
|
174
240
|
sessionKeys: this.sessionKeys,
|
|
241
|
+
...(identityBlock !== undefined ? { block: identityBlock } : {}),
|
|
175
242
|
});
|
|
176
243
|
if (!verdict.ok) {
|
|
177
244
|
const code = verdict.reasonCode ?? "auth_failed";
|
|
@@ -198,6 +265,8 @@ export class HandshakeServer {
|
|
|
198
265
|
serverIdentityProofKeyId: this.serverIdProof.key_id,
|
|
199
266
|
serverIdentityProofSignature: this.serverIdProof.signature,
|
|
200
267
|
extensions: this.cfg.acceptedExtensions ?? {},
|
|
268
|
+
clientIdentity: this.clientIdentityValue ?? "",
|
|
269
|
+
clientLongTermKeyId: this.clientLongTermKeyIdValue ?? "",
|
|
201
270
|
...(ticket !== undefined ? { resumptionTicket: ticket } : {}),
|
|
202
271
|
};
|
|
203
272
|
if (this.serverEphPriv !== null) {
|
|
@@ -213,6 +282,24 @@ export class HandshakeServer {
|
|
|
213
282
|
}
|
|
214
283
|
return this.finalSession;
|
|
215
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Authenticated client identity (e.g. `"alice@example.com"`)
|
|
287
|
+
* extracted from the decrypted identity_proof block. Returns
|
|
288
|
+
* the empty string before {@link onConfirm} completes
|
|
289
|
+
* successfully or when the client sent an empty identity_proof.
|
|
290
|
+
*/
|
|
291
|
+
clientIdentity() {
|
|
292
|
+
return this.clientIdentityValue ?? "";
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Fingerprint of the client's long-term identity key as
|
|
296
|
+
* declared in the decrypted identity_proof block. Returns the
|
|
297
|
+
* empty string before {@link onConfirm} completes successfully
|
|
298
|
+
* or when the client sent an empty identity_proof.
|
|
299
|
+
*/
|
|
300
|
+
clientLongTermKeyId() {
|
|
301
|
+
return this.clientLongTermKeyIdValue ?? "";
|
|
302
|
+
}
|
|
216
303
|
/** Wipe in-memory secret state. Idempotent. */
|
|
217
304
|
erase() {
|
|
218
305
|
if (this.serverEphPriv !== null) {
|
|
@@ -254,6 +341,24 @@ function randomBytes(n) {
|
|
|
254
341
|
globalThis.crypto.getRandomValues(out);
|
|
255
342
|
return out;
|
|
256
343
|
}
|
|
344
|
+
function concat(a, b) {
|
|
345
|
+
const out = new Uint8Array(a.length + b.length);
|
|
346
|
+
out.set(a, 0);
|
|
347
|
+
out.set(b, a.length);
|
|
348
|
+
return out;
|
|
349
|
+
}
|
|
350
|
+
function hexSha256(bytes) {
|
|
351
|
+
// Hybrid ephemeral pubs / KEM ciphertexts are larger than the
|
|
352
|
+
// 32-byte input `keys.fingerprint` accepts, so this opaque
|
|
353
|
+
// SHA-256-of-the-wire-bytes is what we surface as the
|
|
354
|
+
// ephemeral key_id field for the PQ suite.
|
|
355
|
+
const sum = sha256(bytes);
|
|
356
|
+
let s = "";
|
|
357
|
+
for (let i = 0; i < sum.length; i++) {
|
|
358
|
+
s += (sum[i] ?? 0).toString(16).padStart(2, "0");
|
|
359
|
+
}
|
|
360
|
+
return s;
|
|
361
|
+
}
|
|
257
362
|
function base64Encode(b) {
|
|
258
363
|
if (typeof Buffer !== "undefined") {
|
|
259
364
|
return Buffer.from(b).toString("base64");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server_state.js","sourceRoot":"","sources":["../../src/handshake/server_state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server_state.js","sourceRoot":"","sources":["../../src/handshake/server_state.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,8 @@ export interface DispatchHandlers {
|
|
|
28
28
|
onEnvelope?: (frame: Uint8Array, parsed: unknown) => Promise<void> | void;
|
|
29
29
|
/** A SEMP_KEYS request or response. */
|
|
30
30
|
onKeys?: (frame: Uint8Array, parsed: unknown) => Promise<void> | void;
|
|
31
|
+
/** A SEMP_FETCH inbox-pull frame. */
|
|
32
|
+
onFetch?: (frame: Uint8Array, parsed: unknown) => Promise<void> | void;
|
|
31
33
|
/** A SEMP_DISCOVERY response delivered over an in-session channel. */
|
|
32
34
|
onDiscovery?: (frame: Uint8Array, parsed: unknown) => Promise<void> | void;
|
|
33
35
|
/** A SEMP_DELIVERY_ACK or SEMP_DELIVERY_RECEIPT. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/session/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvE,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1E,uCAAuC;IACvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtE,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE3E,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1E;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/session/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,2DAA2D;AAC3D,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvE,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1E,uCAAuC;IACvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtE,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvE,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE3E,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE1E;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtE;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
@@ -74,6 +74,12 @@ async function dispatchOne(type, frame, parsed, handlers) {
|
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
break;
|
|
77
|
+
case "SEMP_FETCH":
|
|
78
|
+
if (handlers.onFetch !== undefined) {
|
|
79
|
+
await handlers.onFetch(frame, parsed);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
break;
|
|
77
83
|
case "SEMP_DISCOVERY":
|
|
78
84
|
if (handlers.onDiscovery !== undefined) {
|
|
79
85
|
await handlers.onDiscovery(frame, parsed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/session/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/session/dispatcher.ts"],"names":[],"mappings":"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"}
|