From 151d5a99d1228edd9b38ce3cdf1e89001665c06f Mon Sep 17 00:00:00 2001 From: rcmerci Date: Fri, 7 Nov 2025 19:41:42 +0800 Subject: [PATCH] feat(rtc,e2ee): reset e2ee password --- src/main/frontend/components/settings.cljs | 35 +++- src/main/frontend/db/rtc/debug_ui.cljs | 14 +- src/main/frontend/worker/rtc/crypt.cljs | 163 +++++------------- .../frontend/worker/rtc/malli_schema.cljs | 4 +- 4 files changed, 73 insertions(+), 143 deletions(-) diff --git a/src/main/frontend/components/settings.cljs b/src/main/frontend/components/settings.cljs index cb0177ca2d..9ece65640b 100644 --- a/src/main/frontend/components/settings.cljs +++ b/src/main/frontend/components/settings.cljs @@ -1199,7 +1199,10 @@ token (state/get-auth-id-token) [rsa-key-pair set-rsa-key-pair!] (hooks/use-state :not-inited) [init-key-err set-init-key-err!] (hooks/use-state nil) - [get-key-err set-get-key-err!] (hooks/use-state nil)] + [get-key-err set-get-key-err!] (hooks/use-state nil) + [old-password set-old-password!] (hooks/use-state nil) + [new-password set-new-password!] (hooks/use-state nil) + [reset-password-status set-reset-password-status!] (hooks/use-state nil)] (hooks/use-effect! (fn [] (when (and user-uuid token) @@ -1220,14 +1223,34 @@ (when init-key-err [:p (str "Init key-pair err:" init-key-err)]) (shui/button {:on-click (fn [] - (-> (p/let [key-pair (state/ (p/do! + (state/ (p/do! + (set-reset-password-status! "Updating E2EE password ...") + (state/ keys-state diff --git a/src/main/frontend/worker/rtc/crypt.cljs b/src/main/frontend/worker/rtc/crypt.cljs index 73c5304bb6..bb03001693 100644 --- a/src/main/frontend/worker/rtc/crypt.cljs +++ b/src/main/frontend/worker/rtc/crypt.cljs @@ -27,24 +27,26 @@ (assert (and k @store)) (idb-keyval/set k value @store)) -(defn- js - {:public-key public-key - :encrypted-private-key encrypted-private-key}))) - {:public-key (m/? (task--import-public-key public-key)) - :encrypted-private-key (ldb/read-transit-str encrypted-private-key)}))))))))) + (let [response (m/? (ws-util/send&recv get-ws-create-task + {:action "fetch-user-rsa-key-pair" + :user-uuid user-uuid}))] + (if (:ex-data response) + (throw (ex-info (:ex-message response) + (assoc (:ex-data response) + :type :rtc.exception/fetch-user-rsa-key-pair-error))) + (let [{:keys [public-key encrypted-private-key]} response] + (when (and public-key encrypted-private-key) + {:public-key (m/? (task--import-public-key public-key)) + :encrypted-private-key (ldb/read-transit-str encrypted-private-key)}))))))) (defn task--fetch-graph-aes-key "Fetches the AES key for a graph, from indexeddb or server. @@ -135,9 +128,16 @@ (let [{:keys [_public-key private-key]} (m/? (task--get-decrypted-rsa-key-pair get-ws-create-task user-uuid))] (m/? (task--fetch-graph-aes-key get-ws-create-task graph-uuid private-key))))) -(def-thread-api :thread-api/get-user-rsa-key-pair-from-indexeddb - [user-uuid] - (js - {:public-key public-key - :encrypted-private-key encrypted-private-key}))) - (c.m/