@unicitylabs/nostr-js-sdk 0.3.3 → 0.4.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/README.md +79 -13
- package/dist/browser/index.js +2219 -1905
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.min.js +6 -6
- package/dist/browser/index.min.js.map +1 -1
- package/dist/browser/index.umd.js +2225 -1904
- package/dist/browser/index.umd.js.map +1 -1
- package/dist/browser/index.umd.min.js +6 -6
- package/dist/browser/index.umd.min.js.map +1 -1
- package/dist/cjs/client/NostrClient.js +106 -19
- package/dist/cjs/client/NostrClient.js.map +1 -1
- package/dist/cjs/nametag/NametagBinding.js +131 -9
- package/dist/cjs/nametag/NametagBinding.js.map +1 -1
- package/dist/cjs/nametag/NametagUtils.js +140 -0
- package/dist/cjs/nametag/NametagUtils.js.map +1 -1
- package/dist/esm/client/NostrClient.js +106 -19
- package/dist/esm/client/NostrClient.js.map +1 -1
- package/dist/esm/nametag/NametagBinding.js +128 -9
- package/dist/esm/nametag/NametagBinding.js.map +1 -1
- package/dist/esm/nametag/NametagUtils.js +104 -1
- package/dist/esm/nametag/NametagUtils.js.map +1 -1
- package/dist/types/client/NostrClient.d.ts +50 -1
- package/dist/types/client/NostrClient.d.ts.map +1 -1
- package/dist/types/nametag/NametagBinding.d.ts +63 -1
- package/dist/types/nametag/NametagBinding.d.ts.map +1 -1
- package/dist/types/nametag/NametagUtils.d.ts +28 -0
- package/dist/types/nametag/NametagUtils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -42,6 +42,7 @@ const Event_js_1 = require("../protocol/Event.js");
|
|
|
42
42
|
const EventKinds = __importStar(require("../protocol/EventKinds.js"));
|
|
43
43
|
const WebSocketAdapter_js_1 = require("./WebSocketAdapter.js");
|
|
44
44
|
const NIP17 = __importStar(require("../messaging/nip17.js"));
|
|
45
|
+
const NametagBinding_js_1 = require("../nametag/NametagBinding.js");
|
|
45
46
|
/** Connection timeout in milliseconds */
|
|
46
47
|
const CONNECTION_TIMEOUT_MS = 30000;
|
|
47
48
|
/** Default options */
|
|
@@ -693,13 +694,36 @@ class NostrClient {
|
|
|
693
694
|
}
|
|
694
695
|
/**
|
|
695
696
|
* Publish a nametag binding.
|
|
697
|
+
* Checks for existing claims by other pubkeys before publishing.
|
|
696
698
|
* @param nametagId Nametag identifier
|
|
697
699
|
* @param unicityAddress Unicity address
|
|
698
700
|
* @returns Promise that resolves with success status
|
|
701
|
+
* @throws Error if nametag is invalid or already claimed by another pubkey
|
|
699
702
|
*/
|
|
700
|
-
async publishNametagBinding(nametagId, unicityAddress) {
|
|
701
|
-
|
|
702
|
-
const
|
|
703
|
+
async publishNametagBinding(nametagId, unicityAddress, identity) {
|
|
704
|
+
// Check if already claimed by another pubkey
|
|
705
|
+
const existingOwner = await this.queryPubkeyByNametag(nametagId);
|
|
706
|
+
if (existingOwner && existingOwner !== this.keyManager.getPublicKeyHex()) {
|
|
707
|
+
throw new Error(`Nametag "${nametagId}" is already claimed by another pubkey`);
|
|
708
|
+
}
|
|
709
|
+
const event = await (0, NametagBinding_js_1.createBindingEvent)(this.keyManager, nametagId, unicityAddress, undefined, identity);
|
|
710
|
+
try {
|
|
711
|
+
await this.publishEvent(event);
|
|
712
|
+
return true;
|
|
713
|
+
}
|
|
714
|
+
catch {
|
|
715
|
+
return false;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
/**
|
|
719
|
+
* Publish a base identity binding (no nametag).
|
|
720
|
+
* Uses d-tag = SHA256('unicity:identity:' + nostrPubkey) so each wallet
|
|
721
|
+
* has exactly one identity binding. Subsequent calls replace the previous event.
|
|
722
|
+
* @param identity Identity parameters (publicKey, l1Address, directAddress)
|
|
723
|
+
* @returns true if published successfully
|
|
724
|
+
*/
|
|
725
|
+
async publishIdentityBinding(identity) {
|
|
726
|
+
const event = (0, NametagBinding_js_1.createIdentityBindingEvent)(this.keyManager, identity);
|
|
703
727
|
try {
|
|
704
728
|
await this.publishEvent(event);
|
|
705
729
|
return true;
|
|
@@ -749,36 +773,99 @@ class NostrClient {
|
|
|
749
773
|
}
|
|
750
774
|
}
|
|
751
775
|
/**
|
|
752
|
-
* Query
|
|
753
|
-
*
|
|
754
|
-
*
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
776
|
+
* Query binding events with first-seen-wins anti-hijacking resolution.
|
|
777
|
+
*
|
|
778
|
+
* Strategy: first-seen-wins across authors, latest-wins for same author.
|
|
779
|
+
* - Across authors: the pubkey that first published wins (earliest created_at)
|
|
780
|
+
* - Same author: the most recent event is used (latest created_at = most complete data)
|
|
781
|
+
* - Tie-breaking: deterministic by lexicographic pubkey comparison (lowest wins)
|
|
782
|
+
*
|
|
783
|
+
* Events with invalid signatures are silently skipped to prevent relay injection attacks.
|
|
784
|
+
*
|
|
785
|
+
* Known limitations:
|
|
786
|
+
* - Timestamps are self-reported (NIP-01). An attacker can set created_at to 0.
|
|
787
|
+
* Chain-anchored proof of registration time is the only reliable defense.
|
|
788
|
+
* - TOCTOU: between conflict check and publish, another user can claim the same nametag.
|
|
789
|
+
* This is inherent to Nostr's eventually-consistent relay model.
|
|
790
|
+
*
|
|
791
|
+
* @param filter Subscription filter
|
|
792
|
+
* @param extractResult Callback to extract the desired result from the winning event
|
|
793
|
+
* @returns Promise resolving to the extracted result, or null
|
|
794
|
+
*/
|
|
795
|
+
queryWithFirstSeenWins(filter, extractResult) {
|
|
759
796
|
return new Promise((resolve) => {
|
|
797
|
+
let subscriptionId = '';
|
|
760
798
|
const timeoutId = setTimeout(() => {
|
|
761
|
-
|
|
799
|
+
if (subscriptionId)
|
|
800
|
+
this.unsubscribe(subscriptionId);
|
|
762
801
|
resolve(null);
|
|
763
802
|
}, this.queryTimeoutMs);
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
const subscriptionId = this.subscribe(filter, {
|
|
803
|
+
const authors = new Map();
|
|
804
|
+
subscriptionId = this.subscribe(filter, {
|
|
767
805
|
onEvent: (event) => {
|
|
768
|
-
//
|
|
769
|
-
if (event.
|
|
770
|
-
|
|
771
|
-
|
|
806
|
+
// Verify signature to prevent relay injection of forged events (#4)
|
|
807
|
+
if (!event.verify())
|
|
808
|
+
return;
|
|
809
|
+
const existing = authors.get(event.pubkey);
|
|
810
|
+
if (!existing) {
|
|
811
|
+
authors.set(event.pubkey, { firstSeen: event.created_at, latestEvent: event });
|
|
812
|
+
}
|
|
813
|
+
else {
|
|
814
|
+
if (event.created_at < existing.firstSeen) {
|
|
815
|
+
existing.firstSeen = event.created_at;
|
|
816
|
+
}
|
|
817
|
+
if (event.created_at > existing.latestEvent.created_at) {
|
|
818
|
+
existing.latestEvent = event;
|
|
819
|
+
}
|
|
772
820
|
}
|
|
773
821
|
},
|
|
774
822
|
onEndOfStoredEvents: () => {
|
|
775
823
|
clearTimeout(timeoutId);
|
|
776
824
|
this.unsubscribe(subscriptionId);
|
|
777
|
-
|
|
825
|
+
let winnerEntry = null;
|
|
826
|
+
let winnerPubkey = '';
|
|
827
|
+
for (const [pubkey, entry] of authors) {
|
|
828
|
+
if (!winnerEntry
|
|
829
|
+
|| entry.firstSeen < winnerEntry.firstSeen
|
|
830
|
+
|| (entry.firstSeen === winnerEntry.firstSeen && pubkey < winnerPubkey)) {
|
|
831
|
+
winnerEntry = entry;
|
|
832
|
+
winnerPubkey = pubkey;
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
resolve(winnerEntry ? extractResult(winnerEntry.latestEvent) : null);
|
|
778
836
|
},
|
|
779
837
|
});
|
|
780
838
|
});
|
|
781
839
|
}
|
|
840
|
+
/**
|
|
841
|
+
* Query for a public key by nametag.
|
|
842
|
+
* Uses first-seen-wins anti-hijacking resolution.
|
|
843
|
+
* @param nametagId Nametag identifier
|
|
844
|
+
* @returns Promise that resolves with the public key hex, or null if not found
|
|
845
|
+
*/
|
|
846
|
+
async queryPubkeyByNametag(nametagId) {
|
|
847
|
+
return this.queryWithFirstSeenWins((0, NametagBinding_js_1.createNametagToPubkeyFilter)(nametagId), (event) => event.pubkey);
|
|
848
|
+
}
|
|
849
|
+
/**
|
|
850
|
+
* Query for full binding info by nametag.
|
|
851
|
+
* Returns extended identity fields (chain pubkey, addresses, etc.) when available.
|
|
852
|
+
* Uses first-seen-wins across authors, latest-wins for same author.
|
|
853
|
+
* @param nametagId Nametag identifier
|
|
854
|
+
* @returns Promise that resolves with BindingInfo, or null if not found
|
|
855
|
+
*/
|
|
856
|
+
async queryBindingByNametag(nametagId) {
|
|
857
|
+
return this.queryWithFirstSeenWins((0, NametagBinding_js_1.createNametagToPubkeyFilter)(nametagId), NametagBinding_js_1.parseBindingInfo);
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Query for binding info by address (reverse lookup).
|
|
861
|
+
* Supports DIRECT://, PROXY://, alpha1..., or chain pubkey lookups.
|
|
862
|
+
* Uses first-seen-wins across authors, latest-wins for same author.
|
|
863
|
+
* @param address Address string
|
|
864
|
+
* @returns Promise that resolves with BindingInfo, or null if not found
|
|
865
|
+
*/
|
|
866
|
+
async queryBindingByAddress(address) {
|
|
867
|
+
return this.queryWithFirstSeenWins((0, NametagBinding_js_1.createAddressToBindingFilter)(address), NametagBinding_js_1.parseBindingInfo);
|
|
868
|
+
}
|
|
782
869
|
/**
|
|
783
870
|
* Create and publish a signed event.
|
|
784
871
|
* @param data Unsigned event data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NostrClient.js","sourceRoot":"","sources":["../../../src/client/NostrClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NostrClient.js","sourceRoot":"","sources":["../../../src/client/NostrClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,8 +38,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
38
38
|
})();
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.createBindingEvent = createBindingEvent;
|
|
41
|
+
exports.createIdentityBindingEvent = createIdentityBindingEvent;
|
|
41
42
|
exports.createNametagToPubkeyFilter = createNametagToPubkeyFilter;
|
|
43
|
+
exports.createAddressToBindingFilter = createAddressToBindingFilter;
|
|
42
44
|
exports.createPubkeyToNametagFilter = createPubkeyToNametagFilter;
|
|
45
|
+
exports.parseBindingInfo = parseBindingInfo;
|
|
43
46
|
exports.parseNametagHashFromEvent = parseNametagHashFromEvent;
|
|
44
47
|
exports.parseAddressFromEvent = parseAddressFromEvent;
|
|
45
48
|
exports.isValidBindingEvent = isValidBindingEvent;
|
|
@@ -47,7 +50,7 @@ const Event_js_1 = require("../protocol/Event.js");
|
|
|
47
50
|
const Filter_js_1 = require("../protocol/Filter.js");
|
|
48
51
|
const EventKinds = __importStar(require("../protocol/EventKinds.js"));
|
|
49
52
|
const NametagUtils = __importStar(require("./NametagUtils.js"));
|
|
50
|
-
/** Default country code for phone number normalization */
|
|
53
|
+
/** Default country code for phone number normalization (shared with NametagUtils) */
|
|
51
54
|
const DEFAULT_COUNTRY = 'US';
|
|
52
55
|
/**
|
|
53
56
|
* Create a nametag binding event.
|
|
@@ -65,27 +68,99 @@ const DEFAULT_COUNTRY = 'US';
|
|
|
65
68
|
* @param nametagId Nametag identifier (phone number or username)
|
|
66
69
|
* @param unicityAddress Unicity blockchain address
|
|
67
70
|
* @param defaultCountry Default country code for phone normalization
|
|
71
|
+
* @param identity Optional extended identity parameters
|
|
68
72
|
* @returns Signed event
|
|
69
73
|
*/
|
|
70
|
-
async function createBindingEvent(keyManager, nametagId, unicityAddress, defaultCountry = DEFAULT_COUNTRY) {
|
|
74
|
+
async function createBindingEvent(keyManager, nametagId, unicityAddress, defaultCountry = DEFAULT_COUNTRY, identity) {
|
|
75
|
+
if (!NametagUtils.isValidNametag(nametagId, defaultCountry)) {
|
|
76
|
+
throw new Error(`Invalid nametag: "${nametagId}". Must be 3-20 chars [a-z0-9_-] or a valid phone number.`);
|
|
77
|
+
}
|
|
71
78
|
const hashedNametag = NametagUtils.hashNametag(nametagId, defaultCountry);
|
|
72
79
|
const content = {
|
|
73
80
|
nametag_hash: hashedNametag,
|
|
74
81
|
address: unicityAddress,
|
|
75
|
-
verified: Date.now(),
|
|
82
|
+
verified: Math.floor(Date.now() / 1000),
|
|
76
83
|
};
|
|
84
|
+
const tags = [
|
|
85
|
+
['d', hashedNametag],
|
|
86
|
+
['nametag', hashedNametag],
|
|
87
|
+
['t', hashedNametag],
|
|
88
|
+
['address', unicityAddress],
|
|
89
|
+
['t', NametagUtils.hashAddressForTag(unicityAddress)],
|
|
90
|
+
];
|
|
91
|
+
// Add extended identity fields when provided
|
|
92
|
+
if (identity) {
|
|
93
|
+
const encryptedNametag = await NametagUtils.encryptNametag(nametagId, keyManager.getPrivateKeyHex());
|
|
94
|
+
content.encrypted_nametag = encryptedNametag;
|
|
95
|
+
// Plaintext nametag is intentionally stored in content for public resolution.
|
|
96
|
+
// Nametags must be publicly resolvable (sending to @alice requires knowing her
|
|
97
|
+
// addresses). Tag hashing provides relay-level privacy (operators see hashes in
|
|
98
|
+
// indexed tags, not plaintext). The encrypted copy enables private key recovery.
|
|
99
|
+
content.nametag = nametagId;
|
|
100
|
+
if (identity.publicKey) {
|
|
101
|
+
content.public_key = identity.publicKey;
|
|
102
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.publicKey)]);
|
|
103
|
+
tags.push(['pubkey', identity.publicKey]);
|
|
104
|
+
}
|
|
105
|
+
if (identity.l1Address) {
|
|
106
|
+
content.l1_address = identity.l1Address;
|
|
107
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.l1Address)]);
|
|
108
|
+
tags.push(['l1', identity.l1Address]);
|
|
109
|
+
}
|
|
110
|
+
if (identity.directAddress) {
|
|
111
|
+
content.direct_address = identity.directAddress;
|
|
112
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.directAddress)]);
|
|
113
|
+
}
|
|
114
|
+
if (identity.proxyAddress) {
|
|
115
|
+
content.proxy_address = identity.proxyAddress;
|
|
116
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.proxyAddress)]);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
77
119
|
const event = Event_js_1.Event.create(keyManager, {
|
|
78
120
|
kind: EventKinds.APP_DATA,
|
|
79
|
-
tags
|
|
80
|
-
['d', hashedNametag],
|
|
81
|
-
['nametag', hashedNametag],
|
|
82
|
-
['t', hashedNametag],
|
|
83
|
-
['address', unicityAddress],
|
|
84
|
-
],
|
|
121
|
+
tags,
|
|
85
122
|
content: JSON.stringify(content),
|
|
86
123
|
});
|
|
87
124
|
return event;
|
|
88
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a base identity binding event (no nametag).
|
|
128
|
+
* Uses d-tag = SHA256('unicity:identity:' + nostrPubkey) so each wallet
|
|
129
|
+
* has exactly one identity binding event.
|
|
130
|
+
*
|
|
131
|
+
* @param keyManager Key manager with signing keys
|
|
132
|
+
* @param identity Identity parameters (publicKey, l1Address, directAddress)
|
|
133
|
+
* @returns Signed event
|
|
134
|
+
*/
|
|
135
|
+
function createIdentityBindingEvent(keyManager, identity) {
|
|
136
|
+
const nostrPubkey = keyManager.getPublicKeyHex();
|
|
137
|
+
const dTag = NametagUtils.sha256Hex('unicity:identity:' + nostrPubkey);
|
|
138
|
+
const content = {};
|
|
139
|
+
const tags = [
|
|
140
|
+
['d', dTag],
|
|
141
|
+
];
|
|
142
|
+
if (identity.publicKey) {
|
|
143
|
+
content.public_key = identity.publicKey;
|
|
144
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.publicKey)]);
|
|
145
|
+
}
|
|
146
|
+
if (identity.l1Address) {
|
|
147
|
+
content.l1_address = identity.l1Address;
|
|
148
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.l1Address)]);
|
|
149
|
+
}
|
|
150
|
+
if (identity.directAddress) {
|
|
151
|
+
content.direct_address = identity.directAddress;
|
|
152
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.directAddress)]);
|
|
153
|
+
}
|
|
154
|
+
if (identity.proxyAddress) {
|
|
155
|
+
content.proxy_address = identity.proxyAddress;
|
|
156
|
+
tags.push(['t', NametagUtils.hashAddressForTag(identity.proxyAddress)]);
|
|
157
|
+
}
|
|
158
|
+
return Event_js_1.Event.create(keyManager, {
|
|
159
|
+
kind: EventKinds.APP_DATA,
|
|
160
|
+
tags,
|
|
161
|
+
content: JSON.stringify(content),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
89
164
|
/**
|
|
90
165
|
* Create a filter to query pubkey by nametag.
|
|
91
166
|
* Query direction: nametag → pubkey
|
|
@@ -101,6 +176,20 @@ function createNametagToPubkeyFilter(nametagId, defaultCountry = DEFAULT_COUNTRY
|
|
|
101
176
|
.tTags(hashedNametag)
|
|
102
177
|
.build();
|
|
103
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Create a filter to query binding events by address hash.
|
|
181
|
+
* Query direction: address → binding event
|
|
182
|
+
*
|
|
183
|
+
* @param address Address string (DIRECT://..., alpha1..., PROXY://..., or chain pubkey)
|
|
184
|
+
* @returns Filter for nametag binding events
|
|
185
|
+
*/
|
|
186
|
+
function createAddressToBindingFilter(address) {
|
|
187
|
+
const hashedAddress = NametagUtils.hashAddressForTag(address);
|
|
188
|
+
return Filter_js_1.Filter.builder()
|
|
189
|
+
.kinds(EventKinds.APP_DATA)
|
|
190
|
+
.tTags(hashedAddress)
|
|
191
|
+
.build();
|
|
192
|
+
}
|
|
104
193
|
/**
|
|
105
194
|
* Create a filter to query nametags by pubkey.
|
|
106
195
|
* Query direction: pubkey → nametags
|
|
@@ -115,6 +204,39 @@ function createPubkeyToNametagFilter(nostrPubkey) {
|
|
|
115
204
|
.limit(10)
|
|
116
205
|
.build();
|
|
117
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Parse binding info from an event.
|
|
209
|
+
* Extracts both basic and extended identity fields from event content when possible.
|
|
210
|
+
* On parse failure, returns minimal binding info.
|
|
211
|
+
*
|
|
212
|
+
* @param event Binding event
|
|
213
|
+
* @returns BindingInfo with parsed fields when possible, or minimal info if content cannot be parsed
|
|
214
|
+
*/
|
|
215
|
+
function parseBindingInfo(event) {
|
|
216
|
+
try {
|
|
217
|
+
const content = JSON.parse(event.content);
|
|
218
|
+
return {
|
|
219
|
+
transportPubkey: event.pubkey,
|
|
220
|
+
publicKey: content.public_key,
|
|
221
|
+
l1Address: content.l1_address,
|
|
222
|
+
directAddress: content.direct_address,
|
|
223
|
+
proxyAddress: content.proxy_address,
|
|
224
|
+
nametag: content.nametag,
|
|
225
|
+
timestamp: event.created_at * 1000,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
// Content is not valid JSON — return minimal info.
|
|
230
|
+
// This can happen with old-format events or data corruption.
|
|
231
|
+
if (typeof console !== 'undefined') {
|
|
232
|
+
console.warn(`[nostr-sdk] Failed to parse binding event content (event ${event.id?.slice(0, 8)}):`, e);
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
transportPubkey: event.pubkey,
|
|
236
|
+
timestamp: event.created_at * 1000,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
118
240
|
/**
|
|
119
241
|
* Parse the hashed nametag from a binding event.
|
|
120
242
|
* Tries tags first, then content JSON.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NametagBinding.js","sourceRoot":"","sources":["../../../src/nametag/NametagBinding.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"NametagBinding.js","sourceRoot":"","sources":["../../../src/nametag/NametagBinding.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkFH,gDAmEC;AAWD,gEAkCC;AAUD,kEAUC;AASD,oEAOC;AASD,kEAMC;AAUD,4CAuBC;AASD,8DAoBC;AASD,sDAcC;AASD,kDAuBC;AAvWD,mDAA6C;AAC7C,qDAA+C;AAC/C,sEAAwD;AACxD,gEAAkD;AAElD,qFAAqF;AACrF,MAAM,eAAe,GAAG,IAAI,CAAC;AAsD7B;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,kBAAkB,CACtC,UAA2B,EAC3B,SAAiB,EACjB,cAAsB,EACtB,iBAAyB,eAAe,EACxC,QAAgC;IAEhC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,2DAA2D,CAAC,CAAC;IAC7G,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAmB;QAC9B,YAAY,EAAE,aAAa;QAC3B,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACxC,CAAC;IAEF,MAAM,IAAI,GAAe;QACvB,CAAC,GAAG,EAAE,aAAa,CAAC;QACpB,CAAC,SAAS,EAAE,aAAa,CAAC;QAC1B,CAAC,GAAG,EAAE,aAAa,CAAC;QACpB,CAAC,SAAS,EAAE,cAAc,CAAC;QAC3B,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;KACtD,CAAC;IAEF,6CAA6C;IAC7C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CACxD,SAAS,EACT,UAAU,CAAC,gBAAgB,EAAE,CAC9B,CAAC;QACF,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC7C,8EAA8E;QAC9E,+EAA+E;QAC/E,gFAAgF;QAChF,iFAAiF;QACjF,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;QAE5B,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,gBAAK,CAAC,MAAM,CAAC,UAAU,EAAE;QACrC,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACjC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,0BAA0B,CACxC,UAA2B,EAC3B,QAA+B;IAE/B,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,mBAAmB,GAAG,WAAW,CAAC,CAAC;IAEvE,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAe;QACvB,CAAC,GAAG,EAAE,IAAI,CAAC;KACZ,CAAC;IAEF,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,gBAAK,CAAC,MAAM,CAAC,UAAU,EAAE;QAC9B,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,2BAA2B,CACzC,SAAiB,EACjB,iBAAyB,eAAe;IAExC,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAE1E,OAAO,kBAAM,CAAC,OAAO,EAAE;SACpB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC1B,KAAK,CAAC,aAAa,CAAC;SACpB,KAAK,EAAE,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,4BAA4B,CAAC,OAAe;IAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO,kBAAM,CAAC,OAAO,EAAE;SACpB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC1B,KAAK,CAAC,aAAa,CAAC;SACpB,KAAK,EAAE,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,kBAAM,CAAC,OAAO,EAAE;SACpB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC1B,OAAO,CAAC,WAAW,CAAC;SACpB,KAAK,CAAC,EAAE,CAAC;SACT,KAAK,EAAE,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,KAAY;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QAC5D,OAAO;YACL,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,aAAa,EAAE,OAAO,CAAC,cAAc;YACrC,YAAY,EAAE,OAAO,CAAC,aAAa;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;SACnC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,mDAAmD;QACnD,6DAA6D;QAC7D,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,4DAA4D,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC;QACD,OAAO;YACL,eAAe,EAAE,KAAK,CAAC,MAAM;YAC7B,SAAS,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;SACnC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CAAC,KAAY;IACpD,0BAA0B;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,cAAc;IACd,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QAC5D,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,KAAY;IAChD,0BAA0B;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QAC5D,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,KAAY;IAC9C,mBAAmB;IACnB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -3,17 +3,84 @@
|
|
|
3
3
|
* NametagUtils - Privacy-preserving nametag normalization and hashing.
|
|
4
4
|
* Supports phone number normalization to E.164 format.
|
|
5
5
|
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
6
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
40
|
exports.NAMETAG_MAX_LENGTH = exports.NAMETAG_MIN_LENGTH = void 0;
|
|
41
|
+
exports.sha256Hex = sha256Hex;
|
|
8
42
|
exports.normalizeNametag = normalizeNametag;
|
|
9
43
|
exports.hashNametag = hashNametag;
|
|
10
44
|
exports.areSameNametag = areSameNametag;
|
|
11
45
|
exports.formatForDisplay = formatForDisplay;
|
|
12
46
|
exports.isPhoneNumber = isPhoneNumber;
|
|
13
47
|
exports.isValidNametag = isValidNametag;
|
|
48
|
+
exports.hashAddressForTag = hashAddressForTag;
|
|
49
|
+
exports.encryptNametag = encryptNametag;
|
|
50
|
+
exports.decryptNametag = decryptNametag;
|
|
14
51
|
const sha256_1 = require("@noble/hashes/sha256");
|
|
52
|
+
const hkdf_1 = require("@noble/hashes/hkdf");
|
|
15
53
|
const utils_1 = require("@noble/hashes/utils");
|
|
16
54
|
const libphonenumber_js_1 = require("libphonenumber-js");
|
|
55
|
+
/**
|
|
56
|
+
* Get the Web Crypto API (works in both Node.js and browser).
|
|
57
|
+
*/
|
|
58
|
+
async function getWebCrypto() {
|
|
59
|
+
if (typeof globalThis.crypto?.subtle !== 'undefined') {
|
|
60
|
+
return globalThis.crypto;
|
|
61
|
+
}
|
|
62
|
+
// Node.js environment - import webcrypto
|
|
63
|
+
const nodeCrypto = await Promise.resolve().then(() => __importStar(require('crypto')));
|
|
64
|
+
return nodeCrypto.webcrypto;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Base64 encode (works in both Node.js and browser).
|
|
68
|
+
*/
|
|
69
|
+
function toBase64(bytes) {
|
|
70
|
+
if (typeof Buffer !== 'undefined') {
|
|
71
|
+
return Buffer.from(bytes).toString('base64');
|
|
72
|
+
}
|
|
73
|
+
return btoa(String.fromCharCode(...Array.from(bytes)));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Base64 decode (works in both Node.js and browser).
|
|
77
|
+
*/
|
|
78
|
+
function fromBase64(base64) {
|
|
79
|
+
if (typeof Buffer !== 'undefined') {
|
|
80
|
+
return new Uint8Array(Buffer.from(base64, 'base64'));
|
|
81
|
+
}
|
|
82
|
+
return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
|
|
83
|
+
}
|
|
17
84
|
/** Salt prefix for nametag hashing */
|
|
18
85
|
const NAMETAG_SALT = 'unicity:nametag:';
|
|
19
86
|
/** Minimum nametag length (after normalization) */
|
|
@@ -22,6 +89,8 @@ exports.NAMETAG_MIN_LENGTH = 3;
|
|
|
22
89
|
exports.NAMETAG_MAX_LENGTH = 20;
|
|
23
90
|
/** Default country code for phone number normalization */
|
|
24
91
|
const DEFAULT_COUNTRY = 'US';
|
|
92
|
+
/** Salt prefix for address hashing */
|
|
93
|
+
const ADDRESS_SALT = 'unicity:address:';
|
|
25
94
|
/**
|
|
26
95
|
* Compute SHA-256 hash of a string.
|
|
27
96
|
* @param input String to hash
|
|
@@ -176,4 +245,75 @@ function isValidNametag(nametag, defaultCountry = DEFAULT_COUNTRY) {
|
|
|
176
245
|
const pattern = new RegExp(`^[a-z0-9_-]{${exports.NAMETAG_MIN_LENGTH},${exports.NAMETAG_MAX_LENGTH}}$`);
|
|
177
246
|
return pattern.test(normalized);
|
|
178
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Hash an address for use as an indexed relay tag.
|
|
250
|
+
* Enables reverse lookup: address → binding event.
|
|
251
|
+
* @param address Address string (e.g., DIRECT://..., alpha1..., PROXY://...)
|
|
252
|
+
* @returns Hex-encoded SHA-256 hash
|
|
253
|
+
*/
|
|
254
|
+
function hashAddressForTag(address) {
|
|
255
|
+
return sha256Hex(ADDRESS_SALT + address);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Derive an AES-256 encryption key from a private key using HKDF-SHA256.
|
|
259
|
+
* @param privateKeyHex Hex-encoded private key
|
|
260
|
+
* @returns 32-byte derived key
|
|
261
|
+
*/
|
|
262
|
+
function deriveNametagEncryptionKey(privateKeyHex) {
|
|
263
|
+
const privateKeyBytes = hexToBytes(privateKeyHex);
|
|
264
|
+
const saltInput = new TextEncoder().encode('sphere-nametag-salt');
|
|
265
|
+
const salt = (0, sha256_1.sha256)(saltInput);
|
|
266
|
+
const info = new TextEncoder().encode('nametag-encryption');
|
|
267
|
+
return (0, hkdf_1.hkdf)(sha256_1.sha256, privateKeyBytes, salt, info, 32);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Convert hex string to Uint8Array.
|
|
271
|
+
*/
|
|
272
|
+
function hexToBytes(hex) {
|
|
273
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
274
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
275
|
+
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
|
|
276
|
+
}
|
|
277
|
+
return bytes;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Encrypt a nametag with AES-GCM using a key derived from the private key.
|
|
281
|
+
* Enables nametag recovery on wallet import.
|
|
282
|
+
* @param nametag Plain text nametag
|
|
283
|
+
* @param privateKeyHex Hex-encoded private key for key derivation
|
|
284
|
+
* @returns Base64-encoded encrypted data (IV + ciphertext + auth tag)
|
|
285
|
+
*/
|
|
286
|
+
async function encryptNametag(nametag, privateKeyHex) {
|
|
287
|
+
const webCrypto = await getWebCrypto();
|
|
288
|
+
const key = deriveNametagEncryptionKey(privateKeyHex);
|
|
289
|
+
const iv = webCrypto.getRandomValues(new Uint8Array(12));
|
|
290
|
+
const data = new TextEncoder().encode(nametag);
|
|
291
|
+
const cryptoKey = await webCrypto.subtle.importKey('raw', new Uint8Array(key).buffer, { name: 'AES-GCM' }, false, ['encrypt']);
|
|
292
|
+
const encrypted = await webCrypto.subtle.encrypt({ name: 'AES-GCM', iv: new Uint8Array(iv).buffer }, cryptoKey, new Uint8Array(data).buffer);
|
|
293
|
+
const combined = new Uint8Array(iv.length + encrypted.byteLength);
|
|
294
|
+
combined.set(iv, 0);
|
|
295
|
+
combined.set(new Uint8Array(encrypted), iv.length);
|
|
296
|
+
return toBase64(combined);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Decrypt a nametag encrypted with encryptNametag().
|
|
300
|
+
* @param encryptedBase64 Base64-encoded encrypted data (IV + ciphertext + auth tag)
|
|
301
|
+
* @param privateKeyHex Hex-encoded private key for key derivation
|
|
302
|
+
* @returns Decrypted nametag, or null if decryption fails (wrong key)
|
|
303
|
+
*/
|
|
304
|
+
async function decryptNametag(encryptedBase64, privateKeyHex) {
|
|
305
|
+
try {
|
|
306
|
+
const webCrypto = await getWebCrypto();
|
|
307
|
+
const key = deriveNametagEncryptionKey(privateKeyHex);
|
|
308
|
+
const combined = fromBase64(encryptedBase64);
|
|
309
|
+
const iv = combined.slice(0, 12);
|
|
310
|
+
const ciphertext = combined.slice(12);
|
|
311
|
+
const cryptoKey = await webCrypto.subtle.importKey('raw', new Uint8Array(key).buffer, { name: 'AES-GCM' }, false, ['decrypt']);
|
|
312
|
+
const decrypted = await webCrypto.subtle.decrypt({ name: 'AES-GCM', iv: new Uint8Array(iv).buffer }, cryptoKey, new Uint8Array(ciphertext).buffer);
|
|
313
|
+
return new TextDecoder().decode(decrypted);
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
179
319
|
//# sourceMappingURL=NametagUtils.js.map
|