Commit Graph

688 Commits

Author SHA1 Message Date
Roopesh Chander 0ae4b3bcf1 Tunnel creation: Generate key pair
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 571e9b5826 Tunnel creation: Compute public key from private key as the text is being edited
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8f4875caf0 Tunnel view model: Populate interface's public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b6d41ec9de Model: Interface: Add a public key computed property
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c689be7eff Crypto: Swift wrapper for the Curve25519 C code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Jeroen Leenarts 5bfb6a2c13 Crypto: Curve25519: Add explicit cast to supress conversion warning.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-27 15:13:01 +05:30
Roopesh Chander acfa77f3df Crypto: Add Curve25519 C code to project
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Jeroen Leenarts 834c9ae7ce Crypto: Add key generation functions
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-10-27 15:13:01 +05:30
Roopesh Chander 7b915a8426 Tunnel creation: Hide 'Exclude private IPs' switch till the feature is ready
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 72ea54c0db Set Xcode template for smaller copyright headers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8ebfc6afcd Smaller copyright headers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c14d816b87 Tunnel detail: Start off with the tunnel detail view
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 88c7657eb7 Tunnel view model: Add copy public key
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander fa2760190b Tunnel creation: Variable renaming
s/interfaceEditFieldsBySection/interfaceFieldsBySection/g;
s/peerEditFieldsBySection/peerFieldsBySection/g;

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6243717a37 Tunnel view model: The view model applies for both editing and viewing
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 20b49518da Tunnels list: Update when a tunnel is added
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 05efb453f3 Tunnel creation: Saving a configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 722b3f6c7b Model: Use DNSServer in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander e1b8b67890 Model for DNS server
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander bcf8abb1de Model: Endpoint host should not have invalid characters
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b2f2756d9c Model: listenPort and persistentKeepAlive should be 16-bit integers
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 607dd4bf3d Tunnel creation: Refactor by creating a separate view model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b4554dce9b Tunnel creation: Validate the data and prepare to save to a configuration
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 28293c8029 Tunnel creation: Save typed values in a scratchpad
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 1a534faa0a Tunnel creation: Fix Persistent Keepalive label's look
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 911b16d54e Tunnel creation: Start off with tunnel creation
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 2e96dbe363 Model: Make InterfaceConfiguration and PeerConfiguration structs
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 89214e7db9 Model: Make it impossible to create invalid interface / peer configuration instances
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 3331327d82 Use Endpoint in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c12f481b70 Model for an endpoint
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8ec73025f2 Model: IPAddressRange: Converting to and from String
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 921b81e89b Model: Name should be part of the interface, not the tunnel
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6de354b4c5 Tunnels list: Show an actions list when the '+' is tapped
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander df7ea2a781 Tunnels list: Show data from the tunnels manager
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8a11333b65 Tunnels list: Make the table view style explicit
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b63abc65c3 VPN: Add TunnelsManager to manage the tunnels in the app
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8ca3993804 Bump deployment target to iOS 12.0
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander ede2a82c3b Use IPAddressRange in the Configuration model
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 0ce6b9e79e Model for an IP Address range
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 3630543be5 Models for tunnel, interface and peer
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 78251e9a50 Configure the split-view controller to work in both iPhone and iPad
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 8d62cb3c1b Change copyright to WireGuard LLC
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 5fe60a8bef Use a split-view controller as the main (root) view controller
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander c76e5933e2 Move UI code into a separate platform-specific folder
Later, we hope to have a UI/macOS folder for developing a macOS client
from this codebase.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander dd672d3dac Prepare for rewrite: Move WireGuardNetworkExtension into the new project folder
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 5776523bd2 Use APP_ID in xcconfig rather than PRODUCT_BUNDLE_IDENTIFIER
This is required because when we add an app extension to the
project, there will be two PRODUCT_BUNDLE_IDENTIFIER fields
in our project file, so we cannot use xcconfig to set that
key directly.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 6fe8b8dbe4 Enable Network Extensions capability
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander e2022d3e00 Move App ID to Developer.xcconfig as well
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander 700c7221a9 Remove storyboard and create UI from code
Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30
Roopesh Chander b6f4806fd6 Move DEVELOPMENT_TEAM into an xcconfig out of the git repo
This is so that other developers can work on this codebase
by copying Developer.xcconfig.template to Developer.xcconfig
and setting the DEVELOPMENT_TEAM to their respective Team IDs.
The Team IDs need not be checked into source control.

Signed-off-by: Roopesh Chander <roop@roopc.net>
2018-10-27 15:13:01 +05:30