@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
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent silent recipient state per
|
|
3
|
+
* draft-gokce-semp-delivery §4.5 / DELIVERY.md §2.5.
|
|
4
|
+
*
|
|
5
|
+
* After repeated `silent` outcomes for the same recipient the
|
|
6
|
+
* sending server tightens its retry deadline so it does not waste
|
|
7
|
+
* effort retrying a recipient that consistently fails to
|
|
8
|
+
* acknowledge.
|
|
9
|
+
*
|
|
10
|
+
* The state is purely sender-side. It MUST NOT be transmitted on
|
|
11
|
+
* the wire and MUST NOT be published as a trust-gossip observation.
|
|
12
|
+
* Two senders correctly disagree on which recipients are
|
|
13
|
+
* persistently silent because each only sees its own envelopes.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
/** §4.5 spec defaults. */
|
|
18
|
+
export const PersistentSilentDefaults = {
|
|
19
|
+
/** Consecutive silents required before tightening engages. */
|
|
20
|
+
threshold: 5,
|
|
21
|
+
/** Minimum observation window before tightening engages. */
|
|
22
|
+
observationWindowMs: 24 * 60 * 60 * 1000,
|
|
23
|
+
/** Tightened retry deadline once the trigger fires. */
|
|
24
|
+
shortDeadlineMs: 4 * 60 * 60 * 1000,
|
|
25
|
+
/** Idle expiry after which the counter for a recipient is dropped. */
|
|
26
|
+
idleExpiryMs: 30 * 24 * 60 * 60 * 1000,
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Sender-side ledger of per-recipient silent-acknowledgment
|
|
30
|
+
* counters.
|
|
31
|
+
*
|
|
32
|
+
* Usage:
|
|
33
|
+
*
|
|
34
|
+
* - `inc(addr, now)` on every `silent` outcome.
|
|
35
|
+
* - `reset(addr)` on every non-silent outcome (delivered /
|
|
36
|
+
* rejected).
|
|
37
|
+
* - `effective(addr, now)` returns the tightened retry deadline
|
|
38
|
+
* (in ms) once the count + observation-window thresholds are
|
|
39
|
+
* met, or null to keep the caller's default.
|
|
40
|
+
* - `pruneExpired(now)` on a janitor cadence so the map does not
|
|
41
|
+
* grow without bound.
|
|
42
|
+
*/
|
|
43
|
+
export class PersistentSilentCounter {
|
|
44
|
+
cfg;
|
|
45
|
+
entries = new Map();
|
|
46
|
+
constructor(cfg = {}) {
|
|
47
|
+
this.cfg = {
|
|
48
|
+
threshold: cfg.threshold && cfg.threshold > 0
|
|
49
|
+
? cfg.threshold
|
|
50
|
+
: PersistentSilentDefaults.threshold,
|
|
51
|
+
observationWindowMs: cfg.observationWindowMs && cfg.observationWindowMs > 0
|
|
52
|
+
? cfg.observationWindowMs
|
|
53
|
+
: PersistentSilentDefaults.observationWindowMs,
|
|
54
|
+
shortDeadlineMs: cfg.shortDeadlineMs && cfg.shortDeadlineMs > 0
|
|
55
|
+
? cfg.shortDeadlineMs
|
|
56
|
+
: PersistentSilentDefaults.shortDeadlineMs,
|
|
57
|
+
idleExpiryMs: cfg.idleExpiryMs && cfg.idleExpiryMs > 0
|
|
58
|
+
? cfg.idleExpiryMs
|
|
59
|
+
: PersistentSilentDefaults.idleExpiryMs,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Record one silent outcome for `recipient` at `now`. Returns the running count. */
|
|
63
|
+
inc(recipient, now) {
|
|
64
|
+
if (recipient === "") {
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
const t = now.getTime();
|
|
68
|
+
const e = this.entries.get(recipient);
|
|
69
|
+
if (e === undefined) {
|
|
70
|
+
this.entries.set(recipient, { count: 1, firstSeenMs: t, lastSeenMs: t });
|
|
71
|
+
return 1;
|
|
72
|
+
}
|
|
73
|
+
e.count++;
|
|
74
|
+
e.lastSeenMs = t;
|
|
75
|
+
return e.count;
|
|
76
|
+
}
|
|
77
|
+
/** Clear the counter for `recipient`. Idempotent on missing entries. */
|
|
78
|
+
reset(recipient) {
|
|
79
|
+
this.entries.delete(recipient);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns the §4.5 shortened deadline (in ms) once the count and
|
|
83
|
+
* minimum-observation-window thresholds are met. Returns null
|
|
84
|
+
* when the trigger has not fired yet - caller falls back to its
|
|
85
|
+
* default per-envelope deadline.
|
|
86
|
+
*/
|
|
87
|
+
effective(recipient, now) {
|
|
88
|
+
const e = this.entries.get(recipient);
|
|
89
|
+
if (e === undefined) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (e.count < this.cfg.threshold) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
if (now.getTime() - e.firstSeenMs < this.cfg.observationWindowMs) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return this.cfg.shortDeadlineMs;
|
|
99
|
+
}
|
|
100
|
+
/** Current silent count for `recipient`. */
|
|
101
|
+
count(recipient) {
|
|
102
|
+
return this.entries.get(recipient)?.count ?? 0;
|
|
103
|
+
}
|
|
104
|
+
/** Drop entries whose lastSeen is older than IdleExpiry. Returns the removed count. */
|
|
105
|
+
pruneExpired(now) {
|
|
106
|
+
const t = now.getTime();
|
|
107
|
+
let removed = 0;
|
|
108
|
+
for (const [k, e] of this.entries) {
|
|
109
|
+
if (t - e.lastSeenMs >= this.cfg.idleExpiryMs) {
|
|
110
|
+
this.entries.delete(k);
|
|
111
|
+
removed++;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return removed;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=persistent_silent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistent_silent.js","sourceRoot":"","sources":["../../src/delivery/persistent_silent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,8DAA8D;IAC9D,SAAS,EAAE,CAAC;IACZ,4DAA4D;IAC5D,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACxC,uDAAuD;IACvD,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACnC,sEAAsE;IACtE,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC9B,CAAC;AAgBX;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,uBAAuB;IACjB,GAAG,CAAmC;IACtC,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEpE,YAAY,MAA8B,EAAE;QAC1C,IAAI,CAAC,GAAG,GAAG;YACT,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC;gBAC3C,CAAC,CAAC,GAAG,CAAC,SAAS;gBACf,CAAC,CAAC,wBAAwB,CAAC,SAAS;YACtC,mBAAmB,EACjB,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,mBAAmB,GAAG,CAAC;gBACpD,CAAC,CAAC,GAAG,CAAC,mBAAmB;gBACzB,CAAC,CAAC,wBAAwB,CAAC,mBAAmB;YAClD,eAAe,EACb,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,GAAG,CAAC;gBAC5C,CAAC,CAAC,GAAG,CAAC,eAAe;gBACrB,CAAC,CAAC,wBAAwB,CAAC,eAAe;YAC9C,YAAY,EACV,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC;gBACtC,CAAC,CAAC,GAAG,CAAC,YAAY;gBAClB,CAAC,CAAC,wBAAwB,CAAC,YAAY;SAC5C,CAAC;IACJ,CAAC;IAED,qFAAqF;IACrF,GAAG,CAAC,SAAiB,EAAE,GAAS;QAC9B,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,SAAiB;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAiB,EAAE,GAAS;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;IAClC,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,SAAiB;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,uFAAuF;IACvF,YAAY,CAAC,GAAS;QACpB,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -62,7 +62,7 @@ export type LocalAddressFunc = (address: string) => boolean;
|
|
|
62
62
|
export type InboxStore = Pick<Inbox, "store">;
|
|
63
63
|
/** Hook returning the current session-id retired status. */
|
|
64
64
|
export type SessionRetiredFunc = (sessionId: string) => Promise<boolean>;
|
|
65
|
-
/** Decoded brief shape
|
|
65
|
+
/** Decoded brief shape - minimal fields the pipeline needs. */
|
|
66
66
|
export interface DecodedBrief {
|
|
67
67
|
to: string[];
|
|
68
68
|
cc?: string[];
|
|
@@ -108,7 +108,7 @@ export interface PipelineConfig {
|
|
|
108
108
|
/** Default clock-skew tolerance for step 2; defaults to 15 minutes. */
|
|
109
109
|
clockSkewMs?: number;
|
|
110
110
|
}
|
|
111
|
-
/** Envelope-wide rejection produced by steps 1
|
|
111
|
+
/** Envelope-wide rejection produced by steps 1-7. */
|
|
112
112
|
export interface PipelineRejection {
|
|
113
113
|
reasonCode: string;
|
|
114
114
|
reason: string;
|
|
@@ -125,14 +125,14 @@ export interface PipelineResult {
|
|
|
125
125
|
*/
|
|
126
126
|
results: SubmissionResult[];
|
|
127
127
|
/**
|
|
128
|
-
* Envelope-wide rejection (steps 1
|
|
128
|
+
* Envelope-wide rejection (steps 1-7). Implies {@link results} is
|
|
129
129
|
* empty.
|
|
130
130
|
*/
|
|
131
131
|
rejection?: PipelineRejection;
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Receive-side delivery pipeline. Single-process, callable across
|
|
135
|
-
* many envelopes. Concurrency is the caller's responsibility
|
|
135
|
+
* many envelopes. Concurrency is the caller's responsibility - each
|
|
136
136
|
* `process()` call is independent and stateless beyond the
|
|
137
137
|
* configured hooks.
|
|
138
138
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/delivery/pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/delivery/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ import { unwrap as sealUnwrap } from "../seal/index.js";
|
|
|
27
27
|
import { matchBlockList } from "./blocklist.js";
|
|
28
28
|
/**
|
|
29
29
|
* Receive-side delivery pipeline. Single-process, callable across
|
|
30
|
-
* many envelopes. Concurrency is the caller's responsibility
|
|
30
|
+
* many envelopes. Concurrency is the caller's responsibility - each
|
|
31
31
|
* `process()` call is independent and stateless beyond the
|
|
32
32
|
* configured hooks.
|
|
33
33
|
*/
|
|
@@ -92,7 +92,7 @@ export class Pipeline {
|
|
|
92
92
|
return result;
|
|
93
93
|
}
|
|
94
94
|
// Steps 6 + 7: home-server brief-only open. We don't need
|
|
95
|
-
// K_enclosure here
|
|
95
|
+
// K_enclosure here - only the recipient client does. Walk the
|
|
96
96
|
// configured candidates and try each against
|
|
97
97
|
// env.seal.brief_recipients.
|
|
98
98
|
let brief;
|
|
@@ -315,6 +315,13 @@ function openBriefOnly(env, candidates) {
|
|
|
315
315
|
if (candidates.length === 0) {
|
|
316
316
|
throw new Error("envelope: openBriefOnly: empty candidate list");
|
|
317
317
|
}
|
|
318
|
+
// Suite is pinned in seal.algorithm at compose time; the home
|
|
319
|
+
// server unwraps under the same suite. Without this we always
|
|
320
|
+
// use baseline X25519 and reject every PQ envelope at step 6/7.
|
|
321
|
+
const suite = env.seal.algorithm;
|
|
322
|
+
if (suite !== "x25519-chacha20-poly1305" && suite !== "pq-kyber768-x25519") {
|
|
323
|
+
throw new Error(`envelope: openBriefOnly: unknown seal.algorithm ${suite}`);
|
|
324
|
+
}
|
|
318
325
|
const errors = [];
|
|
319
326
|
for (const c of candidates) {
|
|
320
327
|
const wrapped = env.seal.brief_recipients[c.keyId];
|
|
@@ -322,7 +329,7 @@ function openBriefOnly(env, candidates) {
|
|
|
322
329
|
continue;
|
|
323
330
|
}
|
|
324
331
|
try {
|
|
325
|
-
const kBrief = sealUnwrap(
|
|
332
|
+
const kBrief = sealUnwrap(suite, c.privateKey, c.publicKey, wrapped);
|
|
326
333
|
const briefBlob = base64Decode(env.brief);
|
|
327
334
|
if (briefBlob.length < 12) {
|
|
328
335
|
throw new Error("brief blob too short");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/delivery/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/delivery/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* rejects the whole message; unrelated operations in the same
|
|
9
9
|
* message MUST NOT be applied.
|
|
10
10
|
*
|
|
11
|
-
* Apply does NOT verify the signature on the message
|
|
11
|
+
* Apply does NOT verify the signature on the message - callers MUST
|
|
12
12
|
* run {@link verifyUserPolicyMessage} before invoking
|
|
13
13
|
* {@link PolicyState.apply}.
|
|
14
14
|
*
|
|
@@ -57,7 +57,7 @@ export interface PolicySnapshot {
|
|
|
57
57
|
* Per-user policy state. Concurrency-safe within a single JS event
|
|
58
58
|
* loop (no async mutation between read-modify-write).
|
|
59
59
|
*
|
|
60
|
-
* Does NOT enforce DELIVERY.md §7.5 encrypted-at-rest storage
|
|
60
|
+
* Does NOT enforce DELIVERY.md §7.5 encrypted-at-rest storage -
|
|
61
61
|
* that is the persistence layer's responsibility.
|
|
62
62
|
*/
|
|
63
63
|
export declare class PolicyState {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* rejects the whole message; unrelated operations in the same
|
|
9
9
|
* message MUST NOT be applied.
|
|
10
10
|
*
|
|
11
|
-
* Apply does NOT verify the signature on the message
|
|
11
|
+
* Apply does NOT verify the signature on the message - callers MUST
|
|
12
12
|
* run {@link verifyUserPolicyMessage} before invoking
|
|
13
13
|
* {@link PolicyState.apply}.
|
|
14
14
|
*
|
|
@@ -46,7 +46,7 @@ function messageFor(code, d) {
|
|
|
46
46
|
* Per-user policy state. Concurrency-safe within a single JS event
|
|
47
47
|
* loop (no async mutation between read-modify-write).
|
|
48
48
|
*
|
|
49
|
-
* Does NOT enforce DELIVERY.md §7.5 encrypted-at-rest storage
|
|
49
|
+
* Does NOT enforce DELIVERY.md §7.5 encrypted-at-rest storage -
|
|
50
50
|
* that is the persistence layer's responsibility.
|
|
51
51
|
*/
|
|
52
52
|
export class PolicyState {
|
|
@@ -138,7 +138,7 @@ export class PolicyState {
|
|
|
138
138
|
currentVersion: this.policyVersionValue,
|
|
139
139
|
});
|
|
140
140
|
}
|
|
141
|
-
// Pre-flight every op for unsupported-kind before mutating
|
|
141
|
+
// Pre-flight every op for unsupported-kind before mutating -
|
|
142
142
|
// §7.2 atomicity.
|
|
143
143
|
for (let i = 0; i < m.operations.length; i++) {
|
|
144
144
|
const op = m.operations[i];
|
|
@@ -257,7 +257,7 @@ function entryIdFor(op) {
|
|
|
257
257
|
* not specific op-kind violations.
|
|
258
258
|
*
|
|
259
259
|
* The mapping leans on the validator's stable error-string format
|
|
260
|
-
* (`delivery: user policy operations[N] ...`)
|
|
260
|
+
* (`delivery: user policy operations[N] ...`) - same approach as
|
|
261
261
|
* the semp-go reference.
|
|
262
262
|
*/
|
|
263
263
|
function classifyOpInvalid(msg, m) {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* This module provides:
|
|
12
12
|
*
|
|
13
13
|
* - {@link computeEnvelopeHash}: SHA-256 over canonical envelope bytes
|
|
14
|
-
* (the same canonical form `seal.signature` is computed over
|
|
14
|
+
* (the same canonical form `seal.signature` is computed over -
|
|
15
15
|
* `signature` and `session_mac` blanked, `hop_count` and `padding`
|
|
16
16
|
* omitted).
|
|
17
17
|
* - {@link signDeliveryReceipt}: build + sign a receipt from
|
|
@@ -95,7 +95,7 @@ export interface SignDeliveryReceiptResult {
|
|
|
95
95
|
/**
|
|
96
96
|
* SHA-256 of canonical envelope bytes, base64-encoded, per
|
|
97
97
|
* §1.1.1.3. The caller is responsible for producing the canonical
|
|
98
|
-
* bytes
|
|
98
|
+
* bytes - typically via `envelope.canonicalEnvelopeFor(env)` which
|
|
99
99
|
* applies §4.3 elision (signature, session_mac, hop_count, padding).
|
|
100
100
|
*/
|
|
101
101
|
export declare function computeEnvelopeHash(canonicalEnvelopeBytes: Uint8Array): string;
|
|
@@ -117,7 +117,7 @@ export interface VerifyDeliveryReceiptInput {
|
|
|
117
117
|
* structural validation failure (use {@link validateReceipt} ahead
|
|
118
118
|
* of time to surface those as boolean false instead).
|
|
119
119
|
*
|
|
120
|
-
* Does NOT cross-check `accepted_at` against the verifier's clock
|
|
120
|
+
* Does NOT cross-check `accepted_at` against the verifier's clock -
|
|
121
121
|
* that is a §1.1.1.5 caller-side decision and MUST be applied with
|
|
122
122
|
* the {@link ReceiptClockSkewToleranceSeconds} tolerance.
|
|
123
123
|
*/
|
package/dist/delivery/receipt.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* This module provides:
|
|
12
12
|
*
|
|
13
13
|
* - {@link computeEnvelopeHash}: SHA-256 over canonical envelope bytes
|
|
14
|
-
* (the same canonical form `seal.signature` is computed over
|
|
14
|
+
* (the same canonical form `seal.signature` is computed over -
|
|
15
15
|
* `signature` and `session_mac` blanked, `hop_count` and `padding`
|
|
16
16
|
* omitted).
|
|
17
17
|
* - {@link signDeliveryReceipt}: build + sign a receipt from
|
|
@@ -49,7 +49,7 @@ export const ReceiptClockSkewToleranceSeconds = 120;
|
|
|
49
49
|
/**
|
|
50
50
|
* SHA-256 of canonical envelope bytes, base64-encoded, per
|
|
51
51
|
* §1.1.1.3. The caller is responsible for producing the canonical
|
|
52
|
-
* bytes
|
|
52
|
+
* bytes - typically via `envelope.canonicalEnvelopeFor(env)` which
|
|
53
53
|
* applies §4.3 elision (signature, session_mac, hop_count, padding).
|
|
54
54
|
*/
|
|
55
55
|
export function computeEnvelopeHash(canonicalEnvelopeBytes) {
|
|
@@ -105,7 +105,7 @@ export function signDeliveryReceipt(input) {
|
|
|
105
105
|
* structural validation failure (use {@link validateReceipt} ahead
|
|
106
106
|
* of time to surface those as boolean false instead).
|
|
107
107
|
*
|
|
108
|
-
* Does NOT cross-check `accepted_at` against the verifier's clock
|
|
108
|
+
* Does NOT cross-check `accepted_at` against the verifier's clock -
|
|
109
109
|
* that is a §1.1.1.5 caller-side decision and MUST be applied with
|
|
110
110
|
* the {@link ReceiptClockSkewToleranceSeconds} tolerance.
|
|
111
111
|
*/
|
|
@@ -68,7 +68,7 @@ export declare const DefaultReceiptRetentionMs: number;
|
|
|
68
68
|
* Reference {@link ReceiptStore} backed by a Map. Acknowledge drops
|
|
69
69
|
* the receipt immediately so no plaintext archive accumulates.
|
|
70
70
|
*
|
|
71
|
-
* Single-process only
|
|
71
|
+
* Single-process only - production deployments replace this with a
|
|
72
72
|
* durable backend.
|
|
73
73
|
*/
|
|
74
74
|
export declare class InMemoryReceiptStore implements ReceiptStore {
|
|
@@ -28,7 +28,7 @@ export const DefaultReceiptRetentionMs = 72 * 60 * 60 * 1000;
|
|
|
28
28
|
* Reference {@link ReceiptStore} backed by a Map. Acknowledge drops
|
|
29
29
|
* the receipt immediately so no plaintext archive accumulates.
|
|
30
30
|
*
|
|
31
|
-
* Single-process only
|
|
31
|
+
* Single-process only - production deployments replace this with a
|
|
32
32
|
* durable backend.
|
|
33
33
|
*/
|
|
34
34
|
export class InMemoryReceiptStore {
|
package/dist/delivery/retry.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare const MinRetryInitialIntervalMs = 60000;
|
|
|
14
14
|
export declare const MinRetryMultiplier = 2;
|
|
15
15
|
/** Cap on individual inter-attempt intervals per §2.3 (6 hours). */
|
|
16
16
|
export declare const MaxRetryIntervalMs: number;
|
|
17
|
-
/** Minimum jitter half-width per §2.3 (10%
|
|
17
|
+
/** Minimum jitter half-width per §2.3 (10% - RECOMMENDED 25%). */
|
|
18
18
|
export declare const MinRetryJitterFraction = 0.1;
|
|
19
19
|
/**
|
|
20
20
|
* Lower bound on the realized jittered interval per §2.3:
|
|
@@ -69,7 +69,7 @@ export declare function nextAttemptAt(cfg: RetryConfig, previous: Date, attempt:
|
|
|
69
69
|
*/
|
|
70
70
|
export declare function isRecoverableReason(reasonCode: string): boolean;
|
|
71
71
|
/**
|
|
72
|
-
* Effective delivery deadline per §2.4
|
|
72
|
+
* Effective delivery deadline per §2.4 - the earlier of
|
|
73
73
|
* `postmark.expires` and `queuedAt + horizon`. `horizon <= 0`
|
|
74
74
|
* defaults to {@link DefaultMaxRetryHorizonMs}; values larger than
|
|
75
75
|
* {@link MaxRetryHorizonCapMs} clamp down.
|
package/dist/delivery/retry.js
CHANGED
|
@@ -14,7 +14,7 @@ export const MinRetryInitialIntervalMs = 60_000;
|
|
|
14
14
|
export const MinRetryMultiplier = 2.0;
|
|
15
15
|
/** Cap on individual inter-attempt intervals per §2.3 (6 hours). */
|
|
16
16
|
export const MaxRetryIntervalMs = 6 * 60 * 60 * 1000;
|
|
17
|
-
/** Minimum jitter half-width per §2.3 (10%
|
|
17
|
+
/** Minimum jitter half-width per §2.3 (10% - RECOMMENDED 25%). */
|
|
18
18
|
export const MinRetryJitterFraction = 0.10;
|
|
19
19
|
/**
|
|
20
20
|
* Lower bound on the realized jittered interval per §2.3:
|
|
@@ -103,7 +103,7 @@ export function isRecoverableReason(reasonCode) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
106
|
-
* Effective delivery deadline per §2.4
|
|
106
|
+
* Effective delivery deadline per §2.4 - the earlier of
|
|
107
107
|
* `postmark.expires` and `queuedAt + horizon`. `horizon <= 0`
|
|
108
108
|
* defaults to {@link DefaultMaxRetryHorizonMs}; values larger than
|
|
109
109
|
* {@link MaxRetryHorizonCapMs} clamp down.
|
|
@@ -141,7 +141,7 @@ export declare class Scheduler {
|
|
|
141
141
|
}
|
|
142
142
|
/**
|
|
143
143
|
* Reference in-memory {@link SchedulerStore}. Tests / single-process
|
|
144
|
-
* demos only
|
|
144
|
+
* demos only - production deployments back the queue with durable
|
|
145
145
|
* storage per DELIVERY.md §2.1.
|
|
146
146
|
*/
|
|
147
147
|
export declare class InMemorySchedulerStore implements SchedulerStore {
|
|
@@ -288,7 +288,7 @@ export class Scheduler {
|
|
|
288
288
|
}
|
|
289
289
|
/**
|
|
290
290
|
* Reference in-memory {@link SchedulerStore}. Tests / single-process
|
|
291
|
-
* demos only
|
|
291
|
+
* demos only - production deployments back the queue with durable
|
|
292
292
|
* storage per DELIVERY.md §2.1.
|
|
293
293
|
*/
|
|
294
294
|
export class InMemorySchedulerStore {
|
|
@@ -66,7 +66,7 @@ export interface PartitionInput {
|
|
|
66
66
|
* excluded from the partition entirely.
|
|
67
67
|
* 2. Compute the implicit full-access stage as
|
|
68
68
|
* `max(delegated_stages_with_mode_not_none) + 1`, taken across
|
|
69
|
-
* ALL delegates with `receive.mode !== "none"`
|
|
69
|
+
* ALL delegates with `receive.mode !== "none"` - not just those
|
|
70
70
|
* that allowed THIS envelope. Matches §10.3.3.1's "the maximum
|
|
71
71
|
* is taken over all delegated devices of the account that have
|
|
72
72
|
* a receive matcher whose mode is not none". When no such
|
|
@@ -26,7 +26,7 @@ import { scopeAllowsSender } from "../keys/device_certificate.js";
|
|
|
26
26
|
* excluded from the partition entirely.
|
|
27
27
|
* 2. Compute the implicit full-access stage as
|
|
28
28
|
* `max(delegated_stages_with_mode_not_none) + 1`, taken across
|
|
29
|
-
* ALL delegates with `receive.mode !== "none"`
|
|
29
|
+
* ALL delegates with `receive.mode !== "none"` - not just those
|
|
30
30
|
* that allowed THIS envelope. Matches §10.3.3.1's "the maximum
|
|
31
31
|
* is taken over all delegated devices of the account that have
|
|
32
32
|
* a receive matcher whose mode is not none". When no such
|
|
@@ -66,7 +66,7 @@ export declare class StagedRunner {
|
|
|
66
66
|
* `submitterDeviceId` is the device_id bound to the session that
|
|
67
67
|
* delivered the disposition; it MUST equal `d.device_id`.
|
|
68
68
|
*
|
|
69
|
-
* Idempotent on repeats from the same device
|
|
69
|
+
* Idempotent on repeats from the same device - keeps the FIRST
|
|
70
70
|
* disposition (conservative aggregation).
|
|
71
71
|
*/
|
|
72
72
|
ingestDisposition(envelopeId: string, submitterDeviceId: string, d: Disposition): void;
|
|
@@ -114,7 +114,7 @@ export class StagedRunner {
|
|
|
114
114
|
* `submitterDeviceId` is the device_id bound to the session that
|
|
115
115
|
* delivered the disposition; it MUST equal `d.device_id`.
|
|
116
116
|
*
|
|
117
|
-
* Idempotent on repeats from the same device
|
|
117
|
+
* Idempotent on repeats from the same device - keeps the FIRST
|
|
118
118
|
* disposition (conservative aggregation).
|
|
119
119
|
*/
|
|
120
120
|
ingestDisposition(envelopeId, submitterDeviceId, d) {
|
|
@@ -256,7 +256,7 @@ export class StagedRunner {
|
|
|
256
256
|
});
|
|
257
257
|
}
|
|
258
258
|
if (rebuilt.length === 0) {
|
|
259
|
-
// No stages remain
|
|
259
|
+
// No stages remain - let the next tick detect completion.
|
|
260
260
|
rec.stages = [];
|
|
261
261
|
return;
|
|
262
262
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEMP_STATUS recipient-status configuration message per
|
|
3
|
+
* draft-gokce-semp-delivery §1.6.5.
|
|
4
|
+
*
|
|
5
|
+
* The client composes a signed StatusMessage carrying the user's
|
|
6
|
+
* state, optional message and until, plus the visibility rule
|
|
7
|
+
* that determines which senders may receive the status in
|
|
8
|
+
* acknowledgments. The client transmits the record to the home
|
|
9
|
+
* server as a signed message under the originating device's key;
|
|
10
|
+
* the home server verifies, checks device_id against the
|
|
11
|
+
* registered device set, and applies the latest update by
|
|
12
|
+
* updated_at.
|
|
13
|
+
*
|
|
14
|
+
* This is distinct from the runtime recipient-status surface in
|
|
15
|
+
* `./status.ts` (the value attached to delivery acknowledgments).
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
/** Wire-level type discriminator. */
|
|
20
|
+
export declare const StatusMessageType = "SEMP_STATUS";
|
|
21
|
+
/** Wire-level version. */
|
|
22
|
+
export declare const StatusMessageVersion = "1.0.0";
|
|
23
|
+
/** Domain-separation prefix for SEMP_STATUS signatures. */
|
|
24
|
+
export declare const StatusMessagePrefix = "SEMP-STATUS:";
|
|
25
|
+
/** Recipient state value pinned by §1.6.3. */
|
|
26
|
+
export type StatusState = "available" | "away" | "do_not_disturb";
|
|
27
|
+
/** Visibility mode for the SEMP_STATUS record per §1.6.5. */
|
|
28
|
+
export type StatusVisibilityMode = "nobody" | "everyone" | "users";
|
|
29
|
+
/** Single entry in StatusVisibility.allow. */
|
|
30
|
+
export type StatusVisibilityEntry = {
|
|
31
|
+
type: "domain";
|
|
32
|
+
domain: string;
|
|
33
|
+
} | {
|
|
34
|
+
type: "user";
|
|
35
|
+
address: string;
|
|
36
|
+
};
|
|
37
|
+
/** Visibility configuration per §1.6.5. */
|
|
38
|
+
export interface StatusVisibility {
|
|
39
|
+
mode: StatusVisibilityMode;
|
|
40
|
+
allow?: StatusVisibilityEntry[];
|
|
41
|
+
}
|
|
42
|
+
/** Signature block on a SEMP_STATUS message. */
|
|
43
|
+
export interface StatusMessageSignature {
|
|
44
|
+
algorithm: string;
|
|
45
|
+
key_id: string;
|
|
46
|
+
value: string;
|
|
47
|
+
}
|
|
48
|
+
/** SEMP_STATUS configuration record per §1.6.5. */
|
|
49
|
+
export interface StatusMessage {
|
|
50
|
+
type: typeof StatusMessageType;
|
|
51
|
+
version: string;
|
|
52
|
+
user_id: string;
|
|
53
|
+
state: StatusState | string;
|
|
54
|
+
message?: string;
|
|
55
|
+
/** ISO 8601 UTC. */
|
|
56
|
+
until?: string;
|
|
57
|
+
visibility: StatusVisibility;
|
|
58
|
+
/** ISO 8601 UTC. */
|
|
59
|
+
updated_at: string;
|
|
60
|
+
device_id: string;
|
|
61
|
+
signature: StatusMessageSignature;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Sign `m.signature` with the originating device's identity
|
|
65
|
+
* private key under the SEMP-STATUS: prefix. Mutates m in place
|
|
66
|
+
* and returns the base64 signature value.
|
|
67
|
+
*/
|
|
68
|
+
export declare function signStatusMessage(m: StatusMessage, devicePriv: Uint8Array, deviceKeyId: string): string;
|
|
69
|
+
/** Verify `m.signature` against the originating device's public key. */
|
|
70
|
+
export declare function verifyStatusMessage(m: StatusMessage, devicePub: Uint8Array): boolean;
|
|
71
|
+
/** Structural validation per §1.6.5. */
|
|
72
|
+
export declare function validateStatusMessage(m: StatusMessage, opts?: {
|
|
73
|
+
skipSignatureCheck?: boolean;
|
|
74
|
+
}): void;
|
|
75
|
+
//# sourceMappingURL=status_message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status_message.d.ts","sourceRoot":"","sources":["../../src/delivery/status_message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,qCAAqC;AACrC,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,0BAA0B;AAC1B,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,8CAA8C;AAC9C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAElE,6DAA6D;AAC7D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnE,8CAA8C;AAC9C,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAED,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,iBAAiB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,sBAAsB,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,aAAa,EAChB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,CAsBR;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,aAAa,EAChB,SAAS,EAAE,UAAU,GACpB,OAAO,CAYT;AAED,wCAAwC;AACxC,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,aAAa,EAChB,IAAI,GAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,IAAI,CA6CN"}
|