mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
27 lines
916 B
Swift
27 lines
916 B
Swift
import Foundation
|
|
|
|
func paddedSecureIdData(_ data: Data) -> Data {
|
|
var paddingCount = Int(47 + arc4random_uniform(255 - 47))
|
|
paddingCount -= ((data.count + paddingCount) % 16)
|
|
var result = Data(count: paddingCount + data.count)
|
|
result.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<UInt8>) -> Void in
|
|
bytes.advanced(by: 0).pointee = UInt8(paddingCount)
|
|
arc4random_buf(bytes.advanced(by: 1), paddingCount - 1)
|
|
data.withUnsafeBytes { (source: UnsafePointer<UInt8>) -> Void in
|
|
memcpy(bytes.advanced(by: paddingCount), source, data.count)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func unpaddedSecureIdData(_ data: Data) -> Data? {
|
|
var paddingCount: UInt8 = 0
|
|
data.copyBytes(to: &paddingCount, count: 1)
|
|
|
|
if paddingCount < 0 || paddingCount > data.count {
|
|
return nil
|
|
}
|
|
|
|
return data.subdata(in: Int(paddingCount) ..< data.count)
|
|
}
|