From 290f83d5ef4d26e11d0b6eaccd47fcda7d359ae3 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Sat, 10 Nov 2018 17:02:30 +0530 Subject: Model: Ensure that a TunnelConfiguration always has a valid array of peers Signed-off-by: Roopesh Chander --- WireGuard/Shared/Model/Configuration.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'WireGuard/Shared/Model/Configuration.swift') diff --git a/WireGuard/Shared/Model/Configuration.swift b/WireGuard/Shared/Model/Configuration.swift index cbe4271..3e661e6 100644 --- a/WireGuard/Shared/Model/Configuration.swift +++ b/WireGuard/Shared/Model/Configuration.swift @@ -6,9 +6,16 @@ import Foundation @available(OSX 10.14, iOS 12.0, *) class TunnelConfiguration: Codable { var interface: InterfaceConfiguration - var peers: [PeerConfiguration] = [] - init(interface: InterfaceConfiguration) { + let peers: [PeerConfiguration] + init(interface: InterfaceConfiguration, peers: [PeerConfiguration]) { self.interface = interface + self.peers = peers + + let peerPublicKeysArray = peers.map { $0.publicKey } + let peerPublicKeysSet = Set(peerPublicKeysArray) + if (peerPublicKeysArray.count != peerPublicKeysSet.count) { + fatalError("Two or more peers cannot have the same public key") + } } } -- cgit v1.2.3-59-g8ed1b