|
@@ -2,9 +2,12 @@
|
|
|
(:require [frontend.utf8 :as utf8]
|
|
(:require [frontend.utf8 :as utf8]
|
|
|
[frontend.db.utils :as db-utils]
|
|
[frontend.db.utils :as db-utils]
|
|
|
[frontend.db :as db]
|
|
[frontend.db :as db]
|
|
|
|
|
+ [promesa.core :as p]
|
|
|
[frontend.state :as state]
|
|
[frontend.state :as state]
|
|
|
[clojure.string :as str]
|
|
[clojure.string :as str]
|
|
|
[cljs.reader :as reader]
|
|
[cljs.reader :as reader]
|
|
|
|
|
+ ;; required for async npm module
|
|
|
|
|
+ ["regenerator-runtime/runtime"]
|
|
|
["@kanru/rage-wasm" :as rage]
|
|
["@kanru/rage-wasm" :as rage]
|
|
|
[lambdaisland.glogi :as log]))
|
|
[lambdaisland.glogi :as log]))
|
|
|
|
|
|
|
@@ -37,7 +40,7 @@
|
|
|
(defn generate-key-pair-and-save!
|
|
(defn generate-key-pair-and-save!
|
|
|
[repo-url]
|
|
[repo-url]
|
|
|
(when-not (get-key-pair repo-url)
|
|
(when-not (get-key-pair repo-url)
|
|
|
- (let [keys (generate-key-pair)]
|
|
|
|
|
|
|
+ (p/let [keys (generate-key-pair)]
|
|
|
(save-key-pair! repo-url keys)
|
|
(save-key-pair! repo-url keys)
|
|
|
(pr-str keys))))
|
|
(pr-str keys))))
|
|
|
|
|
|
|
@@ -55,12 +58,12 @@
|
|
|
([repo-url content]
|
|
([repo-url content]
|
|
|
(cond
|
|
(cond
|
|
|
(encrypted-db? repo-url)
|
|
(encrypted-db? repo-url)
|
|
|
- (let [content (utf8/encode content)
|
|
|
|
|
- public-key (get-public-key repo-url)
|
|
|
|
|
- encrypted (rage/encrypt_with_x25519 public-key content true)]
|
|
|
|
|
|
|
+ (p/let [content (utf8/encode content)
|
|
|
|
|
+ public-key (get-public-key repo-url)
|
|
|
|
|
+ encrypted (rage/encrypt_with_x25519 public-key content true)]
|
|
|
(utf8/decode encrypted))
|
|
(utf8/decode encrypted))
|
|
|
:else
|
|
:else
|
|
|
- content)))
|
|
|
|
|
|
|
+ (p/resolved content))))
|
|
|
|
|
|
|
|
(defn decrypt
|
|
(defn decrypt
|
|
|
([content]
|
|
([content]
|
|
@@ -71,21 +74,21 @@
|
|
|
(content-encrypted? content))
|
|
(content-encrypted? content))
|
|
|
(let [content (utf8/encode content)]
|
|
(let [content (utf8/encode content)]
|
|
|
(if-let [secret-key (get-secret-key repo-url)]
|
|
(if-let [secret-key (get-secret-key repo-url)]
|
|
|
- (let [decrypted (rage/decrypt_with_x25519 secret-key content)]
|
|
|
|
|
|
|
+ (p/let [decrypted (rage/decrypt_with_x25519 secret-key content)]
|
|
|
(utf8/decode decrypted))
|
|
(utf8/decode decrypted))
|
|
|
(log/error :encrypt/empty-secret-key (str "Can't find the secret key for repo: " repo-url))))
|
|
(log/error :encrypt/empty-secret-key (str "Can't find the secret key for repo: " repo-url))))
|
|
|
:else
|
|
:else
|
|
|
- content)))
|
|
|
|
|
|
|
+ (p/resolved content))))
|
|
|
|
|
|
|
|
(defn encrypt-with-passphrase
|
|
(defn encrypt-with-passphrase
|
|
|
[passphrase content]
|
|
[passphrase content]
|
|
|
- (let [content (utf8/encode content)
|
|
|
|
|
- encrypted (rage/encrypt_with_user_passphrase passphrase content true)]
|
|
|
|
|
|
|
+ (p/let [content (utf8/encode content)
|
|
|
|
|
+ encrypted (rage/encrypt_with_user_passphrase passphrase content true)]
|
|
|
(utf8/decode encrypted)))
|
|
(utf8/decode encrypted)))
|
|
|
|
|
|
|
|
;; TODO: What if decryption failed
|
|
;; TODO: What if decryption failed
|
|
|
(defn decrypt-with-passphrase
|
|
(defn decrypt-with-passphrase
|
|
|
[passphrase content]
|
|
[passphrase content]
|
|
|
- (let [content (utf8/encode content)
|
|
|
|
|
- decrypted (rage/decrypt_with_user_passphrase passphrase content)]
|
|
|
|
|
|
|
+ (p/let [content (utf8/encode content)
|
|
|
|
|
+ decrypted (rage/decrypt_with_user_passphrase passphrase content)]
|
|
|
(utf8/decode decrypted)))
|
|
(utf8/decode decrypted)))
|