fix(rtc): remove test encrypt-key

This commit is contained in:
rcmerci
2025-09-20 20:02:18 +08:00
committed by Tienson Qin
parent 964e04e244
commit 445b57a160
4 changed files with 26 additions and 20 deletions

View File

@@ -480,8 +480,9 @@
other-remote-ops)]
(when-let [ops-for-remote (rtc-schema/to-ws-ops-decoder remote-ops)]
(let [local-tx (client-op/get-local-tx repo)
encrypt-key-for-test (c.m/<? (rtc-encrypt/<salt+password->key (ldb/get-key-value @conn :logseq.kv/graph-rtc-encrypt-salt) "test-password"))
encrypted-remote-ops (m/? (task--encrypt-remote-ops encrypt-key-for-test ops-for-remote))
encrypt-key (c.m/<? (rtc-encrypt/<get-encrypt-key repo))
_ (assert (some? encrypt-key))
encrypted-remote-ops (m/? (task--encrypt-remote-ops encrypt-key ops-for-remote))
r (try
(let [message (cond-> {:action "apply-ops"
:graph-uuid graph-uuid :schema-version (str major-schema-version)

View File

@@ -1,6 +1,7 @@
(ns frontend.worker.rtc.encrypt
"rtc e2ee related"
(:require ["/frontend/idbkv" :as idb-keyval]
[frontend.common.thread-api :as thread-api :refer [def-thread-api]]
[logseq.db :as ldb]
[promesa.core :as p]))
@@ -26,22 +27,22 @@
(idb-keyval/del k @store))
(defn- graph-encrypt-key-idb-key
[graph-uuid]
(assert (some? graph-uuid))
(str "rtc-encrypt-key###" graph-uuid))
[repo]
(assert (some? repo))
(str "rtc-encrypt-key###" repo))
(defn <get-encrypt-key
[graph-uuid]
(<get-item (graph-encrypt-key-idb-key graph-uuid)))
[repo]
(<get-item (graph-encrypt-key-idb-key repo)))
(defn <set-encrypt-key!
[graph-uuid k]
[repo k]
(assert (instance? js/CryptoKey k))
(<set-item! (graph-encrypt-key-idb-key graph-uuid) k))
(<set-item! (graph-encrypt-key-idb-key repo) k))
(defn <remove-encrypt-key!
[graph-uuid]
(<remove-item! (graph-encrypt-key-idb-key graph-uuid)))
[repo]
(<remove-item! (graph-encrypt-key-idb-key repo)))
(defn- array-buffer->base64 [buffer]
(let [binary (apply str (map js/String.fromCharCode (js/Uint8Array. buffer)))]
@@ -151,6 +152,14 @@
m)))
(p/promise m) encrypt-attr-set))
(def-thread-api :thread-api/generate&persist-encrypt-key
[repo salt password]
(p/let [encrypt-key (<salt+password->key salt password)
encrypt-key' (<get-encrypt-key repo)
_ (assert (nil? encrypt-key'))
_ (<set-encrypt-key! repo encrypt-key)]
nil))
(comment
(->
(p/let [salt (js/crypto.getRandomValues (js/Uint8Array. 16))

View File

@@ -159,8 +159,9 @@
@conn
:ignore-attr-set rtc-const/ignore-attrs-when-init-upload
:ignore-entity-set rtc-const/ignore-entities-when-init-upload)
encrypt-key-for-test (c.m/<? (rtc-encrypt/<salt+password->key (ldb/get-key-value @conn :logseq.kv/graph-rtc-encrypt-salt) "test-password"))
encrypted-blocks (c.m/<? (task--encrypt-blocks encrypt-key-for-test rtc-const/encrypt-attr-set all-blocks))]
encrypt-key (c.m/<? (rtc-encrypt/<get-encrypt-key repo))
_ (assert (some? encrypt-key))
encrypted-blocks (c.m/<? (task--encrypt-blocks encrypt-key rtc-const/encrypt-attr-set all-blocks))]
(ldb/write-transit-str encrypted-blocks)))))]
(rtc-log-and-state/rtc-log :rtc.log/upload {:sub-type :upload-data
:message "uploading data"})

View File

@@ -659,17 +659,12 @@ so need to pull earlier remote-data from websocket."})
(defn task--apply-remote-update
"Apply remote-update(`remote-update-event`)"
[graph-uuid repo conn date-formatter remote-update-event add-log-fn]
;; Re apply-remote-update-check to ensure the remote-update-event still passes the check,
;; Because asynchronous functions may have been executed between the previous check and the current apply-remote-update.
(m/sp
(when (apply-remote-update-check repo remote-update-event add-log-fn)
(let [remote-update-data (:value remote-update-event)
encrypt-key-for-test
(c.m/<? (rtc-encrypt/<salt+password->key
(ldb/get-key-value @conn :logseq.kv/graph-rtc-encrypt-salt)
"test-password"))
encrypt-key (c.m/<? (rtc-encrypt/<get-encrypt-key repo))
remote-update-data (m/? (task--decrypt-blocks-in-remote-update-data
encrypt-key-for-test rtc-const/encrypt-attr-set
encrypt-key rtc-const/encrypt-attr-set
remote-update-data))
remote-t (:t remote-update-data)
{affected-blocks-map :affected-blocks refed-blocks :refed-blocks} remote-update-data