Jelajahi Sumber

feat: impl keygen for mobile

Andelf 3 tahun lalu
induk
melakukan
d533c68738

+ 1 - 0
ios/App/App/FileSync/FileSync.m

@@ -9,6 +9,7 @@
 
 CAP_PLUGIN(FileSync, "FileSync",
            CAP_PLUGIN_METHOD(setEnv, CAPPluginReturnPromise);
+           CAP_PLUGIN_METHOD(keygen, CAPPluginReturnPromise);
            CAP_PLUGIN_METHOD(getLocalFilesMeta, CAPPluginReturnPromise);
            CAP_PLUGIN_METHOD(getLocalAllFilesMeta, CAPPluginReturnPromise);
            CAP_PLUGIN_METHOD(renameLocalFile, CAPPluginReturnPromise);

+ 8 - 6
ios/App/App/FileSync/FileSync.swift

@@ -83,14 +83,16 @@ func maybeEncrypt(_ plaindata: Data) -> Data! {
 }
 
 func maybeDecrypt(_ cipherdata: Data) -> Data! {
-    if cipherdata.starts(with: "-----BEGIN AGE ENCRYPTED FILE-----".data(using: .utf8)!) {
-        return cipherdata
-    }
     if let secretKey = ENCRYPTION_SECRET_KEY {
-        if let plaindata = AgeEncryption.decryptWithX25519(cipherdata, secretKey) {
-            return plaindata
+        if cipherdata.starts(with: "-----BEGIN AGE ENCRYPTED FILE-----".data(using: .utf8)!) ||
+            cipherdata.starts(with: "age-encryption.org/v1\n".data(using: .utf8)!) {
+            if let plaindata = AgeEncryption.decryptWithX25519(cipherdata, secretKey) {
+                return plaindata
+            }
+            return nil
         }
-        return nil
+        // not an encrypted file
+        return cipherdata
     }
     return cipherdata
 }

+ 0 - 4
ios/App/App/capacitor.config.json

@@ -17,9 +17,5 @@
 	},
 	"ios": {
 		"scheme": "Logseq"
-	},
-	"server": {
-		"url": "http://192.168.1.59:3001",
-		"cleartext": true
 	}
 }

+ 4 - 2
src/main/frontend/fs/sync.cljs

@@ -591,8 +591,10 @@
       (state/get-auth-id-token)))
 
   IRSAPI
-  (key-gen [_] ;; TODO
-    )
+  (key-gen [_]
+    (go (let [r (<! (p->c (.keygen mobile-util/file-sync #js {})))]
+          (->> r
+               (js->clj :keywordize-keys true)))))
   (set-env [_ prod? secret-key public-key]
     (go (<! (p->c (.setEnv mobile-util/file-sync (clj->js {:env (if prod? "prod" "dev")
                                                            :secretKey secret-key