// // MockKeychain.swift // bitchat // // This is free and unencumbered software released into the public domain. // For more information, see // import Foundation @testable import bitchat final class MockKeychain: KeychainManagerProtocol { private var storage: [String: Data] = [:] private var serviceStorage: [String: [String: Data]] = [:] func saveIdentityKey(_ keyData: Data, forKey key: String) -> Bool { storage[key] = keyData return true } func getIdentityKey(forKey key: String) -> Data? { storage[key] } func deleteIdentityKey(forKey key: String) -> Bool { storage.removeValue(forKey: key) return true } func deleteAllKeychainData() -> Bool { storage.removeAll() serviceStorage.removeAll() return true } func secureClear(_ data: inout Data) { data = Data() } func secureClear(_ string: inout String) { string = "" } func verifyIdentityKeyExists() -> Bool { storage["identity_noiseStaticKey"] != nil } // MARK: - Generic Data Storage (consolidated from KeychainHelper) func save(key: String, data: Data, service: String, accessible: CFString?) { if serviceStorage[service] == nil { serviceStorage[service] = [:] } serviceStorage[service]?[key] = data } func load(key: String, service: String) -> Data? { serviceStorage[service]?[key] } func delete(key: String, service: String) { serviceStorage[service]?.removeValue(forKey: key) } } /// Typealias for backwards compatibility with tests using MockKeychainHelper typealias MockKeychainHelper = MockKeychain