diff options
Diffstat (limited to 'Hotline/Utility')
| -rw-r--r-- | Hotline/Utility/FoundationExtensions.swift | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Hotline/Utility/FoundationExtensions.swift b/Hotline/Utility/FoundationExtensions.swift index 14e76d5..0c8966a 100644 --- a/Hotline/Utility/FoundationExtensions.swift +++ b/Hotline/Utility/FoundationExtensions.swift @@ -202,6 +202,19 @@ extension Array where Element == UInt8 { return str } + mutating func consumeLongPString() -> String? { + let (str, len) = self.readLongPString(at: 0) + guard let str = str else { + return nil + } + if len == 0 { + return "" + } + + self.removeFirst(len) + return str + } + mutating func consumeString(_ length: Int) -> String? { guard let val = self.readString(at: 0, length: length) else { return nil @@ -388,6 +401,23 @@ extension Array where Element == UInt8 { mutating func appendData(_ data: [UInt8]) { self.append(contentsOf: data) } + + mutating func hotlineEncrypt() { + for i in (0..<self.count).reversed() { + self[i] = 0xFF - self[i] + } + } + + func hotlineEncrypted() -> [UInt8] { + var cpy = [UInt8](self) + + + + for i in (0..<cpy.count).reversed() { + cpy[i] = 0xFF - cpy[i] + } + return cpy + } } extension Data { |