Swift 5 migration: Handle changes in Data's pointer interface
This commit is contained in:
parent
283462dc9b
commit
43024dfcbb
|
@ -13,8 +13,8 @@ extension Data {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
var out = Data(repeating: 0, count: Int(WG_KEY_LEN_HEX))
|
var out = Data(repeating: 0, count: Int(WG_KEY_LEN_HEX))
|
||||||
out.withUnsafeMutableBytes { outBytes in
|
out.withUnsafeMutableInt8Bytes { outBytes in
|
||||||
self.withUnsafeBytes { inBytes in
|
self.withUnsafeUInt8Bytes { inBytes in
|
||||||
key_to_hex(outBytes, inBytes)
|
key_to_hex(outBytes, inBytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ extension Data {
|
||||||
init?(hexKey hexString: String) {
|
init?(hexKey hexString: String) {
|
||||||
self.init(repeating: 0, count: Int(WG_KEY_LEN))
|
self.init(repeating: 0, count: Int(WG_KEY_LEN))
|
||||||
|
|
||||||
if !self.withUnsafeMutableBytes { key_from_hex($0, hexString) } {
|
if !self.withUnsafeMutableUInt8Bytes { key_from_hex($0, hexString) } {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,8 @@ extension Data {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
var out = Data(repeating: 0, count: Int(WG_KEY_LEN_BASE64))
|
var out = Data(repeating: 0, count: Int(WG_KEY_LEN_BASE64))
|
||||||
out.withUnsafeMutableBytes { outBytes in
|
out.withUnsafeMutableInt8Bytes { outBytes in
|
||||||
self.withUnsafeBytes { inBytes in
|
self.withUnsafeUInt8Bytes { inBytes in
|
||||||
key_to_base64(outBytes, inBytes)
|
key_to_base64(outBytes, inBytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,34 @@ extension Data {
|
||||||
init?(base64Key base64String: String) {
|
init?(base64Key base64String: String) {
|
||||||
self.init(repeating: 0, count: Int(WG_KEY_LEN))
|
self.init(repeating: 0, count: Int(WG_KEY_LEN))
|
||||||
|
|
||||||
if !self.withUnsafeMutableBytes { key_from_base64($0, base64String) } {
|
if !self.withUnsafeMutableUInt8Bytes { key_from_base64($0, base64String) } {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension Data {
|
||||||
|
func withUnsafeUInt8Bytes<R>(_ body: (UnsafePointer<UInt8>) -> R) -> R {
|
||||||
|
assert(!isEmpty)
|
||||||
|
return self.withUnsafeBytes { (ptr: UnsafeRawBufferPointer) -> R in
|
||||||
|
let bytes = ptr.bindMemory(to: UInt8.self)
|
||||||
|
return body(bytes.baseAddress!) // might crash if self.count == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func withUnsafeMutableUInt8Bytes<R>(_ body: (UnsafeMutablePointer<UInt8>) -> R) -> R {
|
||||||
|
assert(!isEmpty)
|
||||||
|
return self.withUnsafeMutableBytes { (ptr: UnsafeMutableRawBufferPointer) -> R in
|
||||||
|
let bytes = ptr.bindMemory(to: UInt8.self)
|
||||||
|
return body(bytes.baseAddress!) // might crash if self.count == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func withUnsafeMutableInt8Bytes<R>(_ body: (UnsafeMutablePointer<Int8>) -> R) -> R {
|
||||||
|
assert(!isEmpty)
|
||||||
|
return self.withUnsafeMutableBytes { (ptr: UnsafeMutableRawBufferPointer) -> R in
|
||||||
|
let bytes = ptr.bindMemory(to: Int8.self)
|
||||||
|
return body(bytes.baseAddress!) // might crash if self.count == 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ struct Curve25519 {
|
||||||
|
|
||||||
static func generatePrivateKey() -> Data {
|
static func generatePrivateKey() -> Data {
|
||||||
var privateKey = Data(repeating: 0, count: TunnelConfiguration.keyLength)
|
var privateKey = Data(repeating: 0, count: TunnelConfiguration.keyLength)
|
||||||
privateKey.withUnsafeMutableBytes { bytes in
|
privateKey.withUnsafeMutableUInt8Bytes { bytes in
|
||||||
curve25519_generate_private_key(bytes)
|
curve25519_generate_private_key(bytes)
|
||||||
}
|
}
|
||||||
assert(privateKey.count == TunnelConfiguration.keyLength)
|
assert(privateKey.count == TunnelConfiguration.keyLength)
|
||||||
|
@ -19,8 +19,8 @@ struct Curve25519 {
|
||||||
static func generatePublicKey(fromPrivateKey privateKey: Data) -> Data {
|
static func generatePublicKey(fromPrivateKey privateKey: Data) -> Data {
|
||||||
assert(privateKey.count == TunnelConfiguration.keyLength)
|
assert(privateKey.count == TunnelConfiguration.keyLength)
|
||||||
var publicKey = Data(repeating: 0, count: TunnelConfiguration.keyLength)
|
var publicKey = Data(repeating: 0, count: TunnelConfiguration.keyLength)
|
||||||
privateKey.withUnsafeBytes { privateKeyBytes in
|
privateKey.withUnsafeUInt8Bytes { privateKeyBytes in
|
||||||
publicKey.withUnsafeMutableBytes { bytes in
|
publicKey.withUnsafeMutableUInt8Bytes { bytes in
|
||||||
curve25519_derive_public_key(bytes, privateKeyBytes)
|
curve25519_derive_public_key(bytes, privateKeyBytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -486,7 +486,7 @@ class TunnelContainer: NSObject {
|
||||||
completionHandler(tunnelConfiguration)
|
completionHandler(tunnelConfiguration)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
guard nil != (try? session.sendProviderMessage(Data(bytes: [ 0 ]), responseHandler: {
|
guard nil != (try? session.sendProviderMessage(Data([ UInt8(0) ]), responseHandler: {
|
||||||
guard self.status != .inactive, let data = $0, let base = self.tunnelConfiguration, let settings = String(data: data, encoding: .utf8) else {
|
guard self.status != .inactive, let data = $0, let base = self.tunnelConfiguration, let settings = String(data: data, encoding: .utf8) else {
|
||||||
completionHandler(self.tunnelConfiguration)
|
completionHandler(self.tunnelConfiguration)
|
||||||
return
|
return
|
||||||
|
|
|
@ -31,7 +31,7 @@ class ZipArchive {
|
||||||
let fileName = input.fileName
|
let fileName = input.fileName
|
||||||
let contents = input.contents
|
let contents = input.contents
|
||||||
zipOpenNewFileInZip(zipFile, fileName.cString(using: .utf8), nil, nil, 0, nil, 0, nil, Z_DEFLATED, Z_DEFAULT_COMPRESSION)
|
zipOpenNewFileInZip(zipFile, fileName.cString(using: .utf8), nil, nil, 0, nil, 0, nil, Z_DEFLATED, Z_DEFAULT_COMPRESSION)
|
||||||
contents.withUnsafeBytes { (ptr: UnsafePointer<UInt8>) -> Void in
|
contents.withUnsafeUInt8Bytes { ptr -> Void in
|
||||||
zipWriteInFileInZip(zipFile, UnsafeRawPointer(ptr), UInt32(contents.count))
|
zipWriteInFileInZip(zipFile, UnsafeRawPointer(ptr), UInt32(contents.count))
|
||||||
}
|
}
|
||||||
zipCloseFileInZip(zipFile)
|
zipCloseFileInZip(zipFile)
|
||||||
|
|
Loading…
Reference in New Issue