]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
Model: Declare keyLength constant and use that wherever applicable
authorRoopesh Chander <roop@roopc.net>
Sat, 8 Dec 2018 13:22:11 +0000 (18:52 +0530)
committerRoopesh Chander <roop@roopc.net>
Sun, 9 Dec 2018 08:37:03 +0000 (14:07 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/Shared/Model/Configuration.swift
WireGuard/WireGuard/ConfigFile/WgQuickConfigFileParser.swift
WireGuard/WireGuard/Crypto/Curve25519.swift
WireGuard/WireGuard/UI/TunnelViewModel.swift

index 41ff7bc013c4bc586ea8a84b0741e8d4bac31f40..d2680cbef1f90c612aa3eadb379a8fd601e8a29d 100644 (file)
@@ -7,6 +7,9 @@ import Foundation
 final class TunnelConfiguration: Codable {
     var interface: InterfaceConfiguration
     let peers: [PeerConfiguration]
+
+    static let keyLength: Int = 32
+
     init(interface: InterfaceConfiguration, peers: [PeerConfiguration]) {
         self.interface = interface
         self.peers = peers
@@ -32,7 +35,7 @@ struct InterfaceConfiguration: Codable {
         self.name = name
         self.privateKey = privateKey
         if (name.isEmpty) { fatalError("Empty name") }
-        if (privateKey.count != 32) { fatalError("Invalid private key") }
+        if (privateKey.count != TunnelConfiguration.keyLength) { fatalError("Invalid private key") }
     }
 }
 
@@ -42,7 +45,7 @@ struct PeerConfiguration: Codable {
     var preSharedKey: Data? {
         didSet(value) {
             if let value = value {
-                if (value.count != 32) { fatalError("Invalid preshared key") }
+                if (value.count != TunnelConfiguration.keyLength) { fatalError("Invalid preshared key") }
             }
         }
     }
@@ -52,6 +55,6 @@ struct PeerConfiguration: Codable {
 
     init(publicKey: Data) {
         self.publicKey = publicKey
-        if (publicKey.count != 32) { fatalError("Invalid public key") }
+        if (publicKey.count != TunnelConfiguration.keyLength) { fatalError("Invalid public key") }
     }
 }
index af3baf0ebd2c803da673195584d9fbbec9fc3251..4cba816cded1bc969e0b25d3332a87e8c0a4c3f7 100644 (file)
@@ -27,7 +27,7 @@ class WgQuickConfigFileParser {
         func collate(interfaceAttributes attributes: [String: String]) -> InterfaceConfiguration? {
             // required wg fields
             guard let privateKeyString = attributes["privatekey"] else { return nil }
-            guard let privateKey = Data(base64Encoded: privateKeyString), privateKey.count == 32 else { return nil }
+            guard let privateKey = Data(base64Encoded: privateKeyString), privateKey.count == TunnelConfiguration.keyLength else { return nil }
             var interface = InterfaceConfiguration(name: name, privateKey: privateKey)
             // other wg fields
             if let listenPortString = attributes["listenport"] {
@@ -63,11 +63,11 @@ class WgQuickConfigFileParser {
         func collate(peerAttributes attributes: [String: String]) -> PeerConfiguration? {
             // required wg fields
             guard let publicKeyString = attributes["publickey"] else { return nil }
-            guard let publicKey = Data(base64Encoded: publicKeyString), publicKey.count == 32 else { return nil }
+            guard let publicKey = Data(base64Encoded: publicKeyString), publicKey.count == TunnelConfiguration.keyLength else { return nil }
             var peer = PeerConfiguration(publicKey: publicKey)
             // wg fields
             if let preSharedKeyString = attributes["presharedkey"] {
-                guard let preSharedKey = Data(base64Encoded: preSharedKeyString), preSharedKey.count == 32 else { return nil }
+                guard let preSharedKey = Data(base64Encoded: preSharedKeyString), preSharedKey.count == TunnelConfiguration.keyLength else { return nil }
                 peer.preSharedKey = preSharedKey
             }
             if let allowedIPsString = attributes["allowedips"] {
index 84c35d3b2c8e1906986f53cd797d4b2879164fde..43d9b00d899a3537bcd83330eb01c45438c8d185 100644 (file)
@@ -4,24 +4,27 @@
 import UIKit
 
 struct Curve25519 {
+
+    static let keyLength: Int = 32
+
     static func generatePrivateKey() -> Data {
-        var privateKey = Data(repeating: 0, count: 32)
+        var privateKey = Data(repeating: 0, count: TunnelConfiguration.keyLength)
         privateKey.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<UInt8>) in
             curve25519_generate_private_key(bytes)
         }
-        assert(privateKey.count == 32)
+        assert(privateKey.count == TunnelConfiguration.keyLength)
         return privateKey
     }
 
     static func generatePublicKey(fromPrivateKey privateKey: Data) -> Data {
-        assert(privateKey.count == 32)
-        var publicKey = Data(repeating: 0, count: 32)
+        assert(privateKey.count == TunnelConfiguration.keyLength)
+        var publicKey = Data(repeating: 0, count: TunnelConfiguration.keyLength)
         privateKey.withUnsafeBytes { (privateKeyBytes: UnsafePointer<UInt8>) in
             publicKey.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<UInt8>) in
                 curve25519_derive_public_key(bytes, privateKeyBytes)
             }
         }
-        assert(publicKey.count == 32)
+        assert(publicKey.count == TunnelConfiguration.keyLength)
         return publicKey
     }
 }
index de14ad5adbe4d215b33b258e7b365ccf622318d4..92a1a646654c4adf732527e9b1cc35324d02cd4d 100644 (file)
@@ -65,7 +65,7 @@ class TunnelViewModel {
                 if (field == .privateKey) {
                     if (stringValue.count == TunnelViewModel.keyLengthInBase64),
                         let privateKey = Data(base64Encoded: stringValue),
-                        privateKey.count == 32 {
+                        privateKey.count == TunnelConfiguration.keyLength {
                         let publicKey = Curve25519.generatePublicKey(fromPrivateKey: privateKey)
                         scratchpad[.publicKey] = publicKey.base64EncodedString()
                     } else {
@@ -109,7 +109,7 @@ class TunnelViewModel {
                 fieldsWithError.insert(.privateKey)
                 return .error("Interface's private key is required")
             }
-            guard let privateKey = Data(base64Encoded: privateKeyString), privateKey.count == 32 else {
+            guard let privateKey = Data(base64Encoded: privateKeyString), privateKey.count == TunnelConfiguration.keyLength else {
                 fieldsWithError.insert(.privateKey)
                 return .error("Interface's private key must be a 32-byte key in base64 encoding")
             }
@@ -247,14 +247,14 @@ class TunnelViewModel {
                 fieldsWithError.insert(.publicKey)
                 return .error("Peer's public key is required")
             }
-            guard let publicKey = Data(base64Encoded: publicKeyString), publicKey.count == 32 else {
+            guard let publicKey = Data(base64Encoded: publicKeyString), publicKey.count == TunnelConfiguration.keyLength else {
                 fieldsWithError.insert(.publicKey)
                 return .error("Peer's public key must be a 32-byte key in base64 encoding")
             }
             var config = PeerConfiguration(publicKey: publicKey)
             var errorMessages: [String] = []
             if let preSharedKeyString = scratchpad[.preSharedKey] {
-                if let preSharedKey = Data(base64Encoded: preSharedKeyString), preSharedKey.count == 32 {
+                if let preSharedKey = Data(base64Encoded: preSharedKeyString), preSharedKey.count == TunnelConfiguration.keyLength {
                     config.preSharedKey = preSharedKey
                 } else {
                     fieldsWithError.insert(.preSharedKey)