]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Observe private key changes for new tunnels too
authorJason A. Donenfeld <Jason@zx2c4.com>
Mon, 21 Jan 2019 21:40:43 +0000 (22:40 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 21 Jan 2019 21:55:25 +0000 (22:55 +0100)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
WireGuard/WireGuard/UI/macOS/ViewController/TunnelEditViewController.swift

index ef51e191199f8b7bc4dc8effce7f61b7b0315964..a5547a1e76c703188d2da4168125277fdd405ac9 100644 (file)
@@ -105,16 +105,6 @@ class TunnelEditViewController: NSViewController {
             textView.string = tunnelConfiguration.asWgQuickConfig()
             publicKeyRow.value = tunnelConfiguration.interface.publicKey.base64EncodedString()
             textView.privateKeyString = tunnelConfiguration.interface.privateKey.base64EncodedString()
-            textViewObservationToken = textView.observe(\.privateKeyString) { [weak publicKeyRow] textView, _ in
-                if let privateKeyString = textView.privateKeyString,
-                    let privateKey = Data(base64Encoded: privateKeyString),
-                    privateKey.count == TunnelConfiguration.keyLength {
-                    let publicKey = Curve25519.generatePublicKey(fromPrivateKey: privateKey)
-                    publicKeyRow?.value = publicKey.base64EncodedString()
-                } else {
-                    publicKeyRow?.value = ""
-                }
-            }
             if tunnel.activateOnDemandSetting.isActivateOnDemandEnabled {
                 selectedActivateOnDemandOption = tunnel.activateOnDemandSetting.activateOnDemandOption
             } else {
@@ -129,6 +119,16 @@ class TunnelEditViewController: NSViewController {
             textView.string = bootstrappingText
             selectedActivateOnDemandOption = .none
         }
+        textViewObservationToken = textView.observe(\.privateKeyString) { [weak publicKeyRow] textView, _ in
+            if let privateKeyString = textView.privateKeyString,
+                let privateKey = Data(base64Encoded: privateKeyString),
+                privateKey.count == TunnelConfiguration.keyLength {
+                let publicKey = Curve25519.generatePublicKey(fromPrivateKey: privateKey)
+                publicKeyRow?.value = publicKey.base64EncodedString()
+            } else {
+                publicKeyRow?.value = ""
+            }
+        }
 
         onDemandRow.valueOptions = activateOnDemandOptions.map { TunnelViewModel.activateOnDemandOptionText(for: $0) }
         onDemandRow.selectedOptionIndex = activateOnDemandOptions.firstIndex(of: selectedActivateOnDemandOption)!