@sempdev/semp 0.5.2 → 0.5.6
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/brief/address.d.ts +1 -1
- package/dist/brief/address.js +1 -1
- package/dist/brief/brief.d.ts +1 -1
- package/dist/brief/brief.js +1 -1
- package/dist/canonical/marshal.d.ts +2 -2
- package/dist/canonical/marshal.js +2 -2
- package/dist/closure/driver.d.ts +2 -2
- package/dist/closure/driver.js +1 -1
- package/dist/crypto/aead.d.ts +2 -2
- package/dist/crypto/aead.js +2 -2
- package/dist/crypto/kdf.d.ts +1 -1
- package/dist/crypto/kdf.js +1 -1
- package/dist/crypto/mac.d.ts +1 -1
- package/dist/crypto/mac.js +1 -1
- package/dist/delivery/ack.d.ts +5 -5
- package/dist/delivery/ack.js +6 -6
- package/dist/delivery/blocklist.d.ts +1 -1
- package/dist/delivery/blocklist.js +2 -2
- package/dist/delivery/device_sync.d.ts +26 -0
- package/dist/delivery/device_sync.d.ts.map +1 -0
- package/dist/delivery/device_sync.js +18 -0
- package/dist/delivery/device_sync.js.map +1 -0
- package/dist/delivery/disposition.d.ts +1 -1
- package/dist/delivery/fetch.d.ts +1 -1
- package/dist/delivery/fetch.js +1 -1
- package/dist/delivery/forwarder.d.ts +9 -1
- package/dist/delivery/forwarder.d.ts.map +1 -1
- package/dist/delivery/forwarder.js +1 -1
- package/dist/delivery/forwarder.js.map +1 -1
- package/dist/delivery/inbox.d.ts +2 -2
- package/dist/delivery/inbox.js +2 -2
- package/dist/delivery/index.d.ts +4 -0
- package/dist/delivery/index.d.ts.map +1 -1
- package/dist/delivery/index.js +4 -0
- package/dist/delivery/index.js.map +1 -1
- package/dist/delivery/persistent_silent.d.ts +70 -0
- package/dist/delivery/persistent_silent.d.ts.map +1 -0
- package/dist/delivery/persistent_silent.js +117 -0
- package/dist/delivery/persistent_silent.js.map +1 -0
- package/dist/delivery/pipeline.d.ts +4 -4
- package/dist/delivery/pipeline.d.ts.map +1 -1
- package/dist/delivery/pipeline.js +10 -3
- package/dist/delivery/pipeline.js.map +1 -1
- package/dist/delivery/policy_state.d.ts +2 -2
- package/dist/delivery/policy_state.js +4 -4
- package/dist/delivery/receipt.d.ts +3 -3
- package/dist/delivery/receipt.js +3 -3
- package/dist/delivery/receipt_store.d.ts +1 -1
- package/dist/delivery/receipt_store.js +1 -1
- package/dist/delivery/retry.d.ts +2 -2
- package/dist/delivery/retry.js +2 -2
- package/dist/delivery/scheduler.d.ts +1 -1
- package/dist/delivery/scheduler.js +1 -1
- package/dist/delivery/stage_partition.d.ts +1 -1
- package/dist/delivery/stage_partition.js +1 -1
- package/dist/delivery/staged_runner.d.ts +1 -1
- package/dist/delivery/staged_runner.js +2 -2
- package/dist/delivery/status_message.d.ts +75 -0
- package/dist/delivery/status_message.d.ts.map +1 -0
- package/dist/delivery/status_message.js +109 -0
- package/dist/delivery/status_message.js.map +1 -0
- package/dist/delivery/upgrade_signal.d.ts +48 -0
- package/dist/delivery/upgrade_signal.d.ts.map +1 -0
- package/dist/delivery/upgrade_signal.js +48 -0
- package/dist/delivery/upgrade_signal.js.map +1 -0
- package/dist/discovery/configuration.d.ts +20 -1
- package/dist/discovery/configuration.d.ts.map +1 -1
- package/dist/discovery/configuration.js.map +1 -1
- package/dist/discovery/dns.d.ts +27 -1
- package/dist/discovery/dns.d.ts.map +1 -1
- package/dist/discovery/dns.js +37 -0
- package/dist/discovery/dns.js.map +1 -1
- package/dist/discovery/index.d.ts +2 -2
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/partition.d.ts +1 -1
- package/dist/discovery/partition.js +1 -1
- package/dist/discovery/resolver.d.ts +5 -5
- package/dist/discovery/resolver.js +5 -5
- package/dist/discovery/txt.d.ts +1 -1
- package/dist/discovery/txt.js +1 -1
- package/dist/enclosure/forwarding.d.ts +1 -1
- package/dist/enclosure/forwarding.js +1 -1
- package/dist/envelope/buckets.d.ts +2 -2
- package/dist/envelope/buckets.js +2 -2
- package/dist/envelope/compose.d.ts +2 -2
- package/dist/envelope/compose.js +4 -4
- package/dist/envelope/encode.d.ts +2 -2
- package/dist/envelope/encode.js +3 -3
- package/dist/envelope/open_verified.d.ts +1 -1
- package/dist/envelope/open_verified.js +1 -1
- package/dist/envelope/padding.d.ts +2 -2
- package/dist/envelope/padding.js +3 -3
- package/dist/envelope/verify.d.ts +1 -1
- package/dist/envelope/verify.js +1 -1
- package/dist/extensions/index.d.ts +1 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +1 -0
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/limits.d.ts +2 -2
- package/dist/extensions/limits.js +2 -2
- package/dist/extensions/validation_failure.d.ts +48 -0
- package/dist/extensions/validation_failure.d.ts.map +1 -0
- package/dist/extensions/validation_failure.js +25 -0
- package/dist/extensions/validation_failure.js.map +1 -0
- package/dist/handshake/abort.d.ts +1 -1
- package/dist/handshake/abort.js +1 -1
- package/dist/handshake/client_state.d.ts +5 -5
- package/dist/handshake/client_state.js +5 -5
- package/dist/handshake/confirm.d.ts +2 -2
- package/dist/handshake/confirm.js +2 -2
- package/dist/handshake/driver.d.ts +2 -2
- package/dist/handshake/driver.js +1 -1
- package/dist/handshake/federation.d.ts +27 -9
- package/dist/handshake/federation.d.ts.map +1 -1
- package/dist/handshake/federation.js +69 -17
- package/dist/handshake/federation.js.map +1 -1
- package/dist/handshake/first_contact.d.ts +1 -1
- package/dist/handshake/first_contact.js +1 -1
- package/dist/handshake/identity.d.ts +1 -1
- package/dist/handshake/identity.js +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/pow.js +1 -1
- package/dist/handshake/server_state.d.ts +3 -3
- package/dist/handshake/server_state.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/keys/compromise.d.ts +2 -2
- package/dist/keys/compromise.js +1 -1
- package/dist/keys/device_certificate.d.ts +3 -3
- package/dist/keys/device_certificate.js +4 -4
- package/dist/keys/key_revocation.d.ts +2 -2
- package/dist/keys/key_revocation.js +1 -1
- package/dist/keys/request.d.ts +17 -3
- package/dist/keys/request.d.ts.map +1 -1
- package/dist/keys/request.js.map +1 -1
- package/dist/keys/sign.d.ts +7 -2
- package/dist/keys/sign.d.ts.map +1 -1
- package/dist/keys/sign.js +10 -3
- package/dist/keys/sign.js.map +1 -1
- package/dist/keys/signed.d.ts +3 -3
- package/dist/keys/signed.js +3 -3
- package/dist/keys/store.js +1 -1
- package/dist/largeattachment/crypto.d.ts +1 -1
- package/dist/largeattachment/crypto.js +2 -2
- package/dist/largeattachment/upload.d.ts +3 -3
- package/dist/largeattachment/upload.js +1 -1
- package/dist/migration/index.d.ts +1 -1
- package/dist/migration/index.d.ts.map +1 -1
- package/dist/migration/index.js +1 -1
- package/dist/migration/index.js.map +1 -1
- package/dist/migration/lockout.d.ts +2 -2
- package/dist/migration/lockout.js +2 -2
- package/dist/migration/migration.d.ts +6 -4
- package/dist/migration/migration.d.ts.map +1 -1
- package/dist/migration/migration.js +3 -3
- package/dist/migration/migration.js.map +1 -1
- package/dist/migration/notice.d.ts +31 -19
- package/dist/migration/notice.d.ts.map +1 -1
- package/dist/migration/notice.js +37 -71
- package/dist/migration/notice.js.map +1 -1
- package/dist/migration/orchestrate.d.ts +10 -10
- package/dist/migration/orchestrate.d.ts.map +1 -1
- package/dist/migration/orchestrate.js +23 -23
- package/dist/migration/orchestrate.js.map +1 -1
- package/dist/migration/sign.js +9 -9
- package/dist/migration/sign.js.map +1 -1
- package/dist/migration/types.d.ts +35 -29
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/migration/types.js +5 -7
- package/dist/migration/types.js.map +1 -1
- package/dist/recovery/bundle_store.js +1 -1
- package/dist/recovery/sign.js +3 -3
- package/dist/recovery/types.d.ts +3 -3
- package/dist/reputation/abuse_report.d.ts +3 -3
- package/dist/reputation/abuse_report.js +2 -2
- package/dist/reputation/eligibility.d.ts +44 -0
- package/dist/reputation/eligibility.d.ts.map +1 -0
- package/dist/reputation/eligibility.js +58 -0
- package/dist/reputation/eligibility.js.map +1 -0
- package/dist/reputation/evidence.d.ts +47 -0
- package/dist/reputation/evidence.d.ts.map +1 -0
- package/dist/reputation/evidence.js +117 -0
- package/dist/reputation/evidence.js.map +1 -0
- package/dist/reputation/gossip_fetch.d.ts +2 -2
- package/dist/reputation/gossip_fetch.js +1 -1
- package/dist/reputation/index.d.ts +4 -1
- package/dist/reputation/index.d.ts.map +1 -1
- package/dist/reputation/index.js +4 -1
- package/dist/reputation/index.js.map +1 -1
- package/dist/reputation/pow.d.ts +1 -1
- package/dist/reputation/pow.js +1 -1
- package/dist/reputation/references.d.ts +51 -0
- package/dist/reputation/references.d.ts.map +1 -0
- package/dist/reputation/references.js +95 -0
- package/dist/reputation/references.js.map +1 -0
- package/dist/reputation/sign.d.ts +1 -1
- package/dist/reputation/sign.js +2 -2
- package/dist/reputation/types.d.ts +46 -2
- package/dist/reputation/types.d.ts.map +1 -1
- package/dist/reputation/types.js +14 -0
- package/dist/reputation/types.js.map +1 -1
- package/dist/reputation/whois.d.ts +1 -1
- package/dist/reputation/whois.js +1 -1
- package/dist/seal/wrap.d.ts +2 -2
- package/dist/seal/wrap.js +4 -4
- package/dist/session/dispatcher.d.ts +3 -3
- package/dist/session/dispatcher.js +1 -1
- package/dist/session/rekey_seal.d.ts +3 -3
- package/dist/session/rekey_seal.js +3 -3
- package/dist/session/session.d.ts +3 -3
- package/dist/session/session.js +3 -3
- package/dist/transparency/log.d.ts +1 -1
- package/dist/transparency/log.js +2 -2
- package/dist/transparency/types.d.ts +2 -2
- package/dist/transparency/types.js +1 -1
- package/dist/transport/h2.d.ts +33 -12
- package/dist/transport/h2.d.ts.map +1 -1
- package/dist/transport/h2.js +40 -13
- package/dist/transport/h2.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/memory.js +1 -1
- package/dist/transport/ws.d.ts +1 -1
- package/dist/transport/ws.js +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Federation handshake (server ↔ server) per HANDSHAKE.md §5.
|
|
3
3
|
*
|
|
4
4
|
* Two servers establish a federation session by exchanging four
|
|
5
|
-
* messages
|
|
5
|
+
* messages - symmetric in shape to the client handshake but with
|
|
6
6
|
* domain identity in plaintext on both sides plus a domain-proof
|
|
7
7
|
* verification step:
|
|
8
8
|
*
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* @module
|
|
23
23
|
*/
|
|
24
24
|
import { marshal as canonicalMarshal } from "../canonical/index.js";
|
|
25
|
-
import { deriveSessionKeysWithResumption, newHKDFSHA512, x25519Agree, x25519PublicKey, } from "../crypto/index.js";
|
|
25
|
+
import { HybridPublicKeySize, deriveSessionKeysWithResumption, hybridDecapsulate, hybridEncapsulate, hybridGenerateKeyPair, newHKDFSHA512, x25519Agree, x25519PublicKey, } from "../crypto/index.js";
|
|
26
26
|
import { fingerprint, publicKeyFromSeed, sign as ed25519Sign, verify as ed25519Verify, } from "../keys/index.js";
|
|
27
27
|
import { confirmationHash } from "./confirm.js";
|
|
28
28
|
import { HandshakeRejectedError } from "./driver.js";
|
|
@@ -32,7 +32,7 @@ import { HandshakePrefix, HandshakeVersion, } from "./messages.js";
|
|
|
32
32
|
export const FederationMessageType = "SEMP_HANDSHAKE";
|
|
33
33
|
/**
|
|
34
34
|
* Permissive verifier that accepts every proof. Tests / single-
|
|
35
|
-
* process deployments only
|
|
35
|
+
* process deployments only - production MUST NOT use it.
|
|
36
36
|
*/
|
|
37
37
|
export class TrustingDomainVerifier {
|
|
38
38
|
async verify() {
|
|
@@ -42,7 +42,7 @@ export class TrustingDomainVerifier {
|
|
|
42
42
|
/**
|
|
43
43
|
* Decide which of two simultaneously-initiated federation handshakes
|
|
44
44
|
* proceeds per SESSION.md §2.5.2. Both peers agree on the winner
|
|
45
|
-
* without external coordination
|
|
45
|
+
* without external coordination - lexicographic compare provides
|
|
46
46
|
* exactly this property.
|
|
47
47
|
*
|
|
48
48
|
* Returns the winning `session_id` (the one that proceeds).
|
|
@@ -54,7 +54,7 @@ export function resolveCollision(idA, idB) {
|
|
|
54
54
|
export const acceptAllPolicies = () => null;
|
|
55
55
|
/**
|
|
56
56
|
* Stateful federation initiator. Mirror of `semp-go/handshake.Initiator`.
|
|
57
|
-
* Single-shot
|
|
57
|
+
* Single-shot - discard after success or error.
|
|
58
58
|
*/
|
|
59
59
|
export class FederationInitiator {
|
|
60
60
|
cfg;
|
|
@@ -71,8 +71,9 @@ export class FederationInitiator {
|
|
|
71
71
|
resumptionSecret = null;
|
|
72
72
|
resumeNonce = null;
|
|
73
73
|
constructor(cfg) {
|
|
74
|
-
if (cfg.suite !== "x25519-chacha20-poly1305"
|
|
75
|
-
|
|
74
|
+
if (cfg.suite !== "x25519-chacha20-poly1305" &&
|
|
75
|
+
cfg.suite !== "pq-kyber768-x25519") {
|
|
76
|
+
throw new Error(`handshake: federation initiator unknown suite ${JSON.stringify(cfg.suite)}`);
|
|
76
77
|
}
|
|
77
78
|
if (cfg.localDomain === "") {
|
|
78
79
|
throw new Error("handshake: federation initiator empty localDomain");
|
|
@@ -101,10 +102,26 @@ export class FederationInitiator {
|
|
|
101
102
|
if (this.initCanonical !== null) {
|
|
102
103
|
throw new Error("handshake: federation initiator init already called");
|
|
103
104
|
}
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
// Suite branch: baseline generates a 32-byte X25519 ephemeral
|
|
106
|
+
// pub; PQ generates a 1216-byte hybrid (kyberPub || x25519Pub)
|
|
107
|
+
// ephemeral pub. The responder branches symmetrically: baseline
|
|
108
|
+
// ECDH against the responder's X25519 eph pub, PQ hybrid
|
|
109
|
+
// decapsulate against the responder's KEM ciphertext.
|
|
110
|
+
const isPQ = this.cfg.suite === "pq-kyber768-x25519";
|
|
111
|
+
if (isPQ) {
|
|
112
|
+
if (this.cfg.initiatorEphemeralPriv !== undefined) {
|
|
113
|
+
throw new Error("handshake: federation initiator PQ ephemeral pinning not supported");
|
|
114
|
+
}
|
|
115
|
+
const kp = hybridGenerateKeyPair();
|
|
116
|
+
this.ephPriv = kp.secretKey;
|
|
117
|
+
this.ephPub = kp.publicKey;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
if (this.ephPriv === null) {
|
|
121
|
+
this.ephPriv = randomBytes(32);
|
|
122
|
+
}
|
|
123
|
+
this.ephPub = x25519PublicKey(this.ephPriv);
|
|
106
124
|
}
|
|
107
|
-
this.ephPub = x25519PublicKey(this.ephPriv);
|
|
108
125
|
if (this.nonce === null) {
|
|
109
126
|
this.nonce = randomBytes(32);
|
|
110
127
|
}
|
|
@@ -178,7 +195,21 @@ export class FederationInitiator {
|
|
|
178
195
|
if (!ed25519Verify(peerDomainPub, innerSig, innerInput)) {
|
|
179
196
|
throw new Error("handshake: peer inner identity_signature did not verify");
|
|
180
197
|
}
|
|
181
|
-
|
|
198
|
+
// Suite branch: for baseline serverEphPub is a 32-byte X25519
|
|
199
|
+
// pub and we run ECDH; for PQ it's a 1120-byte hybrid KEM
|
|
200
|
+
// ciphertext (kyberCt || responderX25519Pub) and we hybrid-
|
|
201
|
+
// decapsulate against the local hybrid ephemeral private key.
|
|
202
|
+
const isPQ = this.cfg.suite === "pq-kyber768-x25519";
|
|
203
|
+
let shared;
|
|
204
|
+
if (isPQ) {
|
|
205
|
+
if (this.ephPub === null || this.ephPub.length !== HybridPublicKeySize) {
|
|
206
|
+
throw new Error(`handshake: federation PQ ephemeral pub size mismatch (have ${this.ephPub?.length ?? 0}, want ${HybridPublicKeySize})`);
|
|
207
|
+
}
|
|
208
|
+
shared = hybridDecapsulate(serverEphPub, this.ephPriv);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
shared = x25519Agree(this.ephPriv, serverEphPub);
|
|
212
|
+
}
|
|
182
213
|
const kdf = newHKDFSHA512();
|
|
183
214
|
this.sessionKeys = deriveSessionKeysWithResumption(kdf, shared, this.nonce, serverNonce);
|
|
184
215
|
// Erase ephemeral private once shared secret is in hand.
|
|
@@ -374,7 +405,7 @@ export class FederationInitiator {
|
|
|
374
405
|
}
|
|
375
406
|
/**
|
|
376
407
|
* Stateful federation responder. Mirror of `semp-go/handshake.Responder`.
|
|
377
|
-
* Single-shot
|
|
408
|
+
* Single-shot - discard after success or error.
|
|
378
409
|
*/
|
|
379
410
|
export class FederationResponder {
|
|
380
411
|
cfg;
|
|
@@ -392,8 +423,9 @@ export class FederationResponder {
|
|
|
392
423
|
sessionKeys = null;
|
|
393
424
|
finalSession = null;
|
|
394
425
|
constructor(cfg) {
|
|
395
|
-
if (cfg.suite !== "x25519-chacha20-poly1305"
|
|
396
|
-
|
|
426
|
+
if (cfg.suite !== "x25519-chacha20-poly1305" &&
|
|
427
|
+
cfg.suite !== "pq-kyber768-x25519") {
|
|
428
|
+
throw new Error(`handshake: federation responder unknown suite ${JSON.stringify(cfg.suite)}`);
|
|
397
429
|
}
|
|
398
430
|
if (cfg.localDomain === "") {
|
|
399
431
|
throw new Error("handshake: federation responder empty localDomain");
|
|
@@ -463,12 +495,32 @@ export class FederationResponder {
|
|
|
463
495
|
if (negotiated !== this.cfg.suite) {
|
|
464
496
|
throw new Error(`handshake: federation negotiated suite ${negotiated} != responder suite ${this.cfg.suite}`);
|
|
465
497
|
}
|
|
466
|
-
|
|
467
|
-
|
|
498
|
+
// Suite branch: baseline derives a fresh X25519 keypair and runs
|
|
499
|
+
// ECDH against the initiator's 32-byte X25519 ephemeral pub. PQ
|
|
500
|
+
// hybrid-encapsulates against the initiator's 1216-byte hybrid
|
|
501
|
+
// pub, producing a 1120-byte KEM ciphertext that becomes the
|
|
502
|
+
// wire `server_ephemeral_key.key` and the shared secret. The
|
|
503
|
+
// responder holds no ephemeral private on the PQ path because
|
|
504
|
+
// Encapsulate produces the shared secret directly.
|
|
505
|
+
const isPQ = this.cfg.suite === "pq-kyber768-x25519";
|
|
506
|
+
let respEphPub;
|
|
507
|
+
let shared;
|
|
508
|
+
if (isPQ) {
|
|
509
|
+
if (this.cfg.responderEphemeralPriv !== undefined) {
|
|
510
|
+
throw new Error("handshake: federation responder PQ ephemeral pinning not supported");
|
|
511
|
+
}
|
|
512
|
+
const enc = hybridEncapsulate(clientEphPub);
|
|
513
|
+
respEphPub = enc.ciphertext;
|
|
514
|
+
shared = enc.sharedSecret;
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
this.respEphPriv = this.cfg.responderEphemeralPriv ?? randomBytes(32);
|
|
518
|
+
respEphPub = x25519PublicKey(this.respEphPriv);
|
|
519
|
+
shared = x25519Agree(this.respEphPriv, clientEphPub);
|
|
520
|
+
}
|
|
468
521
|
const respEphKeyId = fingerprint(respEphPub);
|
|
469
522
|
this.serverNonce = this.cfg.responderNonce ?? randomBytes(32);
|
|
470
523
|
this.sessionId = this.cfg.generateSessionId();
|
|
471
|
-
const shared = x25519Agree(this.respEphPriv, clientEphPub);
|
|
472
524
|
const kdf = newHKDFSHA512();
|
|
473
525
|
this.sessionKeys = deriveSessionKeysWithResumption(kdf, shared, clientNonce, this.serverNonce);
|
|
474
526
|
// Inner identity proof: sig over eph_pub || server_nonce || client_nonce.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/handshake/federation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/handshake/federation.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ export declare function computeFirstContactPrefix(senderDomain: string, recipien
|
|
|
48
48
|
* trailing 32 bytes of the prefix are SHA-256 of the canonical
|
|
49
49
|
* binding input.
|
|
50
50
|
*
|
|
51
|
-
* Does NOT verify the PoW solution itself
|
|
51
|
+
* Does NOT verify the PoW solution itself - pair with
|
|
52
52
|
* `verifyChallengeSolution` from {@link "./pow"} for a full check.
|
|
53
53
|
*/
|
|
54
54
|
export declare function verifyFirstContactBinding(prefix: Uint8Array, senderDomain: string, recipientAddress: string, postmarkId: string): boolean;
|
|
@@ -62,7 +62,7 @@ export function computeFirstContactPrefix(senderDomain, recipientAddress, postma
|
|
|
62
62
|
* trailing 32 bytes of the prefix are SHA-256 of the canonical
|
|
63
63
|
* binding input.
|
|
64
64
|
*
|
|
65
|
-
* Does NOT verify the PoW solution itself
|
|
65
|
+
* Does NOT verify the PoW solution itself - pair with
|
|
66
66
|
* `verifyChallengeSolution` from {@link "./pow"} for a full check.
|
|
67
67
|
*/
|
|
68
68
|
export function verifyFirstContactBinding(prefix, senderDomain, recipientAddress, postmarkId) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Identity-proof composition per HANDSHAKE.md §2.5.
|
|
3
3
|
*
|
|
4
4
|
* The client's CONFIRM message carries an encrypted identity-proof
|
|
5
|
-
* block
|
|
5
|
+
* block - a self-contained JSON object proving control of the
|
|
6
6
|
* client's long-term identity key, encrypted under the freshly
|
|
7
7
|
* derived `K_enc_c2s` so a passive observer sees only opaque
|
|
8
8
|
* ciphertext.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Identity-proof composition per HANDSHAKE.md §2.5.
|
|
3
3
|
*
|
|
4
4
|
* The client's CONFIRM message carries an encrypted identity-proof
|
|
5
|
-
* block
|
|
5
|
+
* block - a self-contained JSON object proving control of the
|
|
6
6
|
* client's long-term identity key, encrypted under the freshly
|
|
7
7
|
* derived `K_enc_c2s` so a passive observer sees only opaque
|
|
8
8
|
* ciphertext.
|
|
@@ -14,7 +14,7 @@ export { type ClientConfig, type ClientSession, type HandshakeSuite, HandshakeRe
|
|
|
14
14
|
export { type HandshakeClientConfig, type HandshakeClientSession, HandshakeClient, } from "./client_state.js";
|
|
15
15
|
export { type HandshakeServerConfig, type HandshakeServerSession, HandshakeServer, HandshakeServerRejectionError, } from "./server_state.js";
|
|
16
16
|
export { runClientResume, runClientResumeOrFull, } from "./resume_driver.js";
|
|
17
|
-
export { type DomainProof, type DomainProofMethod, type DomainVerificationResult, type DomainVerifier, type FederationAcceptance, type FederationAccepted, type FederationConfirm, type FederationEphemeralKey, type FederationInitiatorConfig, type FederationInitiatorSession, type FederationPolicy, type FederationProof, type FederationResponderConfig, type FederationResponderSession, type FederationResponse, type FederationResume, type PolicyAcceptor, type ServerInit, FederationInitiator, FederationMessageType, FederationResponder, TrustingDomainVerifier, acceptAllPolicies, resolveCollision, } from "./federation.js";
|
|
17
|
+
export { type DomainProof, type DomainProofMethod, type DomainVerificationResult, type DomainVerifier, type FederationAcceptance, type FederationAccepted, type FederationConfirm, type FederationEphemeralKey, type FederationInitiatorConfig, type FederationInitiatorSession, type FederationPolicy, type FederationProof, type FederationResponderConfig, type FederationResponderSession, type FederationResponse, type FederationResume, type FederationSuite, type PolicyAcceptor, type ServerInit, FederationInitiator, FederationMessageType, FederationResponder, TrustingDomainVerifier, acceptAllPolicies, resolveCollision, } from "./federation.js";
|
|
18
18
|
export { type IdentityProofVerdict, type ServerConfig, runServer, } from "./server.js";
|
|
19
19
|
export { type ComposeIdentityProofInput, type IdentityProofBlock, type OpenIdentityProofInput, IdentityPrefix, composeIdentityProof, openIdentityProof, } from "./identity.js";
|
|
20
20
|
export { type AcceptedMessage, type BuildAcceptedInput, type BuildConfirmInput, type BuildInitInput, type BuildRejectedInput, type BuildResponseInput, type Capabilities, type ConfirmMessage, type InitMessage, type KeyRef, type Negotiated, type RejectedMessage, type ResponseMessage, type ResumptionTicket, type ServerIdentityProof, HandshakePrefix, HandshakeVersion, buildAccepted, buildConfirm, buildInit, buildRejected, buildResponse, } from "./messages.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handshake/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,sBAAsB,EACtB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,eAAe,EACf,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handshake/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,sBAAsB,EACtB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,eAAe,EACf,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handshake/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,sBAAsB,EACtB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,eAAe,EACf,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handshake/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,sBAAsB,EACtB,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAGL,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,eAAe,EACf,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAoBL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAgBL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC"}
|
package/dist/handshake/pow.js
CHANGED
|
@@ -45,7 +45,7 @@ export function verifyChallengeSolution(prefix, challengeId, nonceB64, claimedHa
|
|
|
45
45
|
if (nonceB64 === "") {
|
|
46
46
|
return new Error("handshake: empty PoW nonce");
|
|
47
47
|
}
|
|
48
|
-
// Nonce must be valid base64
|
|
48
|
+
// Nonce must be valid base64 - but we accept its bytes as-is in
|
|
49
49
|
// the preimage (the spec hashes the base64 string, not the
|
|
50
50
|
// decoded bytes).
|
|
51
51
|
try {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Mirror of `semp-go/handshake.Server`: a state machine the caller
|
|
5
5
|
* drives over a transport. The class never performs network I/O
|
|
6
|
-
* directly
|
|
6
|
+
* directly - the caller moves bytes between this object and the
|
|
7
7
|
* underlying transport.
|
|
8
8
|
*
|
|
9
9
|
* Lifecycle:
|
|
@@ -77,7 +77,7 @@ export declare class HandshakeServerRejectionError extends Error {
|
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
79
|
* Stateful handshake server. One instance handles exactly one
|
|
80
|
-
* handshake
|
|
80
|
+
* handshake - discard after success or error. Re-using an instance
|
|
81
81
|
* is a programming error (the state machine is single-shot).
|
|
82
82
|
*/
|
|
83
83
|
export declare class HandshakeServer {
|
|
@@ -96,7 +96,7 @@ export declare class HandshakeServer {
|
|
|
96
96
|
/**
|
|
97
97
|
* Process the client's INIT and produce signed RESPONSE bytes per
|
|
98
98
|
* §2.2 / §2.3. Throws {@link HandshakeServerRejectionError} on
|
|
99
|
-
* suite mismatch
|
|
99
|
+
* suite mismatch - the rejection bytes are accessible on the
|
|
100
100
|
* thrown error for the caller to transmit before closing the
|
|
101
101
|
* transport.
|
|
102
102
|
*/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Mirror of `semp-go/handshake.Server`: a state machine the caller
|
|
5
5
|
* drives over a transport. The class never performs network I/O
|
|
6
|
-
* directly
|
|
6
|
+
* directly - the caller moves bytes between this object and the
|
|
7
7
|
* underlying transport.
|
|
8
8
|
*
|
|
9
9
|
* Lifecycle:
|
|
@@ -55,7 +55,7 @@ export class HandshakeServerRejectionError extends Error {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Stateful handshake server. One instance handles exactly one
|
|
58
|
-
* handshake
|
|
58
|
+
* handshake - discard after success or error. Re-using an instance
|
|
59
59
|
* is a programming error (the state machine is single-shot).
|
|
60
60
|
*/
|
|
61
61
|
export class HandshakeServer {
|
|
@@ -88,7 +88,7 @@ export class HandshakeServer {
|
|
|
88
88
|
/**
|
|
89
89
|
* Process the client's INIT and produce signed RESPONSE bytes per
|
|
90
90
|
* §2.2 / §2.3. Throws {@link HandshakeServerRejectionError} on
|
|
91
|
-
* suite mismatch
|
|
91
|
+
* suite mismatch - the rejection bytes are accessible on the
|
|
92
92
|
* thrown error for the caller to transmit before closing the
|
|
93
93
|
* transport.
|
|
94
94
|
*/
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Revoking a device with reason `key_compromise` MUST be done in
|
|
5
5
|
* the same transaction as rotating to a new identity key plus a new
|
|
6
|
-
* encryption key
|
|
6
|
+
* encryption key - the compromised device held the shared identity
|
|
7
7
|
* private key, so the adversary holds it too. A partial cascade
|
|
8
8
|
* (device revoked but identity key not rotated) leaves the account
|
|
9
9
|
* vulnerable and is a specification violation.
|
|
@@ -61,7 +61,7 @@ export interface CompromiseRotationInput {
|
|
|
61
61
|
userId: string;
|
|
62
62
|
/** Device being revoked. */
|
|
63
63
|
compromisedDeviceId: string;
|
|
64
|
-
/** Device producing the cascade
|
|
64
|
+
/** Device producing the cascade - recorded as `revoked_by_device_id`. */
|
|
65
65
|
revokingDeviceId: string;
|
|
66
66
|
/** 32-byte Ed25519 seed for the prior identity key. */
|
|
67
67
|
priorIdentitySeed: Uint8Array;
|
package/dist/keys/compromise.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Revoking a device with reason `key_compromise` MUST be done in
|
|
5
5
|
* the same transaction as rotating to a new identity key plus a new
|
|
6
|
-
* encryption key
|
|
6
|
+
* encryption key - the compromised device held the shared identity
|
|
7
7
|
* private key, so the adversary holds it too. A partial cascade
|
|
8
8
|
* (device revoked but identity key not rotated) leaves the account
|
|
9
9
|
* vulnerable and is a specification violation.
|
|
@@ -115,7 +115,7 @@ export interface SignDeviceCertificateResult {
|
|
|
115
115
|
* Compute the issuer's signature over the canonical certificate
|
|
116
116
|
* bytes, then return a copy with `signature.{algorithm,key_id,value}`
|
|
117
117
|
* populated. Pre-populates the algorithm + key_id BEFORE
|
|
118
|
-
* canonicalization so the canonical bytes cover both
|
|
118
|
+
* canonicalization so the canonical bytes cover both - an attacker
|
|
119
119
|
* cannot downgrade the signing algorithm or forge a different
|
|
120
120
|
* issuer fingerprint.
|
|
121
121
|
*/
|
|
@@ -124,7 +124,7 @@ export declare function signDeviceCertificate(input: SignDeviceCertificateInput)
|
|
|
124
124
|
* Ed25519-verify a certificate's signature under `issuerPub`. Returns
|
|
125
125
|
* true when the signature verifies. Does NOT cross-check that the
|
|
126
126
|
* issuer is currently a registered, non-revoked full-access device
|
|
127
|
-
* for the account
|
|
127
|
+
* for the account - that requires a key directory store and is the
|
|
128
128
|
* caller's responsibility.
|
|
129
129
|
*/
|
|
130
130
|
export declare function verifyDeviceCertificate(certificate: DeviceCertificate, issuerPub: Uint8Array): boolean;
|
|
@@ -153,7 +153,7 @@ export interface AddressIdentity {
|
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
155
155
|
* Report whether `matcher` permits sending to `recipient` per
|
|
156
|
-
* §10.3.3.1. Does NOT evaluate rate limits
|
|
156
|
+
* §10.3.3.1. Does NOT evaluate rate limits - the caller applies
|
|
157
157
|
* rate-limit tiers separately per §10.3.4.
|
|
158
158
|
*/
|
|
159
159
|
export declare function scopeAllowsRecipient(matcher: ScopeMatcher, recipient: AddressIdentity): boolean;
|
|
@@ -39,7 +39,7 @@ export const MaxDeviceCertificateLifetimeMs = 365 * 24 * 3600 * 1000;
|
|
|
39
39
|
* Compute the issuer's signature over the canonical certificate
|
|
40
40
|
* bytes, then return a copy with `signature.{algorithm,key_id,value}`
|
|
41
41
|
* populated. Pre-populates the algorithm + key_id BEFORE
|
|
42
|
-
* canonicalization so the canonical bytes cover both
|
|
42
|
+
* canonicalization so the canonical bytes cover both - an attacker
|
|
43
43
|
* cannot downgrade the signing algorithm or forge a different
|
|
44
44
|
* issuer fingerprint.
|
|
45
45
|
*/
|
|
@@ -71,7 +71,7 @@ export function signDeviceCertificate(input) {
|
|
|
71
71
|
* Ed25519-verify a certificate's signature under `issuerPub`. Returns
|
|
72
72
|
* true when the signature verifies. Does NOT cross-check that the
|
|
73
73
|
* issuer is currently a registered, non-revoked full-access device
|
|
74
|
-
* for the account
|
|
74
|
+
* for the account - that requires a key directory store and is the
|
|
75
75
|
* caller's responsibility.
|
|
76
76
|
*/
|
|
77
77
|
export function verifyDeviceCertificate(certificate, issuerPub) {
|
|
@@ -259,7 +259,7 @@ function validateRateLimits(tiers, path) {
|
|
|
259
259
|
}
|
|
260
260
|
/**
|
|
261
261
|
* Report whether `matcher` permits sending to `recipient` per
|
|
262
|
-
* §10.3.3.1. Does NOT evaluate rate limits
|
|
262
|
+
* §10.3.3.1. Does NOT evaluate rate limits - the caller applies
|
|
263
263
|
* rate-limit tiers separately per §10.3.4.
|
|
264
264
|
*/
|
|
265
265
|
export function scopeAllowsRecipient(matcher, recipient) {
|
|
@@ -273,7 +273,7 @@ export function scopeAllowsRecipient(matcher, recipient) {
|
|
|
273
273
|
case "denylist":
|
|
274
274
|
return !matchAny(matcher.deny ?? [], recipient);
|
|
275
275
|
default:
|
|
276
|
-
// Unknown mode
|
|
276
|
+
// Unknown mode - fail closed.
|
|
277
277
|
return false;
|
|
278
278
|
}
|
|
279
279
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-key revocation primitives per KEY.md §8.
|
|
3
3
|
*
|
|
4
|
-
* The published wire shape is `SEMP_KEY_REVOCATION`
|
|
4
|
+
* The published wire shape is `SEMP_KEY_REVOCATION` - a list of
|
|
5
5
|
* revoked keys signed by the publishing party (a domain or a user).
|
|
6
6
|
* The signature uses the `SEMP-REVOCATION:` domain-separation
|
|
7
7
|
* prefix per ENVELOPE.md §4.3.
|
|
@@ -23,7 +23,7 @@ export interface PublicationSignature {
|
|
|
23
23
|
value: string;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* Per-key revocation record per §8.4
|
|
26
|
+
* Per-key revocation record per §8.4 - embedded in a key response
|
|
27
27
|
* or in a {@link RevocationPublication}.
|
|
28
28
|
*/
|
|
29
29
|
export interface Revocation {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Per-key revocation primitives per KEY.md §8.
|
|
3
3
|
*
|
|
4
|
-
* The published wire shape is `SEMP_KEY_REVOCATION`
|
|
4
|
+
* The published wire shape is `SEMP_KEY_REVOCATION` - a list of
|
|
5
5
|
* revoked keys signed by the publishing party (a domain or a user).
|
|
6
6
|
* The signature uses the `SEMP-REVOCATION:` domain-separation
|
|
7
7
|
* prefix per ENVELOPE.md §4.3.
|
package/dist/keys/request.d.ts
CHANGED
|
@@ -15,8 +15,22 @@ export declare const KeysRequestType = "SEMP_KEYS";
|
|
|
15
15
|
export declare const KeysRequestVersion = "1.0.0";
|
|
16
16
|
/** Step discriminator for SEMP_KEYS messages. */
|
|
17
17
|
export type KeysRequestStep = "request" | "response";
|
|
18
|
-
/**
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Per-address lookup status per draft-gokce-semp-client §6.4. The
|
|
20
|
+
* set mirrors the submission-time status vocabulary so the client
|
|
21
|
+
* can share dispatch logic between key fetch and submission.
|
|
22
|
+
*
|
|
23
|
+
* - "found": the home server returned a current key set.
|
|
24
|
+
* - "not_found": the address is registered with the home server
|
|
25
|
+
* but has no current published key.
|
|
26
|
+
* - "legacy_required": the address belongs to a domain that does
|
|
27
|
+
* not run SEMP; client SHOULD fall back to legacy interop.
|
|
28
|
+
* - "recipient_not_found": no record of the address at the home
|
|
29
|
+
* server.
|
|
30
|
+
* - "error": the lookup failed for a transient or unspecified
|
|
31
|
+
* reason. `error_reason` carries the diagnostic.
|
|
32
|
+
*/
|
|
33
|
+
export type KeysResultStatus = "found" | "not_found" | "legacy_required" | "recipient_not_found" | "error";
|
|
20
34
|
/** A single key record per KEY.md §3 / §10.6. */
|
|
21
35
|
export interface KeyRecord {
|
|
22
36
|
algorithm: string;
|
|
@@ -53,7 +67,7 @@ export interface KeysRequest {
|
|
|
53
67
|
type: typeof KeysRequestType;
|
|
54
68
|
step: "request";
|
|
55
69
|
version: string;
|
|
56
|
-
/** ULID for the request
|
|
70
|
+
/** ULID for the request - used to correlate the response. */
|
|
57
71
|
id: string;
|
|
58
72
|
/** ISO 8601 UTC. */
|
|
59
73
|
timestamp: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/keys/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qCAAqC;AACrC,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,iDAAiD;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/keys/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qCAAqC;AACrC,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,iDAAiD;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAErD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,WAAW,GACX,iBAAiB,GACjB,qBAAqB,GACrB,OAAO,CAAC;AAEZ,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,oBAAoB;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,0CAA0C;QAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,gCAAgC;AAChC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yEAAyE;IACzE,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,eAAe,CAAC;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,iFAAiF;IACjF,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,GAAE,MAAM,IAAuB,GACnC,WAAW,CAgBb;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,KAAK,GAAE,MAAM,IAAuB,GACnC,YAAY,CAYd;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA8B1D;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,CAuCvB"}
|
package/dist/keys/request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/keys/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qCAAqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAE3C,+CAA+C;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/keys/request.ts"],"names":[],"mappings":"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"}
|