Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Threema/Threema/Utilities/   (Social Medium ©)  Datei vom 26.9.2026 mit Größe 5 kB image not shown  

Quelle  DeleteRevokeIdentityManager.swift   Sprache: JAVA

 

import CocoaLumberjackSwift
import FileUtility
import Foundation
import Keychain
import UserNotifications

public enum DeleteRevokeIdentityManager {
    
    enum DeleteRevokeIdentityManagerError: Error {
        case revocationFailed
    }
    
    /// Since business might no be available in all cases (e.g. when entering the passcode), and we need
    /// to delete all data, we cannot remove everything that would make use of business.
    static func deleteLocalDataWithoutBusinessReady() {
        // Files
        UserDefaults.resetStandardUserDefaults()
        FileUtility.shared.removeItemsInAllDirectories(appGroupID: AppGroup.groupID())
       
        // Keychain
        do {
            try KeychainManager.deleteAllItems()
        }
        catch {
            DDLogError("Not all Keychain items could be deleted: \(error)")
        }
        
        KKPasscodeLock.shared().disablePasscode()
    }
    
    static func deleteLocalData() async {
        // Stop RS monitoring to prevent any monitoring error crashing during deletion
        do {
            try KeychainManager.deleteRemoteSecret()
            await RemoteSecretProvider.remoteSecretManager.stopMonitoring()
        }
        catch {
            DDLogError("Stopping RS monitoring failed: \(error)")
        }
        
        // Multi device
        do {
            let multiDeviceManager = MultiDeviceManager()
            try await multiDeviceManager.disableMultiDevice(runForwardSecurityRefreshSteps: false)
        }
        catch {
            DDLogError("Disabling multi-device: \(error)")
        }

        // My identity
        MyIdentityStore.shared().destroy()
        UserReminder.markIdentityAsDeleted()

        // Threema Safe
        let safeConfigManager = SafeConfigManager()
        safeConfigManager.destroy()
        let safeStore = SafeStore(
            safeConfigManager: safeConfigManager,
            serverApiConnector: ServerAPIConnector(),
            groupManager: BusinessInjector.ui.groupManager,
            myIdentityStore: BusinessInjector.ui.myIdentityStore,
            phoneNumberNormalizer: PhoneNumberNormalizer()
        )
        let safeManager = SafeManager(
            safeConfigManager: safeConfigManager,
            safeStore: safeStore,
            safeAPIService: SafeApiService()
        )
        safeManager.setBackupReminder()

        // DB & Files

        // Tear down SQLite-backed stores before wiping the directory
        try? PersistenceManager(
            appGroupID: AppGroup.groupID(),
            userDefaults: AppGroup.userDefaults(),
            remoteSecretManager: RemoteSecretProvider.remoteSecretManager
        ).databaseManager.eraseDB()

        BusinessInjector.ui.dhSessionStore.close()

        FileUtility.shared.removeItemsInAllDirectories(appGroupID: AppGroup.groupID())

        UserDefaults.resetStandardUserDefaults()

        AppGroup.resetUserDefaults()

        Task { @MainActor in
            UIApplication.shared.unregisterForRemoteNotifications()
            do {
                try await UNUserNotificationCenter.current().setBadgeCount(0)
            }
            catch {
                DDLogError("[DeleteRevokeIdentityManager] Failed to reset badge count with error: \(error)")
            }
        }

        KKPasscodeLock.shared().disablePasscode()

        if TargetManager.isBusinessApp {
            // Delete the license when we delete the ID, to give the user a chance to use a new license.
            // The license may have been supplied by MDM, so we load it again.
            LicenseStore.shared().deleteLicense()
            let mdmSetup = MDMSetup()
            mdmSetup?.deleteThreemaMdm()
        }

        // Keychain
        do {
            try KeychainManager.deleteAllItems()
        }
        catch {
            DDLogError("Not all Keychain items could be deleted: \(error)")
        }
    }

    static func deleteBackups() {
        // Delete Threema Safe backup
        let safeConfigManager = SafeConfigManager()
        let safeStore = SafeStore(
            safeConfigManager: safeConfigManager,
            serverApiConnector: ServerAPIConnector(),
            groupManager: BusinessInjector.ui.groupManager,
            myIdentityStore: BusinessInjector.ui.myIdentityStore,
            phoneNumberNormalizer: PhoneNumberNormalizer()
        )
        let safeManager = SafeManager(
            safeConfigManager: safeConfigManager,
            safeStore: safeStore,
            safeAPIService: SafeApiService()
        )
        safeManager.deactivate()

        // Delete ID Export
        do {
            try IdentityBackupStore.deleteIdentityBackup()
        }
        catch {
            NotificationPresenterWrapper.shared.present(type: .deleteIdentityBackupFailed)
        }
    }

    static func revokeIdentity() async throws {
        
        try await withCheckedThrowingContinuation { continuation in
            let connector = ServerAPIConnector()
            connector.revokeID(MyIdentityStore.shared()) {
                continuation.resume()
            } onError: { error in
                guard let error else {
                    continuation.resume(throwing: DeleteRevokeIdentityManagerError.revocationFailed)
                    return
                }
                continuation.resume(throwing: error)
            }
        }
    }
}

Messung
CHZG
869410093

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.