|
@@ -11,6 +11,7 @@ import nuSDKService
|
|
|
import AVFoundation
|
|
|
import AVKit
|
|
|
import CoreTelephony
|
|
|
+import CryptoKit
|
|
|
|
|
|
public class SecurityShield: NSObject {
|
|
|
|
|
@@ -23,7 +24,7 @@ public class SecurityShield: NSObject {
|
|
|
}
|
|
|
|
|
|
private static func pull() {
|
|
|
- let me = UserDefaults.standard.string(forKey: "me")!
|
|
|
+ let me: String! = SecureUserDefaultsSS.shared.value(forKey: "me")!
|
|
|
let tmessage = TMessageSS()
|
|
|
tmessage.mCode = "SS01"
|
|
|
tmessage.mStatus = CoreMessage_TMessageUtil.getTID()
|
|
@@ -778,9 +779,9 @@ private class Process: NSObject {
|
|
|
}
|
|
|
|
|
|
private static func isSimSwap() -> Bool {
|
|
|
- guard let savedSimInfo = UserDefaults.standard.dictionary(forKey: "SavedSIMInfo") as? [String: [String: String]] else {
|
|
|
+ guard let savedSimInfo: [String: [String: String]]? = SecureUserDefaultsSS.shared.value(forKey: "SavedSIMInfo") else {
|
|
|
let simInfo = getSIMInfo()
|
|
|
- UserDefaults.standard.set(simInfo, forKey: "SavedSIMInfo")
|
|
|
+ SecureUserDefaultsSS.shared.set(simInfo, forKey: "SavedSIMInfo")
|
|
|
return false
|
|
|
}
|
|
|
let currentSimInfo = getSIMInfo()
|
|
@@ -836,480 +837,663 @@ private class Service {
|
|
|
|
|
|
private class Preference {
|
|
|
static func getAppId() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_USER_APP_ID) ?? ""
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_USER_APP_ID) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return ""
|
|
|
}
|
|
|
|
|
|
static func setAppId(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_USER_APP_ID)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_USER_APP_ID)
|
|
|
}
|
|
|
|
|
|
static func getAccount() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_USER_ACCOUNT) ?? ""
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_USER_ACCOUNT) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return ""
|
|
|
}
|
|
|
|
|
|
static func setAccount(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_USER_ACCOUNT)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_USER_ACCOUNT)
|
|
|
}
|
|
|
|
|
|
static func getDomainOpr() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_DOMAIN_OPR) ?? "https://nexilis.io/"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_DOMAIN_OPR) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "https://nexilis.io/"
|
|
|
}
|
|
|
|
|
|
static func getIpOpr() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_IP_PORT_OPR) ?? "34.101.172.194:42823"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_IP_PORT_OPR) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "34.101.172.194:42823"
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Keylogger
|
|
|
*/
|
|
|
static func setPreventKeylogger(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER)
|
|
|
}
|
|
|
|
|
|
static func getPreventKeylogger() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_KEYLOGGER)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_KEYLOGGER) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setPreventKeyloggerAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getPreventKeyloggerAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setKeyloggerAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getKeyloggerAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_TITLE) ?? PreferencesKey.ss_screenshare_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_screenshare_title
|
|
|
}
|
|
|
static func setKeyloggerAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getKeyloggerAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_MESSAGE) ?? PreferencesKey.ss_screenshare_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_KEYLOGGER_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_screenshare_warning
|
|
|
}
|
|
|
/**
|
|
|
* Screen Capture
|
|
|
*/
|
|
|
static func setPreventScreenCapture(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE)
|
|
|
}
|
|
|
|
|
|
static func getPreventScreenCapture() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setPreventScreenCaptureAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getPreventScreenCaptureAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckScreenCaptureAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenCaptureAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_TITLE) ?? PreferencesKey.ss_screenshare_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_screenshare_title
|
|
|
}
|
|
|
static func setScreenCaptureAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getScreenCaptureAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_MESSAGE) ?? PreferencesKey.ss_screenshare_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CAPTURE_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_screenshare_warning
|
|
|
}
|
|
|
/**
|
|
|
* Emulator
|
|
|
*/
|
|
|
static func setCheckEmulator(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR)
|
|
|
}
|
|
|
|
|
|
static func getCheckEmulator() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_EMULATOR)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_EMULATOR) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckEmulatorAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckEmulatorAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_EMULATOR_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_EMULATOR_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckEmulatorAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckEmulatorAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_TITLE) ?? PreferencesKey.ss_emulator_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_emulator_title
|
|
|
}
|
|
|
static func setCheckEmulatorAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckEmulatorAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_MESSAGE) ?? PreferencesKey.ss_emulator_continue
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_EMULATOR_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_emulator_continue
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Root/Jailbreak Detection
|
|
|
*/
|
|
|
static func setCheckRooted(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED)
|
|
|
}
|
|
|
|
|
|
static func getCheckRooted() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_ROOTED)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_ROOTED) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckRootedAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckRootedAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckRootedAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckRootedAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_TITLE) ?? PreferencesKey.ss_rooted_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_rooted_title
|
|
|
}
|
|
|
static func setCheckRootedAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckRootedAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_MESSAGE) ?? PreferencesKey.ss_rooted_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_ROOTED_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_rooted_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Outdated OS Detection
|
|
|
*/
|
|
|
static func setCheckOutdatedOs(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_OUTDATED_OS)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_OUTDATED_OS)
|
|
|
}
|
|
|
|
|
|
static func getCheckOutdatedOs() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_OUTDATED_OS)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_OUTDATED_OS) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckOutdatedOsAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckOutdatedOsAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_ROOTED_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckOutdatedOsAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckOutdatedOsAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_TITLE) ?? PreferencesKey.ss_os_not_supported_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_os_not_supported_title
|
|
|
}
|
|
|
static func setCheckOutdatedOsAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckOutdatedOsAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_MESSAGE) ?? PreferencesKey.ss_os_not_supported_continue
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_OUTDATED_OS_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_os_not_supported_continue
|
|
|
}
|
|
|
static func setMinimumOsVersion(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_MINIMUM_OS_VERSION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_MINIMUM_OS_VERSION)
|
|
|
}
|
|
|
|
|
|
static func getMinimumOsVersion() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_MINIMUM_OS_VERSION) ?? "14"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_MINIMUM_OS_VERSION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "14"
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Tempering Detection
|
|
|
*/
|
|
|
static func setCheckTempering(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING)
|
|
|
}
|
|
|
|
|
|
static func getCheckTempering() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_TEMPERING)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_TEMPERING) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckTemperingAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckTemperingAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_TEMPERING_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_TEMPERING_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckTemperingAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckTemperingAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_TITLE) ?? PreferencesKey.ss_tempering_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_tempering_title
|
|
|
}
|
|
|
static func setCheckTemperingAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckTemperingAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_MESSAGE) ?? PreferencesKey.ss_tempering_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_TEMPERING_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_tempering_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Debugging Detection
|
|
|
*/
|
|
|
static func setCheckDebugging(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING)
|
|
|
}
|
|
|
|
|
|
static func getCheckDebugging() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_DEBUGGING)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_DEBUGGING) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckDebuggingAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckDebuggingAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_DEBUGGING_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_DEBUGGING_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckDebuggingAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckDebuggingAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_TITLE) ?? PreferencesKey.ss_debugging_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_debugging_title
|
|
|
}
|
|
|
static func setCheckDebuggingAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckDebuggingAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_MESSAGE) ?? PreferencesKey.ss_debugging_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_DEBUGGING_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_debugging_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Screen Casting
|
|
|
*/
|
|
|
static func setCheckScreenCasting(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenCasting() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckScreenCastingAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenCastingAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckScreenCastingAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenCastingAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_TITLE) ?? PreferencesKey.ss_debugging_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_debugging_title
|
|
|
}
|
|
|
static func setCheckScreenCastingAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenCastingAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_MESSAGE) ?? PreferencesKey.ss_debugging_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_CASTING_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_debugging_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Screen Overlay
|
|
|
*/
|
|
|
static func setCheckScreenOverlay(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenOverlay() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckScreenOverlayAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenOverlayAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckScreenOverlayAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenOverlayAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_TITLE) ?? PreferencesKey.ss_screenoverlay_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_screenoverlay_title
|
|
|
}
|
|
|
static func setCheckScreenOverlayAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckScreenOverlayAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_MESSAGE) ?? PreferencesKey.ss_screenoverlay_continue
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SCREEN_OVERLAY_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_screenoverlay_continue
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Call Redirection Detection
|
|
|
*/
|
|
|
static func setCheckCallForward(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD)
|
|
|
}
|
|
|
|
|
|
static func getCheckCallForward() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckCallForwardAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckCallForwardAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckCallForwardAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckCallForwardAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_TITLE) ?? PreferencesKey.ss_callforward_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_callforward_title
|
|
|
}
|
|
|
static func setCheckCallForwardAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckCallForwardAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_MESSAGE) ?? PreferencesKey.ss_callforward_continue
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_CALL_FORWARD_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_callforward_continue
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Multiple Login Detection
|
|
|
*/
|
|
|
static func setCheckMultipleLogin(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN)
|
|
|
}
|
|
|
|
|
|
static func getCheckMultipleLogin() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckMultipleLoginAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckMultipleLoginAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckMultipleLoginAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckMultipleLoginAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_TITLE) ?? PreferencesKey.ss_multiple_login_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_multiple_login_title
|
|
|
}
|
|
|
static func setCheckMultipleLoginAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckMultipleLoginAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_MESSAGE) ?? PreferencesKey.ss_multiple_login_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_MULTIPLE_LOGIN_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_multiple_login_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* SIM Swap Detection
|
|
|
*/
|
|
|
static func setCheckSimSwap(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP)
|
|
|
}
|
|
|
|
|
|
static func getCheckSimSwap() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_SIM_SWAP)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SIM_SWAP) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckSimSwapAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckSimSwapAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckSimSwapAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckSimSwapAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_TITLE) ?? PreferencesKey.ss_simswap_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_simswap_title
|
|
|
}
|
|
|
static func setCheckSimSwapAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckSimSwapAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_MESSAGE) ?? PreferencesKey.ss_simswap_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_SIM_SWAP_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_simswap_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Geo-Velocity Checks
|
|
|
*/
|
|
|
static func setCheckGeoVelocity(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY)
|
|
|
}
|
|
|
|
|
|
static func getCheckGeoVelocity() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckGeoVelocityAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckGeoVelocityAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckGeoVelocityAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckGeoVelocityAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_TITLE) ?? PreferencesKey.ss_geo_velocity_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_geo_velocity_title
|
|
|
}
|
|
|
static func setCheckGeoVelocityAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckGeoVelocityAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_MESSAGE) ?? PreferencesKey.ss_geo_velocity_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_GEO_VELOCITY_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_geo_velocity_warning
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Behavioral Anomaly Detection
|
|
|
*/
|
|
|
static func setCheckBehaviourAnalysis(value: Bool){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS)
|
|
|
}
|
|
|
|
|
|
static func getCheckBehaviourAnalysis() -> Bool {
|
|
|
- return UserDefaults.standard.bool(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS)
|
|
|
+ if let value: Bool = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return false
|
|
|
}
|
|
|
static func setCheckBehaviourAnalysisAction(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ACTION)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ACTION)
|
|
|
}
|
|
|
|
|
|
static func getCheckBehaviourAnalysisAction() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ACTION) ?? "0"
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ACTION) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return "0"
|
|
|
}
|
|
|
static func setCheckBehaviourAnalysisAlertTitle(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_TITLE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_TITLE)
|
|
|
}
|
|
|
|
|
|
static func getCheckBehaviourAnalysisAlertTitle() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_TITLE) ?? PreferencesKey.ss_behaviour_anomaly_title
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_TITLE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_behaviour_anomaly_title
|
|
|
}
|
|
|
static func setCheckBehaviourAnalysisAlertMessage(value: String){
|
|
|
- UserDefaults.standard.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_MESSAGE)
|
|
|
+ SecureUserDefaultsSS.shared.set(value, forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_MESSAGE)
|
|
|
}
|
|
|
|
|
|
static func getCheckBehaviourAnalysisAlertMessage() -> String {
|
|
|
- return UserDefaults.standard.string(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_MESSAGE) ?? PreferencesKey.ss_behaviour_anomaly_warning
|
|
|
+ if let value: String = SecureUserDefaultsSS.shared.value(forKey: PreferencesKey.SS_CHECK_BEHAVIOUR_ANALYSIS_ALERT_MESSAGE) {
|
|
|
+ return value
|
|
|
+ }
|
|
|
+ return PreferencesKey.ss_behaviour_anomaly_warning
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1692,7 +1876,7 @@ public class TMessageSS {
|
|
|
let VERCOD = "Bd"
|
|
|
|
|
|
func getCLMUserId() -> String {
|
|
|
- guard let me = UserDefaults.standard.string(forKey: "me") else {
|
|
|
+ guard let me: String = SecureUserDefaultsSS.shared.value(forKey: "me") else {
|
|
|
return ""
|
|
|
}
|
|
|
return me
|
|
@@ -2052,3 +2236,119 @@ public class SSLibAlertController: UIAlertController {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+public class SecureUserDefaultsSS {
|
|
|
+ static let shared = SecureUserDefaultsSS()
|
|
|
+ private let defaults: UserDefaults
|
|
|
+ private let prefsKeyAlias = "_iosx_security_master_key_easysoft_"
|
|
|
+
|
|
|
+ // Initialization with a SymmetricKey
|
|
|
+ init(defaults: UserDefaults = .standard) {
|
|
|
+ self.defaults = defaults
|
|
|
+ do {
|
|
|
+ try generateAndStorePrefsKey()
|
|
|
+ } catch {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func generateAndStorePrefsKey() throws {
|
|
|
+ if try isKeyExists(keyAliasCode: prefsKeyAlias) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let key = SymmetricKey(size: .bits256)
|
|
|
+ let keyData = key.withUnsafeBytes { Data($0) }
|
|
|
+
|
|
|
+ let query: [String: Any] = [
|
|
|
+ kSecClass as String: kSecClassKey,
|
|
|
+ kSecAttrApplicationTag as String: prefsKeyAlias,
|
|
|
+ kSecValueData as String: keyData,
|
|
|
+ kSecAttrAccessible as String: kSecAttrAccessibleAfterFirstUnlock
|
|
|
+ ]
|
|
|
+
|
|
|
+ SecItemDelete(query as CFDictionary) // Remove if it exists
|
|
|
+ let status = SecItemAdd(query as CFDictionary, nil)
|
|
|
+ guard status == errSecSuccess else {
|
|
|
+ throw NSError(domain: "KeychainError", code: Int(status), userInfo: nil)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func isKeyExists(keyAliasCode: String) throws -> Bool {
|
|
|
+ let query: [String: Any] = [
|
|
|
+ kSecClass as String: kSecClassKey,
|
|
|
+ kSecAttrApplicationTag as String: keyAliasCode,
|
|
|
+ kSecReturnData as String: false // We only check existence, not retrieve data
|
|
|
+ ]
|
|
|
+
|
|
|
+ let status = SecItemCopyMatching(query as CFDictionary, nil)
|
|
|
+ if status == errSecItemNotFound {
|
|
|
+ return false
|
|
|
+ } else if status == errSecSuccess {
|
|
|
+ return true
|
|
|
+ } else {
|
|
|
+ throw NSError(domain: "KeychainError", code: Int(status), userInfo: nil)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func getPrefsKey() throws -> SymmetricKey {
|
|
|
+ let query: [String: Any] = [
|
|
|
+ kSecClass as String: kSecClassKey,
|
|
|
+ kSecAttrApplicationTag as String: prefsKeyAlias,
|
|
|
+ kSecReturnData as String: true
|
|
|
+ ]
|
|
|
+
|
|
|
+ var item: CFTypeRef?
|
|
|
+ let status = SecItemCopyMatching(query as CFDictionary, &item)
|
|
|
+ guard status == errSecSuccess else {
|
|
|
+ throw NSError(domain: "KeychainError", code: Int(status), userInfo: nil)
|
|
|
+ }
|
|
|
+
|
|
|
+ guard let keyData = item as? Data else {
|
|
|
+ throw NSError(domain: "KeyRetrievalError", code: -1, userInfo: nil)
|
|
|
+ }
|
|
|
+
|
|
|
+ return SymmetricKey(data: keyData)
|
|
|
+ }
|
|
|
+
|
|
|
+ func encrypt(data: Data) throws -> Data {
|
|
|
+ let key = try getPrefsKey()
|
|
|
+ let sealedBox = try AES.GCM.seal(data, using: key)
|
|
|
+ return sealedBox.combined!
|
|
|
+ }
|
|
|
+
|
|
|
+ func decrypt(data: Data) throws -> Data {
|
|
|
+ let key = try getPrefsKey()
|
|
|
+ let sealedBox = try AES.GCM.SealedBox(combined: data)
|
|
|
+ return try AES.GCM.open(sealedBox, using: key)
|
|
|
+ }
|
|
|
+
|
|
|
+ func set<T: Codable>(_ value: T, forKey key: String) {
|
|
|
+ let encoder = JSONEncoder()
|
|
|
+ guard let encodedData = try? encoder.encode(value),
|
|
|
+ let encryptedData = try? encrypt(data: encodedData) else {
|
|
|
+ print("Failed to encrypt data")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defaults.set(encryptedData, forKey: key)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Retrieve a value
|
|
|
+ func value<T: Codable>(forKey key: String) -> T? {
|
|
|
+ guard let encryptedData = defaults.data(forKey: key),
|
|
|
+ let decryptedData = try? decrypt(data: encryptedData) else {
|
|
|
+ print("Failed to decrypt data")
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ let decoder = JSONDecoder()
|
|
|
+ return try? decoder.decode(T.self, from: decryptedData)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Remove a value
|
|
|
+ func removeValue(forKey key: String) {
|
|
|
+ defaults.removeObject(forKey: key)
|
|
|
+ }
|
|
|
+
|
|
|
+ func sync() {
|
|
|
+ defaults.synchronize()
|
|
|
+ }
|
|
|
+}
|