L4: generate per-install EIP-6963 provider UUID
Replace the hardcoded UUID with a per-install UUID generated via crypto.randomUUID() and persisted in chrome.storage.local. The content script sends the UUID to the inpage script via postMessage, which updates providerInfo and re-announces the provider.
This commit is contained in:
@@ -13,6 +13,23 @@ if (typeof browser !== "undefined") {
|
|||||||
(document.head || document.documentElement).appendChild(script);
|
(document.head || document.documentElement).appendChild(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Generate a stable per-install provider UUID for EIP-6963 and send it to
|
||||||
|
// the inpage script via postMessage so it can update providerInfo.
|
||||||
|
const storageApi =
|
||||||
|
typeof browser !== "undefined" ? browser.storage : chrome.storage;
|
||||||
|
|
||||||
|
storageApi.local.get("providerUUID", (res) => {
|
||||||
|
let uuid = res.providerUUID;
|
||||||
|
if (!uuid) {
|
||||||
|
uuid = crypto.randomUUID();
|
||||||
|
storageApi.local.set({ providerUUID: uuid });
|
||||||
|
}
|
||||||
|
window.postMessage(
|
||||||
|
{ type: "AUTISTMASK_PROVIDER_UUID", uuid },
|
||||||
|
"*",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
// Relay requests from the page to the background script
|
// Relay requests from the page to the background script
|
||||||
window.addEventListener("message", (event) => {
|
window.addEventListener("message", (event) => {
|
||||||
if (event.source !== window) return;
|
if (event.source !== window) return;
|
||||||
|
|||||||
@@ -156,7 +156,7 @@
|
|||||||
);
|
);
|
||||||
|
|
||||||
const providerInfo = {
|
const providerInfo = {
|
||||||
uuid: "f3c5b2a1-8d4e-4f6a-9c7b-1e2d3a4b5c6d",
|
uuid: crypto.randomUUID(),
|
||||||
name: "AutistMask",
|
name: "AutistMask",
|
||||||
icon: ICON_SVG,
|
icon: ICON_SVG,
|
||||||
rdns: "berlin.sneak.autistmask",
|
rdns: "berlin.sneak.autistmask",
|
||||||
@@ -170,6 +170,15 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Accept a stable per-install UUID from the content script.
|
||||||
|
// Re-announce with the updated providerInfo so dApps see the correct UUID.
|
||||||
|
window.addEventListener("message", (event) => {
|
||||||
|
if (event.source !== window) return;
|
||||||
|
if (event.data?.type !== "AUTISTMASK_PROVIDER_UUID") return;
|
||||||
|
providerInfo.uuid = event.data.uuid;
|
||||||
|
announceProvider();
|
||||||
|
});
|
||||||
|
|
||||||
window.addEventListener("eip6963:requestProvider", announceProvider);
|
window.addEventListener("eip6963:requestProvider", announceProvider);
|
||||||
announceProvider();
|
announceProvider();
|
||||||
})();
|
})();
|
||||||
|
|||||||
Reference in New Issue
Block a user