From 05547861b65100279027a64f58793caea1143a30 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 8 Feb 2019 00:44:14 +0100 Subject: Key: Constant time encoding Signed-off-by: Jason A. Donenfeld --- .../Tunnel/TunnelConfiguration+UapiConfig.swift | 27 +++------------------- 1 file changed, 3 insertions(+), 24 deletions(-) (limited to 'WireGuard/WireGuard/Tunnel') diff --git a/WireGuard/WireGuard/Tunnel/TunnelConfiguration+UapiConfig.swift b/WireGuard/WireGuard/Tunnel/TunnelConfiguration+UapiConfig.swift index 63a8570..b72223d 100644 --- a/WireGuard/WireGuard/Tunnel/TunnelConfiguration+UapiConfig.swift +++ b/WireGuard/WireGuard/Tunnel/TunnelConfiguration+UapiConfig.swift @@ -88,7 +88,7 @@ extension TunnelConfiguration { guard let privateKeyString = attributes["private_key"] else { throw ParseError.interfaceHasNoPrivateKey } - guard let privateKey = Data(hexEncoded: privateKeyString), privateKey.count == TunnelConfiguration.keyLength else { + guard let privateKey = Data(hexKey: privateKeyString), privateKey.count == TunnelConfiguration.keyLength else { throw ParseError.interfaceHasInvalidPrivateKey(privateKeyString) } var interface = InterfaceConfiguration(privateKey: privateKey) @@ -108,12 +108,12 @@ extension TunnelConfiguration { guard let publicKeyString = attributes["public_key"] else { throw ParseError.peerHasNoPublicKey } - guard let publicKey = Data(hexEncoded: publicKeyString), publicKey.count == TunnelConfiguration.keyLength else { + guard let publicKey = Data(hexKey: publicKeyString), publicKey.count == TunnelConfiguration.keyLength else { throw ParseError.peerHasInvalidPublicKey(publicKeyString) } var peer = PeerConfiguration(publicKey: publicKey) if let preSharedKeyString = attributes["preshared_key"] { - guard let preSharedKey = Data(hexEncoded: preSharedKeyString), preSharedKey.count == TunnelConfiguration.keyLength else { + guard let preSharedKey = Data(hexKey: preSharedKeyString), preSharedKey.count == TunnelConfiguration.keyLength else { throw ParseError.peerHasInvalidPreSharedKey(preSharedKeyString) } // TODO(zx2c4): does the compiler optimize this away? @@ -184,24 +184,3 @@ extension TunnelConfiguration { return peer } } - -extension Data { - //swiftlint:disable identifier_name - init?(hexEncoded hexString: String) { - if hexString.count % 2 != 0 { - return nil - } - let len = hexString.count / 2 - self.init(capacity: len) - for i in 0..