Files
Kecalek_python/ios_client 0.8.5/Kecalek/Utilities/Constants.swift
2026-03-14 12:43:56 +01:00

39 lines
1.8 KiB
Swift

import Foundation
enum Constants: Sendable {
nonisolated static let version = "0.8.5"
nonisolated static let maxMessageBytes = 65536
nonisolated static let maxImageBytes = 5 * 1024 * 1024 // 5 MB
nonisolated static let maxFileBytes = 50 * 1024 * 1024 // 50 MB
nonisolated static let imageChunkSize = 32768 // 32 KB (matches Python IMAGE_CHUNK_SIZE)
nonisolated static let selfDeviceId = "00000000-0000-0000-0000-000000000000"
nonisolated static let opkReplenishThreshold = 20
nonisolated static let opkBatchSize = 50
nonisolated static let spkRotationDays = 7
nonisolated static let maxSkip = 256
nonisolated static let maxSenderKeySkip = 256
nonisolated static let deviceBundleCacheTTL: TimeInterval = 300 // 5 minutes
nonisolated static let sendReceiveTimeout: TimeInterval = 30
nonisolated static let reconnectBaseDelay: TimeInterval = 1
nonisolated static let reconnectMaxDelay: TimeInterval = 30
nonisolated static let pbkdf2Iterations: UInt32 = 600_000
nonisolated static let ecp1Magic = Data([0x45, 0x43, 0x50, 0x31]) // "ECP1"
// HKDF info/salt strings matching Python
nonisolated static let x3dhInfo = "EncryptedChat_X3DH"
nonisolated static let rootKeyInfo = "EncryptedChat_RootKey"
nonisolated static let selfEncryptionSalt = "self_encryption"
nonisolated static let selfEncryptionInfo = "EncryptedChat_SelfKey"
nonisolated static let localStorageSalt = "local_storage"
nonisolated static let localStorageInfo = "EncryptedChat_LocalStorage"
nonisolated static let senderKeyChainInfo = "SenderKeyChain"
// Server connection defaults
nonisolated static let defaultHost = "chat.ai-tech.news"
nonisolated static let defaultPort: UInt16 = 9999
}