Add "Save File" and "Save Content JSON" options to profile share menu, allowing users to save profiles directly to a chosen location using fileExporter instead of the system share sheet.
29 lines
754 B
Swift
29 lines
754 B
Swift
import Foundation
|
|
|
|
enum CRC32 {
|
|
private static let table: [UInt32] = {
|
|
var table = [UInt32](repeating: 0, count: 256)
|
|
for i in 0 ..< 256 {
|
|
var crc = UInt32(i)
|
|
for _ in 0 ..< 8 {
|
|
if crc & 1 != 0 {
|
|
crc = (crc >> 1) ^ 0xEDB8_8320
|
|
} else {
|
|
crc = crc >> 1
|
|
}
|
|
}
|
|
table[i] = crc
|
|
}
|
|
return table
|
|
}()
|
|
|
|
static func checksum(_ data: Data, k: Int) -> UInt32 {
|
|
var crc: UInt32 = 0xFFFF_FFFF
|
|
for byte in data {
|
|
let index = Int((crc ^ UInt32(byte)) & 0xFF)
|
|
crc = (crc >> 8) ^ table[index]
|
|
}
|
|
return crc ^ UInt32(k) ^ 0xFFFF_FFFF
|
|
}
|
|
}
|