canary-kit 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CANARY.md +38 -0
- package/NIP-CANARY.md +26 -0
- package/dist/nostr.d.ts +104 -88
- package/dist/nostr.d.ts.map +1 -1
- package/dist/nostr.js +123 -111
- package/dist/nostr.js.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +6 -0
- package/dist/sync.js.map +1 -1
- package/package.json +1 -1
package/CANARY.md
CHANGED
|
@@ -31,6 +31,32 @@ The protocol is defined in three layers:
|
|
|
31
31
|
monitoring)
|
|
32
32
|
3. **CANARY-WORDLIST** — Spoken-word encoding optimised for voice clarity
|
|
33
33
|
|
|
34
|
+
## Protocol Layering
|
|
35
|
+
|
|
36
|
+
CANARY builds on two generic protocol specifications:
|
|
37
|
+
|
|
38
|
+
- **[Spoken Token Protocol](https://github.com/TheCryptoDonkey/spoken-token/blob/main/PROTOCOL.md)**
|
|
39
|
+
— defines SPOKEN-DERIVE (the core HMAC-counter-to-words derivation) and SPOKEN-ENCODE
|
|
40
|
+
(word/PIN/hex encoding). CANARY-DERIVE is a superset of SPOKEN-DERIVE. The generic
|
|
41
|
+
protocol is implemented by the `spoken-token` npm package.
|
|
42
|
+
|
|
43
|
+
- **[Simple Shared Secret Groups](GROUPS.md)** — defines the group lifecycle (creation,
|
|
44
|
+
member management, seed rotation, sync protocol, replay protection). CANARY groups
|
|
45
|
+
are an application of this generic group protocol with additional duress, liveness,
|
|
46
|
+
and beacon extensions.
|
|
47
|
+
|
|
48
|
+
The Nostr transport binding is defined in two layers:
|
|
49
|
+
|
|
50
|
+
- **[NIP-XX: Simple Shared Secret Groups](NIP-XX.md)** — maps the generic group
|
|
51
|
+
protocol onto existing Nostr kinds (30078, NIP-17, 20078). Zero new event kinds.
|
|
52
|
+
|
|
53
|
+
- **[NIP-CANARY](NIP-CANARY.md)** — application profile of NIP-XX adding
|
|
54
|
+
CANARY-specific signal types (duress alerts, beacons) and Meshtastic fallback.
|
|
55
|
+
|
|
56
|
+
CANARY's unique contributions beyond the generic layers are: **duress detection**
|
|
57
|
+
(CANARY-DURESS), **liveness monitoring** (dead man's switch), **threat-profile
|
|
58
|
+
presets**, and **encrypted location beacons**.
|
|
59
|
+
|
|
34
60
|
## Motivation
|
|
35
61
|
|
|
36
62
|
AI voice cloning now requires as little as three seconds of audio. A thirty-second clip
|
|
@@ -96,6 +122,12 @@ separate keys or counters.
|
|
|
96
122
|
|
|
97
123
|
Core deterministic token derivation. The universal primitive that all other layers build on.
|
|
98
124
|
|
|
125
|
+
> **Generic layer:** The core derivation algorithm (HMAC-SHA256 with context and counter)
|
|
126
|
+
> is specified generically in the [Spoken Token Protocol](https://github.com/TheCryptoDonkey/spoken-token/blob/main/PROTOCOL.md)
|
|
127
|
+
> as SPOKEN-DERIVE. CANARY-DERIVE is identical to SPOKEN-DERIVE — this section
|
|
128
|
+
> documents it in CANARY's context for completeness. The `spoken-token` npm package
|
|
129
|
+
> provides a standalone implementation of the generic layer.
|
|
130
|
+
|
|
99
131
|
### Algorithm
|
|
100
132
|
|
|
101
133
|
```
|
|
@@ -163,6 +195,12 @@ re-sync messages) MUST enforce the following rules:
|
|
|
163
195
|
|
|
164
196
|
## CANARY-SYNC: Transport-Agnostic Synchronisation
|
|
165
197
|
|
|
198
|
+
> **Generic layer:** The core group management protocol (creation, member management,
|
|
199
|
+
> seed rotation, counter sync, replay protection) is specified generically in
|
|
200
|
+
> [Simple Shared Secret Groups](GROUPS.md). CANARY-SYNC extends it with
|
|
201
|
+
> application-specific message types: `beacon`, `duress-alert`, `duress-clear`,
|
|
202
|
+
> and `liveness-checkin`.
|
|
203
|
+
|
|
166
204
|
CANARY-SYNC is the protocol layer for propagating group state mutations and telemetry
|
|
167
205
|
across any transport without depending on Nostr or any specific relay infrastructure.
|
|
168
206
|
It operates over any channel capable of delivering authenticated, ordered or unordered
|
package/NIP-CANARY.md
CHANGED
|
@@ -13,6 +13,32 @@ providing group management, seed distribution, and counter synchronisation over
|
|
|
13
13
|
Nostr relays. The core protocol (CANARY-DERIVE, CANARY-DURESS, CANARY-WORDLIST)
|
|
14
14
|
is defined in the transport-agnostic [CANARY specification](CANARY.md).
|
|
15
15
|
|
|
16
|
+
## Protocol Layering
|
|
17
|
+
|
|
18
|
+
NIP-CANARY is an **application profile** of [NIP-XX: Simple Shared Secret Groups](NIP-XX.md).
|
|
19
|
+
|
|
20
|
+
The generic group transport (NIP-XX) defines how to manage shared-secret groups over
|
|
21
|
+
Nostr using existing event kinds:
|
|
22
|
+
- **Kind 30078** (NIP-78) for durable group state
|
|
23
|
+
- **NIP-17 gift wraps** for secret distribution
|
|
24
|
+
- **Kind 20078** (ephemeral) for real-time signals
|
|
25
|
+
|
|
26
|
+
NIP-CANARY extends NIP-XX with CANARY-specific features:
|
|
27
|
+
- **Duress signal semantics** in kind 20078 payloads (`duress-alert`, `duress-clear`)
|
|
28
|
+
- **Encrypted location beacons** in kind 20078 payloads
|
|
29
|
+
- **Liveness check-in signals** for dead man's switch
|
|
30
|
+
- **Meshtastic fallback transport** for offline/mesh operation
|
|
31
|
+
|
|
32
|
+
The six custom event kinds defined below (38800–20800) represent the **current
|
|
33
|
+
implementation**. A future version of this NIP will migrate to NIP-XX's transport
|
|
34
|
+
mapping (zero new kinds). The custom kinds are documented here for compatibility
|
|
35
|
+
with existing deployments.
|
|
36
|
+
|
|
37
|
+
> **Migration path:** New implementations SHOULD use NIP-XX transport (kind 30078,
|
|
38
|
+
> NIP-17, kind 20078) with the `ssg/` tag prefix and CANARY-specific signal types.
|
|
39
|
+
> Existing implementations using kinds 38800–20800 will continue to work — clients
|
|
40
|
+
> MAY support both during the transition period.
|
|
41
|
+
|
|
16
42
|
## Nostr Canary Groups
|
|
17
43
|
|
|
18
44
|
This section defines a Nostr application layer built on the CANARY protocol, providing
|
package/dist/nostr.d.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* NIP-XX Nostr transport builders for Simple Shared Secret (SSG) groups.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
4
|
+
* Three event kinds are used:
|
|
5
|
+
*
|
|
6
|
+
* - **kind 30078** (parameterised replaceable) — group state and stored signals.
|
|
7
|
+
* The d-tag uses the `ssg/` namespace prefix.
|
|
8
|
+
* - **kind 20078** (ephemeral) — real-time signals between group members.
|
|
9
|
+
* - **kind 14** (rumour / unsigned inner event) — NIP-17 gift-wrapped DMs carrying
|
|
10
|
+
* seed distribution, reseed, and other private payloads.
|
|
11
|
+
*
|
|
12
|
+
* Builders return unsigned events (`UnsignedEvent`). The consumer is responsible for
|
|
13
|
+
* signing (NIP-01), encrypting content (NIP-44), and wrapping (NIP-59) as needed.
|
|
7
14
|
*/
|
|
15
|
+
/** NIP-XX event kinds used by SSG groups. */
|
|
8
16
|
export declare const KINDS: {
|
|
9
|
-
readonly
|
|
10
|
-
readonly
|
|
11
|
-
readonly
|
|
12
|
-
readonly reseed: 28801;
|
|
13
|
-
readonly wordUsed: 28802;
|
|
14
|
-
readonly beacon: 20800;
|
|
17
|
+
readonly groupState: 30078;
|
|
18
|
+
readonly signal: 20078;
|
|
19
|
+
readonly giftWrap: 1059;
|
|
15
20
|
};
|
|
16
21
|
/** Unsigned Nostr event (consumer signs with their own library). */
|
|
17
22
|
export interface UnsignedEvent {
|
|
@@ -20,83 +25,39 @@ export interface UnsignedEvent {
|
|
|
20
25
|
tags: string[][];
|
|
21
26
|
created_at: number;
|
|
22
27
|
}
|
|
23
|
-
export interface
|
|
28
|
+
export interface GroupStateEventParams {
|
|
24
29
|
groupId: string;
|
|
25
|
-
name: string;
|
|
26
30
|
members: string[];
|
|
27
|
-
rotationInterval: number;
|
|
28
|
-
wordCount: 1 | 2 | 3;
|
|
29
|
-
wordlist: string;
|
|
30
31
|
encryptedContent: string;
|
|
32
|
+
rotationInterval?: number;
|
|
33
|
+
tolerance?: number;
|
|
31
34
|
expiration?: number;
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
* Build an unsigned kind 38800 group definition event.
|
|
35
|
-
*
|
|
36
|
-
* @param params - Group event parameters including groupId, name, members, and encrypted content.
|
|
37
|
-
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
38
|
-
* @throws {Error} If groupId/name are invalid, member pubkeys are malformed, rotationInterval is non-positive, or wordCount is not 1/2/3.
|
|
39
|
-
*/
|
|
40
|
-
export declare function buildGroupEvent(params: GroupEventParams): UnsignedEvent;
|
|
41
|
-
export interface SeedDistributionParams {
|
|
42
|
-
recipientPubkey: string;
|
|
43
|
-
groupEventId: string;
|
|
44
|
-
encryptedContent: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Build an unsigned kind 28800 seed distribution event.
|
|
48
|
-
*
|
|
49
|
-
* @param params - Seed distribution parameters including recipient pubkey, group event ID, and encrypted seed.
|
|
50
|
-
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
51
|
-
* @throws {Error} If recipientPubkey or groupEventId are not valid 64-character hex strings.
|
|
52
|
-
*/
|
|
53
|
-
export declare function buildSeedDistributionEvent(params: SeedDistributionParams): UnsignedEvent;
|
|
54
|
-
export interface MemberUpdateParams {
|
|
36
|
+
export interface StoredSignalEventParams {
|
|
55
37
|
groupId: string;
|
|
56
|
-
|
|
57
|
-
memberPubkey: string;
|
|
58
|
-
reseed: boolean;
|
|
38
|
+
signalType: string;
|
|
59
39
|
encryptedContent: string;
|
|
60
40
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
* @param params - Member update parameters including groupId, action ('add' | 'remove'), member pubkey, and reseed flag.
|
|
65
|
-
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
66
|
-
* @throws {Error} If action is not 'add' or 'remove', or pubkey/groupId are invalid.
|
|
67
|
-
*/
|
|
68
|
-
export declare function buildMemberUpdateEvent(params: MemberUpdateParams): UnsignedEvent;
|
|
69
|
-
export interface ReseedParams {
|
|
70
|
-
groupEventId: string;
|
|
71
|
-
reason: 'member_removed' | 'compromise' | 'scheduled' | 'duress';
|
|
41
|
+
export interface SignalEventParams {
|
|
42
|
+
groupId: string;
|
|
43
|
+
signalType: string;
|
|
72
44
|
encryptedContent: string;
|
|
73
45
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* @param params - Reseed parameters including group event ID, reason, and encrypted new seed.
|
|
78
|
-
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
79
|
-
* @throws {Error} If groupEventId is not a valid 64-character hex string or reason is invalid.
|
|
80
|
-
*/
|
|
81
|
-
export declare function buildReseedEvent(params: ReseedParams): UnsignedEvent;
|
|
82
|
-
export interface WordUsedParams {
|
|
83
|
-
groupEventId: string;
|
|
46
|
+
export interface RumourEventParams {
|
|
47
|
+
recipientPubkey: string;
|
|
48
|
+
subject: string;
|
|
84
49
|
encryptedContent: string;
|
|
50
|
+
groupEventId?: string;
|
|
85
51
|
}
|
|
86
|
-
/**
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
export declare function buildWordUsedEvent(params: WordUsedParams): UnsignedEvent;
|
|
94
|
-
export interface BeaconEventParams {
|
|
95
|
-
groupId: string;
|
|
96
|
-
encryptedContent: string;
|
|
97
|
-
expiration?: number;
|
|
52
|
+
/** Plaintext payload for group configuration (kind 30078 encrypted content). */
|
|
53
|
+
export interface GroupConfigPayload {
|
|
54
|
+
description: string;
|
|
55
|
+
policies: {
|
|
56
|
+
invite_by: 'admin' | 'any_member';
|
|
57
|
+
reseed_by: 'admin' | 'any_admin';
|
|
58
|
+
};
|
|
98
59
|
}
|
|
99
|
-
/** Plaintext payload for
|
|
60
|
+
/** Plaintext payload for seed distribution (kind 14 rumour). */
|
|
100
61
|
export interface SeedDistributionPayload {
|
|
101
62
|
seed: string;
|
|
102
63
|
/** Allows re-seeding mid-window without waiting for the next natural time rotation. */
|
|
@@ -104,31 +65,86 @@ export interface SeedDistributionPayload {
|
|
|
104
65
|
/** The group's d-tag value (group identifier). */
|
|
105
66
|
group_d: string;
|
|
106
67
|
}
|
|
107
|
-
/** Plaintext payload for
|
|
108
|
-
export interface GroupEventPayload {
|
|
109
|
-
description: string;
|
|
110
|
-
policies: {
|
|
111
|
-
invite_by: 'creator' | 'any_member';
|
|
112
|
-
reseed_by: 'creator' | 'any_admin';
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
/** Plaintext payload for kind 28801 (reseed notification). */
|
|
68
|
+
/** Plaintext payload for reseed notification (kind 14 rumour). */
|
|
116
69
|
export interface ReseedPayload {
|
|
117
70
|
seed: string;
|
|
118
71
|
reason: 'member_removed' | 'compromise' | 'scheduled' | 'duress';
|
|
119
72
|
}
|
|
120
|
-
/** Plaintext payload for
|
|
73
|
+
/** Plaintext payload for member update (kind 14 rumour). */
|
|
74
|
+
export interface MemberUpdatePayload {
|
|
75
|
+
action: 'add' | 'remove';
|
|
76
|
+
member: string;
|
|
77
|
+
reseed: boolean;
|
|
78
|
+
}
|
|
79
|
+
/** Plaintext payload for counter advance (kind 20078 signal). */
|
|
80
|
+
export interface CounterAdvancePayload {
|
|
81
|
+
new_counter: number;
|
|
82
|
+
}
|
|
83
|
+
/** Plaintext payload for word-used / burn-after-use (kind 20078 signal). */
|
|
121
84
|
export interface WordUsedPayload {
|
|
122
85
|
new_counter: number;
|
|
123
86
|
used_by: string;
|
|
124
87
|
duress: boolean;
|
|
125
88
|
}
|
|
89
|
+
export declare function validatePubkey(pubkey: string, label: string): void;
|
|
90
|
+
export declare function validateTagString(value: string, label: string): void;
|
|
91
|
+
export declare function validateExpiration(expiration: number): void;
|
|
92
|
+
export declare function validateEventId(eventId: string, label: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* SHA-256 hash a group ID for use in d-tags where privacy matters.
|
|
95
|
+
*
|
|
96
|
+
* Duplicates hashGroupTag from sync-crypto.ts — kept independent to avoid
|
|
97
|
+
* coupling builders to sync layer.
|
|
98
|
+
*/
|
|
99
|
+
export declare function hashGroupId(groupId: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* Build an unsigned kind 30078 group state event.
|
|
102
|
+
*
|
|
103
|
+
* The d-tag uses plaintext `ssg/<groupId>` since content is NIP-44 encrypted.
|
|
104
|
+
* Includes NIP-32 labels for SSG namespace and p-tags for each member.
|
|
105
|
+
*
|
|
106
|
+
* @param params - Group state parameters.
|
|
107
|
+
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
108
|
+
* @throws {Error} If groupId is invalid, member pubkeys are malformed, or optional
|
|
109
|
+
* numeric fields are out of range.
|
|
110
|
+
*/
|
|
111
|
+
export declare function buildGroupStateEvent(params: GroupStateEventParams): UnsignedEvent;
|
|
112
|
+
/**
|
|
113
|
+
* Build an unsigned kind 30078 stored signal event.
|
|
114
|
+
*
|
|
115
|
+
* The d-tag uses a SHA-256 hash of the group ID (for privacy) scoped by signal type:
|
|
116
|
+
* `ssg/<SHA256(groupId)>:<signalType>`.
|
|
117
|
+
*
|
|
118
|
+
* Includes a 7-day NIP-40 expiration tag.
|
|
119
|
+
*
|
|
120
|
+
* @param params - Stored signal parameters.
|
|
121
|
+
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
122
|
+
* @throws {Error} If groupId or signalType are empty.
|
|
123
|
+
*/
|
|
124
|
+
export declare function buildStoredSignalEvent(params: StoredSignalEventParams): UnsignedEvent;
|
|
126
125
|
/**
|
|
127
|
-
* Build an unsigned kind
|
|
126
|
+
* Build an unsigned kind 20078 ephemeral signal event.
|
|
127
|
+
*
|
|
128
|
+
* The d-tag uses a SHA-256 hash of the group ID (for privacy):
|
|
129
|
+
* `ssg/<SHA256(groupId)>`. A t-tag carries the signal type.
|
|
130
|
+
*
|
|
131
|
+
* No expiration tag — ephemeral events are not stored by relays.
|
|
128
132
|
*
|
|
129
|
-
* @param params -
|
|
133
|
+
* @param params - Signal parameters.
|
|
130
134
|
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
131
|
-
* @throws {Error} If groupId
|
|
135
|
+
* @throws {Error} If groupId or signalType are empty.
|
|
136
|
+
*/
|
|
137
|
+
export declare function buildSignalEvent(params: SignalEventParams): UnsignedEvent;
|
|
138
|
+
/**
|
|
139
|
+
* Build an unsigned kind 14 rumour event for NIP-17 gift wrapping.
|
|
140
|
+
*
|
|
141
|
+
* The consumer must set the `pubkey` field before computing the event ID.
|
|
142
|
+
* The rumour is then sealed (NIP-44 encrypt + kind 13) and gift-wrapped
|
|
143
|
+
* (kind 1059) by the caller.
|
|
144
|
+
*
|
|
145
|
+
* @param params - Rumour parameters including recipient and subject.
|
|
146
|
+
* @returns An {@link UnsignedEvent} ready for NIP-59 wrapping.
|
|
147
|
+
* @throws {Error} If recipientPubkey is invalid, subject is empty, or groupEventId is invalid.
|
|
132
148
|
*/
|
|
133
|
-
export declare function
|
|
149
|
+
export declare function buildRumourEvent(params: RumourEventParams): UnsignedEvent;
|
|
134
150
|
//# sourceMappingURL=nostr.d.ts.map
|
package/dist/nostr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nostr.d.ts","sourceRoot":"","sources":["../src/nostr.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nostr.d.ts","sourceRoot":"","sources":["../src/nostr.ts"],"names":[],"mappings":"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"}
|
package/dist/nostr.js
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* NIP-XX Nostr transport builders for Simple Shared Secret (SSG) groups.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
4
|
+
* Three event kinds are used:
|
|
5
|
+
*
|
|
6
|
+
* - **kind 30078** (parameterised replaceable) — group state and stored signals.
|
|
7
|
+
* The d-tag uses the `ssg/` namespace prefix.
|
|
8
|
+
* - **kind 20078** (ephemeral) — real-time signals between group members.
|
|
9
|
+
* - **kind 14** (rumour / unsigned inner event) — NIP-17 gift-wrapped DMs carrying
|
|
10
|
+
* seed distribution, reseed, and other private payloads.
|
|
11
|
+
*
|
|
12
|
+
* Builders return unsigned events (`UnsignedEvent`). The consumer is responsible for
|
|
13
|
+
* signing (NIP-01), encrypting content (NIP-44), and wrapping (NIP-59) as needed.
|
|
7
14
|
*/
|
|
15
|
+
import { sha256, bytesToHex } from './crypto.js';
|
|
16
|
+
// ── Constants ────────────────────────────────────────────────────────────────
|
|
17
|
+
/** NIP-XX event kinds used by SSG groups. */
|
|
8
18
|
export const KINDS = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
reseed: 28_801,
|
|
13
|
-
wordUsed: 28_802,
|
|
14
|
-
beacon: 20_800,
|
|
19
|
+
groupState: 30_078,
|
|
20
|
+
signal: 20_078,
|
|
21
|
+
giftWrap: 1_059,
|
|
15
22
|
};
|
|
16
|
-
|
|
17
|
-
return Math.floor(Date.now() / 1000);
|
|
18
|
-
}
|
|
23
|
+
// ── Validation helpers ───────────────────────────────────────────────────────
|
|
19
24
|
const HEX_64_RE = /^[0-9a-f]{64}$/;
|
|
20
25
|
const MAX_TAG_LENGTH = 256;
|
|
21
|
-
function validatePubkey(pubkey, label) {
|
|
26
|
+
export function validatePubkey(pubkey, label) {
|
|
22
27
|
if (!HEX_64_RE.test(pubkey)) {
|
|
23
28
|
throw new Error(`Invalid ${label}: expected 64 lowercase hex characters, got ${pubkey.length} chars`);
|
|
24
29
|
}
|
|
25
30
|
}
|
|
26
|
-
function
|
|
27
|
-
if (!HEX_64_RE.test(eventId)) {
|
|
28
|
-
throw new Error(`Invalid ${label}: expected 64 lowercase hex characters, got ${eventId.length} chars`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function validateTagString(value, label) {
|
|
31
|
+
export function validateTagString(value, label) {
|
|
32
32
|
if (typeof value !== 'string' || value.length === 0) {
|
|
33
33
|
throw new Error(`Invalid ${label}: must be a non-empty string`);
|
|
34
34
|
}
|
|
@@ -36,140 +36,152 @@ function validateTagString(value, label) {
|
|
|
36
36
|
throw new Error(`Invalid ${label}: exceeds maximum length of ${MAX_TAG_LENGTH} characters`);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
export function validateExpiration(expiration) {
|
|
40
|
+
if (!Number.isInteger(expiration) || expiration < 0) {
|
|
41
|
+
throw new Error('expiration must be a non-negative integer');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function validateEventId(eventId, label) {
|
|
45
|
+
if (!HEX_64_RE.test(eventId)) {
|
|
46
|
+
throw new Error(`Invalid ${label}: expected 64 lowercase hex characters, got ${eventId.length} chars`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
50
|
+
function now() {
|
|
51
|
+
return Math.floor(Date.now() / 1000);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* SHA-256 hash a group ID for use in d-tags where privacy matters.
|
|
55
|
+
*
|
|
56
|
+
* Duplicates hashGroupTag from sync-crypto.ts — kept independent to avoid
|
|
57
|
+
* coupling builders to sync layer.
|
|
58
|
+
*/
|
|
59
|
+
export function hashGroupId(groupId) {
|
|
60
|
+
return bytesToHex(sha256(new TextEncoder().encode(groupId)));
|
|
61
|
+
}
|
|
62
|
+
// ── Builder functions ────────────────────────────────────────────────────────
|
|
39
63
|
/**
|
|
40
|
-
* Build an unsigned kind
|
|
64
|
+
* Build an unsigned kind 30078 group state event.
|
|
65
|
+
*
|
|
66
|
+
* The d-tag uses plaintext `ssg/<groupId>` since content is NIP-44 encrypted.
|
|
67
|
+
* Includes NIP-32 labels for SSG namespace and p-tags for each member.
|
|
41
68
|
*
|
|
42
|
-
* @param params - Group
|
|
69
|
+
* @param params - Group state parameters.
|
|
43
70
|
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
44
|
-
* @throws {Error} If groupId
|
|
71
|
+
* @throws {Error} If groupId is invalid, member pubkeys are malformed, or optional
|
|
72
|
+
* numeric fields are out of range.
|
|
45
73
|
*/
|
|
46
|
-
export function
|
|
74
|
+
export function buildGroupStateEvent(params) {
|
|
47
75
|
validateTagString(params.groupId, 'groupId');
|
|
48
|
-
validateTagString(params.name, 'name');
|
|
49
76
|
for (const m of params.members)
|
|
50
77
|
validatePubkey(m, 'member pubkey');
|
|
51
|
-
if (!Number.isInteger(params.rotationInterval) || params.rotationInterval <= 0) {
|
|
52
|
-
throw new Error(`Invalid rotationInterval: must be a positive integer, got ${params.rotationInterval}`);
|
|
53
|
-
}
|
|
54
|
-
if (params.wordCount !== 1 && params.wordCount !== 2 && params.wordCount !== 3) {
|
|
55
|
-
throw new Error(`Invalid wordCount: must be 1, 2, or 3, got ${params.wordCount}`);
|
|
56
|
-
}
|
|
57
78
|
const tags = [
|
|
58
|
-
['d', params.groupId],
|
|
59
|
-
['name', params.name],
|
|
79
|
+
['d', `ssg/${params.groupId}`],
|
|
60
80
|
...params.members.map((m) => ['p', m]),
|
|
61
|
-
['
|
|
62
|
-
['
|
|
63
|
-
['wordlist', params.wordlist],
|
|
81
|
+
['L', 'ssg'],
|
|
82
|
+
['l', 'group', 'ssg'],
|
|
64
83
|
];
|
|
65
|
-
if (params.
|
|
66
|
-
if (!Number.isInteger(params.
|
|
67
|
-
throw new Error(
|
|
84
|
+
if (params.rotationInterval !== undefined) {
|
|
85
|
+
if (!Number.isInteger(params.rotationInterval) || params.rotationInterval <= 0) {
|
|
86
|
+
throw new Error(`Invalid rotationInterval: must be a positive integer, got ${params.rotationInterval}`);
|
|
87
|
+
}
|
|
88
|
+
tags.push(['rotation', String(params.rotationInterval)]);
|
|
89
|
+
}
|
|
90
|
+
if (params.tolerance !== undefined) {
|
|
91
|
+
if (!Number.isInteger(params.tolerance) || params.tolerance <= 0) {
|
|
92
|
+
throw new Error(`Invalid tolerance: must be a positive integer, got ${params.tolerance}`);
|
|
68
93
|
}
|
|
94
|
+
tags.push(['tolerance', String(params.tolerance)]);
|
|
95
|
+
}
|
|
96
|
+
if (params.expiration !== undefined) {
|
|
97
|
+
validateExpiration(params.expiration);
|
|
69
98
|
tags.push(['expiration', String(params.expiration)]);
|
|
70
99
|
}
|
|
71
|
-
return { kind: KINDS.
|
|
100
|
+
return { kind: KINDS.groupState, content: params.encryptedContent, tags, created_at: now() };
|
|
72
101
|
}
|
|
73
102
|
/**
|
|
74
|
-
* Build an unsigned kind
|
|
103
|
+
* Build an unsigned kind 30078 stored signal event.
|
|
75
104
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* @throws {Error} If recipientPubkey or groupEventId are not valid 64-character hex strings.
|
|
79
|
-
*/
|
|
80
|
-
export function buildSeedDistributionEvent(params) {
|
|
81
|
-
validatePubkey(params.recipientPubkey, 'recipientPubkey');
|
|
82
|
-
validateEventId(params.groupEventId, 'groupEventId');
|
|
83
|
-
return {
|
|
84
|
-
kind: KINDS.seedDistribution,
|
|
85
|
-
content: params.encryptedContent,
|
|
86
|
-
tags: [
|
|
87
|
-
['p', params.recipientPubkey],
|
|
88
|
-
['e', params.groupEventId],
|
|
89
|
-
],
|
|
90
|
-
created_at: now(),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Build an unsigned kind 38801 member update event (add or remove).
|
|
105
|
+
* The d-tag uses a SHA-256 hash of the group ID (for privacy) scoped by signal type:
|
|
106
|
+
* `ssg/<SHA256(groupId)>:<signalType>`.
|
|
95
107
|
*
|
|
96
|
-
*
|
|
108
|
+
* Includes a 7-day NIP-40 expiration tag.
|
|
109
|
+
*
|
|
110
|
+
* @param params - Stored signal parameters.
|
|
97
111
|
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
98
|
-
* @throws {Error} If
|
|
112
|
+
* @throws {Error} If groupId or signalType are empty.
|
|
99
113
|
*/
|
|
100
|
-
export function
|
|
101
|
-
if (params.action !== 'add' && params.action !== 'remove') {
|
|
102
|
-
throw new Error(`Invalid action: must be 'add' or 'remove', got '${params.action}'`);
|
|
103
|
-
}
|
|
104
|
-
validatePubkey(params.memberPubkey, 'memberPubkey');
|
|
114
|
+
export function buildStoredSignalEvent(params) {
|
|
105
115
|
validateTagString(params.groupId, 'groupId');
|
|
116
|
+
validateTagString(params.signalType, 'signalType');
|
|
117
|
+
const hash = hashGroupId(params.groupId);
|
|
118
|
+
const createdAt = now();
|
|
119
|
+
const sevenDays = 7 * 24 * 60 * 60;
|
|
106
120
|
return {
|
|
107
|
-
kind: KINDS.
|
|
121
|
+
kind: KINDS.groupState,
|
|
108
122
|
content: params.encryptedContent,
|
|
109
123
|
tags: [
|
|
110
|
-
['d', params.
|
|
111
|
-
['
|
|
112
|
-
['p', params.memberPubkey],
|
|
113
|
-
['reseed', String(params.reseed)],
|
|
124
|
+
['d', `ssg/${hash}:${params.signalType}`],
|
|
125
|
+
['expiration', String(createdAt + sevenDays)],
|
|
114
126
|
],
|
|
115
|
-
created_at:
|
|
127
|
+
created_at: createdAt,
|
|
116
128
|
};
|
|
117
129
|
}
|
|
118
|
-
const VALID_RESEED_REASONS = new Set(['member_removed', 'compromise', 'scheduled', 'duress']);
|
|
119
130
|
/**
|
|
120
|
-
* Build an unsigned kind
|
|
131
|
+
* Build an unsigned kind 20078 ephemeral signal event.
|
|
132
|
+
*
|
|
133
|
+
* The d-tag uses a SHA-256 hash of the group ID (for privacy):
|
|
134
|
+
* `ssg/<SHA256(groupId)>`. A t-tag carries the signal type.
|
|
121
135
|
*
|
|
122
|
-
*
|
|
136
|
+
* No expiration tag — ephemeral events are not stored by relays.
|
|
137
|
+
*
|
|
138
|
+
* @param params - Signal parameters.
|
|
123
139
|
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
124
|
-
* @throws {Error} If
|
|
140
|
+
* @throws {Error} If groupId or signalType are empty.
|
|
125
141
|
*/
|
|
126
|
-
export function
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
142
|
+
export function buildSignalEvent(params) {
|
|
143
|
+
validateTagString(params.groupId, 'groupId');
|
|
144
|
+
validateTagString(params.signalType, 'signalType');
|
|
145
|
+
const hash = hashGroupId(params.groupId);
|
|
131
146
|
return {
|
|
132
|
-
kind: KINDS.
|
|
147
|
+
kind: KINDS.signal,
|
|
133
148
|
content: params.encryptedContent,
|
|
134
149
|
tags: [
|
|
135
|
-
['
|
|
136
|
-
['
|
|
150
|
+
['d', `ssg/${hash}`],
|
|
151
|
+
['t', params.signalType],
|
|
137
152
|
],
|
|
138
153
|
created_at: now(),
|
|
139
154
|
};
|
|
140
155
|
}
|
|
141
156
|
/**
|
|
142
|
-
* Build an unsigned kind
|
|
157
|
+
* Build an unsigned kind 14 rumour event for NIP-17 gift wrapping.
|
|
143
158
|
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
159
|
+
* The consumer must set the `pubkey` field before computing the event ID.
|
|
160
|
+
* The rumour is then sealed (NIP-44 encrypt + kind 13) and gift-wrapped
|
|
161
|
+
* (kind 1059) by the caller.
|
|
162
|
+
*
|
|
163
|
+
* @param params - Rumour parameters including recipient and subject.
|
|
164
|
+
* @returns An {@link UnsignedEvent} ready for NIP-59 wrapping.
|
|
165
|
+
* @throws {Error} If recipientPubkey is invalid, subject is empty, or groupEventId is invalid.
|
|
147
166
|
*/
|
|
148
|
-
export function
|
|
149
|
-
|
|
167
|
+
export function buildRumourEvent(params) {
|
|
168
|
+
validatePubkey(params.recipientPubkey, 'recipientPubkey');
|
|
169
|
+
validateTagString(params.subject, 'subject');
|
|
170
|
+
if (params.groupEventId !== undefined) {
|
|
171
|
+
validateEventId(params.groupEventId, 'groupEventId');
|
|
172
|
+
}
|
|
173
|
+
const tags = [
|
|
174
|
+
['p', params.recipientPubkey],
|
|
175
|
+
['subject', params.subject],
|
|
176
|
+
];
|
|
177
|
+
if (params.groupEventId !== undefined) {
|
|
178
|
+
tags.push(['e', params.groupEventId]);
|
|
179
|
+
}
|
|
150
180
|
return {
|
|
151
|
-
kind:
|
|
181
|
+
kind: 14,
|
|
152
182
|
content: params.encryptedContent,
|
|
153
|
-
tags
|
|
183
|
+
tags,
|
|
154
184
|
created_at: now(),
|
|
155
185
|
};
|
|
156
186
|
}
|
|
157
|
-
/**
|
|
158
|
-
* Build an unsigned kind 20800 beacon event.
|
|
159
|
-
*
|
|
160
|
-
* @param params - Beacon event parameters including groupId, encrypted content, and optional expiration.
|
|
161
|
-
* @returns An {@link UnsignedEvent} ready to be signed and published.
|
|
162
|
-
* @throws {Error} If groupId is invalid or expiration is not a non-negative integer.
|
|
163
|
-
*/
|
|
164
|
-
export function buildBeaconEvent(params) {
|
|
165
|
-
validateTagString(params.groupId, 'groupId');
|
|
166
|
-
const tags = [['h', params.groupId]];
|
|
167
|
-
if (params.expiration !== undefined) {
|
|
168
|
-
if (!Number.isInteger(params.expiration) || params.expiration < 0) {
|
|
169
|
-
throw new Error('expiration must be a non-negative integer');
|
|
170
|
-
}
|
|
171
|
-
tags.push(['expiration', String(params.expiration)]);
|
|
172
|
-
}
|
|
173
|
-
return { kind: KINDS.beacon, content: params.encryptedContent, tags, created_at: now() };
|
|
174
|
-
}
|
|
175
187
|
//# sourceMappingURL=nostr.js.map
|
package/dist/nostr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nostr.js","sourceRoot":"","sources":["../src/nostr.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nostr.js","sourceRoot":"","sources":["../src/nostr.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.js
CHANGED
|
@@ -401,6 +401,12 @@ export function applySyncMessage(group, msg, nowSec = Math.floor(Date.now() / 10
|
|
|
401
401
|
if (elapsed < -MAX_FUTURE_SKEW_SEC)
|
|
402
402
|
return group; // too far in the future
|
|
403
403
|
}
|
|
404
|
+
// ── Future timestamp bound for stored mutation messages ────
|
|
405
|
+
// Prevents consumedOpsFloor poisoning: an attacker with admin access could
|
|
406
|
+
// craft a message with a far-future timestamp, trigger eviction, and set
|
|
407
|
+
// the floor to a future value, silently rejecting subsequent legitimate messages.
|
|
408
|
+
if (STORED_MESSAGE_TYPES.has(msg.type) && msg.timestamp > nowSec + MAX_FUTURE_SKEW_SEC)
|
|
409
|
+
return group;
|
|
404
410
|
// Cross-check: liveness-checkin sender must match the pubkey in the message
|
|
405
411
|
if (msg.type === 'liveness-checkin' && sender && msg.pubkey !== sender)
|
|
406
412
|
return group;
|
package/dist/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|