diff --git a/NearbyShare/Connection/NearbyConnection.swift b/NearbyShare/Connection/NearbyConnection.swift index f947bb7..1286577 100644 --- a/NearbyShare/Connection/NearbyConnection.swift +++ b/NearbyShare/Connection/NearbyConnection.swift @@ -511,17 +511,12 @@ class NearbyConnection { guard peerKey.hasEcP256PublicKey else { throw NearbyError.requiredFieldMissing("peerKey.ecP256PublicKey") } let domain = Domain.instance(curve: .EC256r1) - var clientX = peerKey.ecP256PublicKey.x - var clientY = peerKey.ecP256PublicKey.y - if clientX.count > 32 { - clientX = clientX.suffix(32) - } - if clientY.count > 32 { - clientY = clientY.suffix(32) - } + let clientX = peerKey.ecP256PublicKey.x.ensureLength(length: 32) + let clientY = peerKey.ecP256PublicKey.y.ensureLength(length: 32) let key = try ECPublicKey(domain: domain, w: Point(BInt(magnitude: [UInt8](clientX)), BInt(magnitude: [UInt8](clientY)))) - let dhs = try (privateKey?.domain.multiplyPoint(key.w, privateKey!.s).x.asMagnitudeBytes())! + let dhsRaw = try (privateKey?.domain.multiplyPoint(key.w, privateKey!.s).x.asMagnitudeBytes())! + let dhs = Data(dhsRaw).ensureLength(length: 32) var sha = SHA256() sha.update(data: dhs) let derivedSecretKey = Data(sha.finalize()) diff --git a/NearbyShare/Connection/NearbyConnectionManager.swift b/NearbyShare/Connection/NearbyConnectionManager.swift index 679662e..90ca70c 100644 --- a/NearbyShare/Connection/NearbyConnectionManager.swift +++ b/NearbyShare/Connection/NearbyConnectionManager.swift @@ -628,7 +628,7 @@ public class NearbyConnectionManager: NSObject, NetServiceDelegate, InboundNearb var keyData = Data() keyData.append(contentsOf: [0, 0, 2]) - keyData.append(Data(pubKey.w.x.asSignedBytes()).suffixOfAtMost(numBytes: 32)) + keyData.append(Data(pubKey.w.x.asSignedBytes()).ensureLength(length: 32)) let ikm = SymmetricKey(data: keyData) diff --git a/NearbyShare/Util/Helpers.swift b/NearbyShare/Util/Helpers.swift index 71028d1..07e7cde 100644 --- a/NearbyShare/Util/Helpers.swift +++ b/NearbyShare/Util/Helpers.swift @@ -31,17 +31,6 @@ extension Data { return data } - - func suffixOfAtMost(numBytes: Int) -> Data { - - if count <= numBytes { - return self - } - - return subdata(in: count-numBytes.. Data? { var regularB64 = String(str.map { if $0 == "_" {