Notice
Recent Posts
Recent Comments
Link
투케이2K
145. (swift5/xcode) [deprecated 코드 대응] withUnsafeBytes is deprecated: use withUnsafeBytes<R>(...) 본문
Swift
145. (swift5/xcode) [deprecated 코드 대응] withUnsafeBytes is deprecated: use withUnsafeBytes<R>(...)
투케이2K 2023. 10. 17. 07:48[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
------------------------------------------------------------------------------------------
[내용 설명]
------------------------------------------------------------------------------------------
swift 5.0 이상 버전에서 부터 withUnsafeBytes 호출 시 배열의 연속 저장소의 기본 바이트에 대한
포인터를 사용하여 지정된 클로저를 호출 필요
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
[변경 코드] : [예시 - AES Crypt] : [input == Data 타입]
------------------------------------------------------------------------------------------
// MARK: [키 생성 상태 값 지정]
var status: CCCryptorStatus = CCCryptorStatus(kCCSuccess)
input.withUnsafeBytes { dataBytes in
let encryptedBytes: UnsafePointer<UInt8> = dataBytes.baseAddress!.assumingMemoryBound(to: UInt8.self)
iv.withUnsafeBytes { dataBytes in
let ivBytes: UnsafePointer<UInt8> = dataBytes.baseAddress!.assumingMemoryBound(to: UInt8.self)
key.withUnsafeBytes { dataBytes in
let keyBytes: UnsafePointer<UInt8> = dataBytes.baseAddress!.assumingMemoryBound(to: UInt8.self)
status = CCCrypt(
operation,
// MARK: [SecretKeySpec : 인코딩, 디코딩 수행에서 AES 지정]
CCAlgorithm(secretKeySpecType),
// MARK: [Cipher : 인코딩, 디코딩 수행에서 필요한 패딩 지정]
CCOptions(padding),
// MARK: [Cipher : KeySpec + iv]
keyBytes, // [key]
key.count, // [keylength]
// MARK: [Cipher : KeySpec + iv]
ivBytes, // [iv]
// MARK: [inputData]
encryptedBytes, // [inputData]
input.count, // [inputDataLength]
// MARK: [outputData]
&outBytes, // [outputData]
outBytes.count, // [outputDataLength]
&outLength // [dataOutMoved]
)
}
}
}
guard status == kCCSuccess else {
throw Error.cryptoFailed(status: status)
}
return Data(bytes: UnsafePointer<UInt8>(outBytes), count: outLength)
}
------------------------------------------------------------------------------------------
반응형
'Swift' 카테고리의 다른 글
Comments