Alex Gleason
f3393b2cc8
Store nostr-push device key in secure storage on native builds
...
The per-device ephemeral key used to sign nostr-push RPC events was
previously stored unconditionally in localStorage. On Capacitor builds
this bypassed the iOS Keychain / Android KeyStore wrapper that every
other persistent key in the app already uses.
Route the key through `secureStorage`, which keeps the native path
encrypted at rest and falls back to localStorage on web (where it was
before). Because the key is now loaded asynchronously, convert the
`NostrPushClient` constructor into a private constructor plus a public
`create()` factory, and restructure `usePushNotifications` bring-up to
await the client before registering the service worker.
The key is ephemeral and per-device, so compromise only reveals which
Nostr events this device subscribes to -- not the user's identity --
but matching the existing secure-storage contract closes an obvious
inconsistency.
2026-04-16 13:47:16 -05:00
..
2026-04-08 16:41:23 -05:00
2026-03-14 15:55:29 -05:00
2026-03-19 22:25:26 -05:00
2026-04-02 03:48:10 -05:00
2026-03-27 15:54:20 -03:00
2026-03-29 13:10:22 -05:00
2026-03-03 10:25:57 -06:00
2026-02-18 17:23:06 -06:00
2026-04-01 22:33:18 -05:00
2026-04-05 11:57:31 -05:00
2026-03-28 06:27:21 -05:00
2026-03-01 22:15:47 -06:00
2026-03-19 11:34:26 -05:00
2026-03-05 23:27:47 -06:00
2026-04-11 14:01:34 -05:00
2026-03-30 15:49:25 -05:00
2026-04-06 13:41:32 -05:00
2026-03-28 05:31:49 -05:00
2026-02-16 16:54:01 -06:00
2026-04-06 13:41:32 -05:00
2026-02-16 16:54:01 -06:00
2026-04-08 22:54:46 -05:00
2026-03-23 00:17:57 -05:00
2026-04-03 16:20:40 -05:00
2026-02-21 16:28:23 -06:00
2026-04-05 20:30:54 -05:00
2026-04-05 11:57:31 -05:00
2026-04-01 20:07:43 -05:00
2026-04-04 01:56:40 -05:00
2026-04-10 15:48:38 -05:00
2026-03-26 19:17:58 -05:00
2026-03-14 02:39:52 -05:00
2026-02-28 23:35:17 -06:00
2026-02-16 16:54:01 -06:00
2026-02-17 03:59:37 -06:00
2026-02-19 19:06:14 -06:00
2026-04-14 14:08:32 -05:00
2026-03-18 22:30:24 -05:00
2026-04-08 16:41:23 -05:00
2026-03-03 11:28:19 -06:00
2026-03-30 04:30:00 -05:00
2026-03-26 21:32:18 -05:00
2026-03-23 13:31:40 -05:00
2026-04-02 03:48:10 -05:00
2026-02-28 19:37:38 -06:00
2026-04-05 11:57:31 -05:00
2026-04-13 18:03:09 -05:00
2026-04-05 11:57:31 -05:00
2026-04-12 17:57:28 -05:00
2026-02-19 17:51:51 -06:00
2026-02-19 15:37:53 -06:00
2026-04-06 13:41:32 -05:00
2026-04-04 01:56:40 -05:00
2026-04-04 05:50:21 -05:00
2026-03-22 14:26:18 -05:00
2026-04-16 13:47:16 -05:00
2026-03-25 12:55:09 -05:00
2026-03-01 22:15:47 -06:00
2026-03-28 00:00:20 -07:00
2026-03-28 00:13:21 -07:00
2026-04-03 18:37:28 -05:00
2026-04-07 08:55:27 -05:00
2026-04-10 15:48:38 -05:00
2026-04-05 11:57:31 -05:00
2026-04-05 11:57:31 -05:00
2026-02-20 21:23:07 -06:00
2026-04-08 16:41:23 -05:00
2026-04-06 13:41:32 -05:00
2026-03-06 01:28:09 -06:00
2026-02-23 19:42:43 -06:00
2026-02-23 20:03:26 -06:00
2026-04-05 15:12:19 -05:00
2026-04-09 08:02:26 -05:00
2026-03-23 00:32:13 -05:00
2026-04-11 17:20:21 -05:00
2026-03-29 04:41:42 -03:00
2026-03-29 04:41:42 -03:00
2026-03-26 21:32:18 -05:00
2026-04-10 14:22:42 -05:00
2026-04-13 20:48:36 -05:00
2026-04-08 22:20:48 -05:00
2026-03-28 00:00:21 -05:00
2026-03-07 13:29:08 -06:00
2026-04-01 22:33:18 -05:00
2026-04-12 16:46:17 -05:00
2026-04-12 11:37:10 -05:00
2026-03-16 16:36:54 -04:00
2026-03-05 23:27:47 -06:00
2026-03-26 16:11:29 -05:00
2026-03-24 17:13:33 +03:00
2026-03-24 17:13:33 +03:00
2026-04-10 15:48:38 -05:00
2026-02-16 17:05:32 -06:00
2026-03-24 12:20:40 -03:00
2026-03-17 23:56:57 +07:00
2026-02-27 19:27:56 -06:00