capacitor-freerasp 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +57 -0
- package/CapacitorFreerasp.podspec +1 -1
- package/README.md +8 -8
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/aheaditec/freerasp/FreeraspPlugin.kt +39 -18
- package/android/src/main/java/com/aheaditec/freerasp/ScreenProtector.kt +24 -2
- package/android/src/main/java/com/aheaditec/freerasp/ThreatHandler.kt +36 -18
- package/android/src/main/java/com/aheaditec/freerasp/events/BaseRaspEvent.kt +7 -0
- package/android/src/main/java/com/aheaditec/freerasp/events/RaspExecutionStateEvent.kt +22 -0
- package/android/src/main/java/com/aheaditec/freerasp/events/ThreatEvent.kt +69 -0
- package/android/src/main/java/com/aheaditec/freerasp/models/CapSuspiciousAppInfo.kt +1 -0
- package/android/src/main/java/com/aheaditec/freerasp/utils/Extensions.kt +1 -0
- package/android/src/main/java/com/aheaditec/freerasp/utils/RandomGenerator.kt +24 -0
- package/android/src/main/java/com/aheaditec/freerasp/utils/Utils.kt +3 -5
- package/dist/esm/api/listeners/raspExecutionState.d.ts +2 -0
- package/dist/esm/api/listeners/raspExecutionState.js +23 -0
- package/dist/esm/api/listeners/raspExecutionState.js.map +1 -0
- package/dist/esm/api/listeners/threat.d.ts +2 -0
- package/dist/esm/api/listeners/threat.js +84 -0
- package/dist/esm/api/listeners/threat.js.map +1 -0
- package/dist/esm/api/methods/capacitor.d.ts +4 -0
- package/dist/esm/api/methods/capacitor.js +11 -0
- package/dist/esm/api/methods/capacitor.js.map +1 -0
- package/dist/esm/api/methods/native.d.ts +6 -0
- package/dist/esm/api/methods/native.js +32 -0
- package/dist/esm/api/methods/native.js.map +1 -0
- package/dist/esm/api/nativeModules.d.ts +2 -0
- package/dist/esm/api/nativeModules.js +3 -0
- package/dist/esm/api/nativeModules.js.map +1 -0
- package/dist/esm/channels/raspExecutionState.d.ts +3 -0
- package/dist/esm/channels/raspExecutionState.js +27 -0
- package/dist/esm/channels/raspExecutionState.js.map +1 -0
- package/dist/esm/channels/threat.d.ts +3 -0
- package/dist/esm/channels/threat.js +34 -0
- package/dist/esm/channels/threat.js.map +1 -0
- package/dist/esm/index.d.ts +7 -12
- package/dist/esm/index.js +7 -158
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/raspExecutionState.d.ts +6 -0
- package/dist/esm/models/raspExecutionState.js +10 -0
- package/dist/esm/models/raspExecutionState.js.map +1 -0
- package/dist/esm/models/threat.d.ts +26 -0
- package/dist/esm/{definitions.js → models/threat.js} +7 -3
- package/dist/esm/models/threat.js.map +1 -0
- package/dist/esm/{definitions.d.ts → types/types.d.ts} +37 -44
- package/dist/esm/types/types.js +2 -0
- package/dist/esm/types/types.js.map +1 -0
- package/dist/esm/utils/malware.d.ts +3 -0
- package/dist/esm/utils/malware.js +22 -0
- package/dist/esm/utils/malware.js.map +1 -0
- package/dist/esm/utils/utils.d.ts +3 -0
- package/dist/esm/utils/utils.js +12 -0
- package/dist/esm/utils/utils.js.map +1 -0
- package/dist/plugin.cjs.js +153 -78
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +153 -78
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/FreeraspPlugin.m +2 -0
- package/ios/Plugin/FreeraspPlugin.swift +50 -75
- package/ios/Plugin/Info.plist +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeDirectory +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeResources +100 -298
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeSignature +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +7 -2
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curl.h +380 -281
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curlver.h +5 -6
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/easy.h +4 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/header.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/mprintf.h +11 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/multi.h +62 -22
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/options.h +2 -2
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/system.h +76 -164
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/urlapi.h +5 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/websockets.h +17 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +233 -528
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.private.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +14 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curl.h +380 -281
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curlver.h +5 -6
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/easy.h +4 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/header.h +1 -1
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/mprintf.h +11 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/multi.h +62 -22
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/options.h +2 -2
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/system.h +76 -164
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/urlapi.h +5 -4
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/websockets.h +17 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +233 -528
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +233 -528
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +7 -3
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
- package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +56 -45
- package/ios/Plugin/models/RaspExecutionStates.swift +15 -0
- package/ios/Plugin/models/SecurityThreat.swift +40 -0
- package/ios/Plugin/utils/EventIdentifiers.swift +17 -0
- package/ios/Plugin/utils/RandomGenerator.swift +23 -0
- package/ios/Plugin/utils/Utils.swift +32 -0
- package/package.json +15 -10
- package/android/src/main/java/com/aheaditec/freerasp/Threat.kt +0 -58
- package/dist/esm/definitions.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -2
- package/dist/esm/utils.js +0 -8
- package/dist/esm/utils.js.map +0 -1
- package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { getThreatChannelData, prepareThreatMapping } from '../../channels/threat';
|
|
2
|
+
import { Threat } from '../../models/threat';
|
|
3
|
+
import { parseMalwareData } from '../../utils/malware';
|
|
4
|
+
import { onInvalidCallback } from '../methods/native';
|
|
5
|
+
import { Talsec } from '../nativeModules';
|
|
6
|
+
export const registerThreatListener = async (config) => {
|
|
7
|
+
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
8
|
+
await prepareThreatMapping();
|
|
9
|
+
await Talsec.addListener(channel, async (event) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
11
|
+
if (event[key] == undefined) {
|
|
12
|
+
onInvalidCallback();
|
|
13
|
+
}
|
|
14
|
+
switch (event[key]) {
|
|
15
|
+
case Threat.PrivilegedAccess.value:
|
|
16
|
+
(_a = config.privilegedAccess) === null || _a === void 0 ? void 0 : _a.call(config);
|
|
17
|
+
break;
|
|
18
|
+
case Threat.Debug.value:
|
|
19
|
+
(_b = config.debug) === null || _b === void 0 ? void 0 : _b.call(config);
|
|
20
|
+
break;
|
|
21
|
+
case Threat.Simulator.value:
|
|
22
|
+
(_c = config.simulator) === null || _c === void 0 ? void 0 : _c.call(config);
|
|
23
|
+
break;
|
|
24
|
+
case Threat.AppIntegrity.value:
|
|
25
|
+
(_d = config.appIntegrity) === null || _d === void 0 ? void 0 : _d.call(config);
|
|
26
|
+
break;
|
|
27
|
+
case Threat.UnofficialStore.value:
|
|
28
|
+
(_e = config.unofficialStore) === null || _e === void 0 ? void 0 : _e.call(config);
|
|
29
|
+
break;
|
|
30
|
+
case Threat.Hooks.value:
|
|
31
|
+
(_f = config.hooks) === null || _f === void 0 ? void 0 : _f.call(config);
|
|
32
|
+
break;
|
|
33
|
+
case Threat.DeviceBinding.value:
|
|
34
|
+
(_g = config.deviceBinding) === null || _g === void 0 ? void 0 : _g.call(config);
|
|
35
|
+
break;
|
|
36
|
+
case Threat.Passcode.value:
|
|
37
|
+
(_h = config.passcode) === null || _h === void 0 ? void 0 : _h.call(config);
|
|
38
|
+
break;
|
|
39
|
+
case Threat.SecureHardwareNotAvailable.value:
|
|
40
|
+
(_j = config.secureHardwareNotAvailable) === null || _j === void 0 ? void 0 : _j.call(config);
|
|
41
|
+
break;
|
|
42
|
+
case Threat.ObfuscationIssues.value:
|
|
43
|
+
(_k = config.obfuscationIssues) === null || _k === void 0 ? void 0 : _k.call(config);
|
|
44
|
+
break;
|
|
45
|
+
case Threat.DeviceID.value:
|
|
46
|
+
(_l = config.deviceID) === null || _l === void 0 ? void 0 : _l.call(config);
|
|
47
|
+
break;
|
|
48
|
+
case Threat.DevMode.value:
|
|
49
|
+
(_m = config.devMode) === null || _m === void 0 ? void 0 : _m.call(config);
|
|
50
|
+
break;
|
|
51
|
+
case Threat.SystemVPN.value:
|
|
52
|
+
(_o = config.systemVPN) === null || _o === void 0 ? void 0 : _o.call(config);
|
|
53
|
+
break;
|
|
54
|
+
case Threat.Malware.value:
|
|
55
|
+
(_p = config.malware) === null || _p === void 0 ? void 0 : _p.call(config, await parseMalwareData(event[malwareKey]));
|
|
56
|
+
break;
|
|
57
|
+
case Threat.ADBEnabled.value:
|
|
58
|
+
(_q = config.adbEnabled) === null || _q === void 0 ? void 0 : _q.call(config);
|
|
59
|
+
break;
|
|
60
|
+
case Threat.Screenshot.value:
|
|
61
|
+
(_r = config.screenshot) === null || _r === void 0 ? void 0 : _r.call(config);
|
|
62
|
+
break;
|
|
63
|
+
case Threat.ScreenRecording.value:
|
|
64
|
+
(_s = config.screenRecording) === null || _s === void 0 ? void 0 : _s.call(config);
|
|
65
|
+
break;
|
|
66
|
+
case Threat.MultiInstance.value:
|
|
67
|
+
(_t = config.multiInstance) === null || _t === void 0 ? void 0 : _t.call(config);
|
|
68
|
+
break;
|
|
69
|
+
case Threat.TimeSpoofing.value:
|
|
70
|
+
(_u = config.timeSpoofing) === null || _u === void 0 ? void 0 : _u.call(config);
|
|
71
|
+
break;
|
|
72
|
+
case Threat.LocationSpoofing.value:
|
|
73
|
+
(_v = config.locationSpoofing) === null || _v === void 0 ? void 0 : _v.call(config);
|
|
74
|
+
break;
|
|
75
|
+
case Threat.UnsecureWifi.value:
|
|
76
|
+
(_w = config.unsecureWifi) === null || _w === void 0 ? void 0 : _w.call(config);
|
|
77
|
+
break;
|
|
78
|
+
default:
|
|
79
|
+
onInvalidCallback();
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=threat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat.js","sourceRoot":"","sources":["../../../../src/api/listeners/threat.ts"],"names":[],"mappings":"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","sourcesContent":["import { getThreatChannelData, prepareThreatMapping } from '../../channels/threat';\nimport { Threat } from '../../models/threat';\nimport type { ThreatEventActions } from '../../types/types';\nimport { parseMalwareData } from '../../utils/malware';\nimport { onInvalidCallback } from '../methods/native';\nimport { Talsec } from '../nativeModules';\n\nexport const registerThreatListener = async (config: ThreatEventActions): Promise<void> => {\n const [channel, key, malwareKey] = await getThreatChannelData();\n await prepareThreatMapping();\n\n await Talsec.addListener(channel, async (event: any) => {\n if (event[key] == undefined) {\n onInvalidCallback();\n }\n switch (event[key]) {\n case Threat.PrivilegedAccess.value:\n config.privilegedAccess?.();\n break;\n case Threat.Debug.value:\n config.debug?.();\n break;\n case Threat.Simulator.value:\n config.simulator?.();\n break;\n case Threat.AppIntegrity.value:\n config.appIntegrity?.();\n break;\n case Threat.UnofficialStore.value:\n config.unofficialStore?.();\n break;\n case Threat.Hooks.value:\n config.hooks?.();\n break;\n case Threat.DeviceBinding.value:\n config.deviceBinding?.();\n break;\n case Threat.Passcode.value:\n config.passcode?.();\n break;\n case Threat.SecureHardwareNotAvailable.value:\n config.secureHardwareNotAvailable?.();\n break;\n case Threat.ObfuscationIssues.value:\n config.obfuscationIssues?.();\n break;\n case Threat.DeviceID.value:\n config.deviceID?.();\n break;\n case Threat.DevMode.value:\n config.devMode?.();\n break;\n case Threat.SystemVPN.value:\n config.systemVPN?.();\n break;\n case Threat.Malware.value:\n config.malware?.(await parseMalwareData(event[malwareKey]));\n break;\n case Threat.ADBEnabled.value:\n config.adbEnabled?.();\n break;\n case Threat.Screenshot.value:\n config.screenshot?.();\n break;\n case Threat.ScreenRecording.value:\n config.screenRecording?.();\n break;\n case Threat.MultiInstance.value:\n config.multiInstance?.();\n break;\n case Threat.TimeSpoofing.value:\n config.timeSpoofing?.();\n break;\n case Threat.LocationSpoofing.value:\n config.locationSpoofing?.();\n break;\n case Threat.UnsecureWifi.value:\n config.unsecureWifi?.();\n break;\n default:\n onInvalidCallback();\n break;\n }\n });\n};\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TalsecConfig, ThreatEventActions, RaspExecutionStateEventActions } from '../../types/types';
|
|
2
|
+
export declare const startFreeRASP: (config: TalsecConfig, actions: ThreatEventActions, raspExecutionStateActions?: RaspExecutionStateEventActions) => Promise<{
|
|
3
|
+
started: boolean;
|
|
4
|
+
}>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { registerRaspExecutionStateListener } from '../listeners/raspExecutionState';
|
|
2
|
+
import { registerThreatListener } from '../listeners/threat';
|
|
3
|
+
import { Talsec } from '../nativeModules';
|
|
4
|
+
export const startFreeRASP = async (config, actions, raspExecutionStateActions) => {
|
|
5
|
+
await registerThreatListener(actions);
|
|
6
|
+
if (raspExecutionStateActions) {
|
|
7
|
+
await registerRaspExecutionStateListener(raspExecutionStateActions);
|
|
8
|
+
}
|
|
9
|
+
return Talsec.talsecStart({ config });
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=capacitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../../../src/api/methods/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,MAAoB,EACpB,OAA2B,EAC3B,yBAA0D,EAC3B,EAAE;IACjC,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,yBAAyB,EAAE,CAAC;QAC9B,MAAM,kCAAkC,CAAC,yBAAyB,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC","sourcesContent":["import type { TalsecConfig, ThreatEventActions, RaspExecutionStateEventActions } from '../../types/types';\nimport { registerRaspExecutionStateListener } from '../listeners/raspExecutionState';\nimport { registerThreatListener } from '../listeners/threat';\nimport { Talsec } from '../nativeModules';\n\nexport const startFreeRASP = async (\n config: TalsecConfig,\n actions: ThreatEventActions,\n raspExecutionStateActions?: RaspExecutionStateEventActions,\n): Promise<{ started: boolean }> => {\n await registerThreatListener(actions);\n if (raspExecutionStateActions) {\n await registerRaspExecutionStateListener(raspExecutionStateActions);\n }\n return Talsec.talsecStart({ config });\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const addToWhitelist: (packageName: string) => Promise<boolean>;
|
|
2
|
+
export declare const blockScreenCapture: (enable: boolean) => Promise<boolean>;
|
|
3
|
+
export declare const isScreenCaptureBlocked: () => Promise<boolean>;
|
|
4
|
+
export declare const storeExternalId: (data: string) => Promise<boolean>;
|
|
5
|
+
export declare const getAppIcon: (packageName: string) => Promise<string>;
|
|
6
|
+
export declare const onInvalidCallback: () => void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Capacitor } from '@capacitor/core';
|
|
2
|
+
import { Talsec } from '../nativeModules';
|
|
3
|
+
export const addToWhitelist = async (packageName) => {
|
|
4
|
+
if (Capacitor.getPlatform() === 'ios') {
|
|
5
|
+
return Promise.reject('Malware detection is not available on iOS');
|
|
6
|
+
}
|
|
7
|
+
const { result } = await Talsec.addToWhitelist({ packageName });
|
|
8
|
+
return result;
|
|
9
|
+
};
|
|
10
|
+
export const blockScreenCapture = async (enable) => {
|
|
11
|
+
const { result } = await Talsec.blockScreenCapture({ enable });
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
export const isScreenCaptureBlocked = async () => {
|
|
15
|
+
const { result } = await Talsec.isScreenCaptureBlocked();
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
export const storeExternalId = async (data) => {
|
|
19
|
+
const { result } = await Talsec.storeExternalId({ data });
|
|
20
|
+
return result;
|
|
21
|
+
};
|
|
22
|
+
export const getAppIcon = async (packageName) => {
|
|
23
|
+
if (Capacitor.getPlatform() === 'ios') {
|
|
24
|
+
return Promise.reject('App icon retrieval for Malware detection is not available on iOS');
|
|
25
|
+
}
|
|
26
|
+
const { result } = await Talsec.getAppIcon({ packageName });
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
export const onInvalidCallback = () => {
|
|
30
|
+
Talsec.onInvalidCallback();
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../src/api/methods/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,WAAmB,EAAoB,EAAE;IAC5E,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAe,EAAoB,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,IAAsB,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,WAAmB,EAAmB,EAAE;IACvE,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO,OAAO,CAAC,MAAM,CAAC,kEAAkE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAS,EAAE;IAC1C,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC7B,CAAC,CAAC","sourcesContent":["import { Capacitor } from '@capacitor/core';\n\nimport { Talsec } from '../nativeModules';\n\nexport const addToWhitelist = async (packageName: string): Promise<boolean> => {\n if (Capacitor.getPlatform() === 'ios') {\n return Promise.reject('Malware detection is not available on iOS');\n }\n const { result } = await Talsec.addToWhitelist({ packageName });\n return result;\n};\n\nexport const blockScreenCapture = async (enable: boolean): Promise<boolean> => {\n const { result } = await Talsec.blockScreenCapture({ enable });\n return result;\n};\n\nexport const isScreenCaptureBlocked = async (): Promise<boolean> => {\n const { result } = await Talsec.isScreenCaptureBlocked();\n return result;\n};\n\nexport const storeExternalId = async (data: string): Promise<boolean> => {\n const { result } = await Talsec.storeExternalId({ data });\n return result;\n};\n\nexport const getAppIcon = async (packageName: string): Promise<string> => {\n if (Capacitor.getPlatform() === 'ios') {\n return Promise.reject('App icon retrieval for Malware detection is not available on iOS');\n }\n const { result } = await Talsec.getAppIcon({ packageName });\n return result;\n};\n\nexport const onInvalidCallback = (): void => {\n Talsec.onInvalidCallback();\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeModules.js","sourceRoot":"","sources":["../../../src/api/nativeModules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAe,UAAU,EAAE,EAAE,CAAC,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type { TalsecPlugin } from '../types/types';\n\nexport const Talsec = registerPlugin<TalsecPlugin>('Freerasp', {});\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { onInvalidCallback } from '../api/methods/native';
|
|
2
|
+
import { Talsec } from '../api/nativeModules';
|
|
3
|
+
import { RaspExecutionState } from '../models/raspExecutionState';
|
|
4
|
+
import { getRaspExecutionStateCount, itemsHaveType } from '../utils/utils';
|
|
5
|
+
export const getRaspExecutionStateIdentifiers = async () => {
|
|
6
|
+
const { ids } = await Talsec.getRaspExecutionStateIdentifiers();
|
|
7
|
+
if (ids.length !== getRaspExecutionStateCount() || !itemsHaveType(ids, 'number')) {
|
|
8
|
+
onInvalidCallback();
|
|
9
|
+
}
|
|
10
|
+
return ids;
|
|
11
|
+
};
|
|
12
|
+
export const getRaspExecutionStateChannelData = async () => {
|
|
13
|
+
const dataLength = 2;
|
|
14
|
+
const { ids } = await Talsec.getRaspExecutionStateChannelData();
|
|
15
|
+
if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {
|
|
16
|
+
onInvalidCallback();
|
|
17
|
+
}
|
|
18
|
+
return ids;
|
|
19
|
+
};
|
|
20
|
+
export const prepareRaspExecutionStateMapping = async () => {
|
|
21
|
+
const newValues = await getRaspExecutionStateIdentifiers();
|
|
22
|
+
const threats = RaspExecutionState.getValues();
|
|
23
|
+
threats.map((threat, index) => {
|
|
24
|
+
threat.value = newValues[index];
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=raspExecutionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raspExecutionState.js","sourceRoot":"","sources":["../../../src/channels/raspExecutionState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3E,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,IAAuB,EAAE;IAC5E,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,EAAE,CAAC;IAChE,IAAI,GAAG,CAAC,MAAM,KAAK,0BAA0B,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjF,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,IAA+B,EAAE;IACpF,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,EAAE,CAAC;IAChE,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,IAAmB,EAAE;IACxE,MAAM,SAAS,GAAG,MAAM,gCAAgC,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAE,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { onInvalidCallback } from '../api/methods/native';\nimport { Talsec } from '../api/nativeModules';\nimport { RaspExecutionState } from '../models/raspExecutionState';\nimport { getRaspExecutionStateCount, itemsHaveType } from '../utils/utils';\n\nexport const getRaspExecutionStateIdentifiers = async (): Promise<number[]> => {\n const { ids } = await Talsec.getRaspExecutionStateIdentifiers();\n if (ids.length !== getRaspExecutionStateCount() || !itemsHaveType(ids, 'number')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nexport const getRaspExecutionStateChannelData = async (): Promise<[string, string]> => {\n const dataLength = 2;\n const { ids } = await Talsec.getRaspExecutionStateChannelData();\n if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nexport const prepareRaspExecutionStateMapping = async (): Promise<void> => {\n const newValues = await getRaspExecutionStateIdentifiers();\n const threats = RaspExecutionState.getValues();\n threats.map((threat, index) => {\n threat.value = newValues[index]!;\n });\n};\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Capacitor } from '@capacitor/core';
|
|
2
|
+
import { onInvalidCallback } from '../api/methods/native';
|
|
3
|
+
import { Talsec } from '../api/nativeModules';
|
|
4
|
+
import { Threat } from '../models/threat';
|
|
5
|
+
import { getThreatCount, itemsHaveType } from '../utils/utils';
|
|
6
|
+
export const getThreatIdentifiers = async () => {
|
|
7
|
+
const { ids } = await Talsec.getThreatIdentifiers();
|
|
8
|
+
if (ids.length !== getThreatCount() || !itemsHaveType(ids, 'number')) {
|
|
9
|
+
console.error(`Threat count mismatch: Native ${ids.length} vs JS ${getThreatCount()}. Items are numbers: ${itemsHaveType(ids, 'number')}`);
|
|
10
|
+
// onInvalidCallback();
|
|
11
|
+
}
|
|
12
|
+
return ids;
|
|
13
|
+
};
|
|
14
|
+
export const getThreatChannelData = async () => {
|
|
15
|
+
const dataLength = Capacitor.getPlatform() === 'ios' ? 2 : 3;
|
|
16
|
+
const { ids } = await Talsec.getThreatChannelData();
|
|
17
|
+
if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {
|
|
18
|
+
onInvalidCallback();
|
|
19
|
+
}
|
|
20
|
+
return ids;
|
|
21
|
+
};
|
|
22
|
+
export const prepareThreatMapping = async () => {
|
|
23
|
+
const newValues = await getThreatIdentifiers();
|
|
24
|
+
const threats = Threat.getValues();
|
|
25
|
+
try {
|
|
26
|
+
threats.map((threat, index) => {
|
|
27
|
+
threat.value = newValues[index];
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.error('Could not map Talsec threats', err);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=threat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat.js","sourceRoot":"","sources":["../../../src/channels/threat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAuB,EAAE;IAChE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAC;IACpD,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,KAAK,CACX,iCAAiC,GAAG,CAAC,MAAM,UAAU,cAAc,EAAE,wBAAwB,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAC5H,CAAC;QACF,uBAAuB;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAuC,EAAE;IAChF,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAC;IACpD,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,iBAAiB,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAmB,EAAE;IAC5D,MAAM,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { Capacitor } from '@capacitor/core';\n\nimport { onInvalidCallback } from '../api/methods/native';\nimport { Talsec } from '../api/nativeModules';\nimport { Threat } from '../models/threat';\nimport { getThreatCount, itemsHaveType } from '../utils/utils';\n\nexport const getThreatIdentifiers = async (): Promise<number[]> => {\n const { ids } = await Talsec.getThreatIdentifiers();\n if (ids.length !== getThreatCount() || !itemsHaveType(ids, 'number')) {\n console.error(\n `Threat count mismatch: Native ${ids.length} vs JS ${getThreatCount()}. Items are numbers: ${itemsHaveType(ids, 'number')}`,\n );\n // onInvalidCallback();\n }\n return ids;\n};\n\nexport const getThreatChannelData = async (): Promise<[string, string, string]> => {\n const dataLength = Capacitor.getPlatform() === 'ios' ? 2 : 3;\n const { ids } = await Talsec.getThreatChannelData();\n if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nexport const prepareThreatMapping = async (): Promise<void> => {\n const newValues = await getThreatIdentifiers();\n const threats = Threat.getValues();\n\n try {\n threats.map((threat, index) => {\n threat.value = newValues[index];\n });\n } catch (err) {\n console.error('Could not map Talsec threats', err);\n }\n};\n"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
declare const blockScreenCapture: (enable: boolean) => Promise<boolean>;
|
|
9
|
-
declare const isScreenCaptureBlocked: () => Promise<boolean>;
|
|
10
|
-
declare const storeExternalId: (data: string) => Promise<boolean>;
|
|
11
|
-
export * from './definitions';
|
|
12
|
-
export { Freerasp, startFreeRASP, setThreatListeners, removeThreatListeners, addToWhitelist, getAppIcon, blockScreenCapture, isScreenCaptureBlocked, storeExternalId, };
|
|
1
|
+
import { onInvalidCallback } from './api/methods/native';
|
|
2
|
+
export * from './types/types';
|
|
3
|
+
export * from './api/methods/native';
|
|
4
|
+
export * from './api/listeners/threat';
|
|
5
|
+
export * from './api/listeners/raspExecutionState';
|
|
6
|
+
export * from './api/methods/capacitor';
|
|
7
|
+
export { onInvalidCallback as abortApp };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,159 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
const getThreatIdentifiers = async () => {
|
|
10
|
-
const { ids } = await Freerasp.getThreatIdentifiers();
|
|
11
|
-
if (ids.length !== getThreatCount() || !itemsHaveType(ids, 'number')) {
|
|
12
|
-
onInvalidCallback();
|
|
13
|
-
}
|
|
14
|
-
return ids;
|
|
15
|
-
};
|
|
16
|
-
const getThreatChannelData = async () => {
|
|
17
|
-
const dataLength = Capacitor.getPlatform() === 'ios' ? 2 : 3;
|
|
18
|
-
const { ids } = await Freerasp.getThreatChannelData();
|
|
19
|
-
if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {
|
|
20
|
-
onInvalidCallback();
|
|
21
|
-
}
|
|
22
|
-
return ids;
|
|
23
|
-
};
|
|
24
|
-
const prepareMapping = async () => {
|
|
25
|
-
const newValues = await getThreatIdentifiers();
|
|
26
|
-
const threats = Threat.getValues();
|
|
27
|
-
threats.map((threat, index) => {
|
|
28
|
-
threat.value = newValues[index];
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
32
|
-
const parseMalwareData = async (data) => {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
try {
|
|
35
|
-
const suspiciousAppData = data.map(entry => toSuspiciousAppInfo(entry));
|
|
36
|
-
resolve(suspiciousAppData);
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
reject(`Parsing app data failed: ${error}`);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
const toSuspiciousAppInfo = (base64Value) => {
|
|
44
|
-
const data = JSON.parse(atob(base64Value));
|
|
45
|
-
const packageInfo = data.packageInfo;
|
|
46
|
-
return { packageInfo, reason: data.reason };
|
|
47
|
-
};
|
|
48
|
-
const setThreatListeners = async (callbacks) => {
|
|
49
|
-
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
50
|
-
await prepareMapping();
|
|
51
|
-
await Freerasp.addListener(channel, async (event) => {
|
|
52
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
53
|
-
if (event[key] === undefined) {
|
|
54
|
-
onInvalidCallback();
|
|
55
|
-
}
|
|
56
|
-
switch (event[key]) {
|
|
57
|
-
case Threat.PrivilegedAccess.value:
|
|
58
|
-
(_a = callbacks.privilegedAccess) === null || _a === void 0 ? void 0 : _a.call(callbacks);
|
|
59
|
-
break;
|
|
60
|
-
case Threat.Debug.value:
|
|
61
|
-
(_b = callbacks.debug) === null || _b === void 0 ? void 0 : _b.call(callbacks);
|
|
62
|
-
break;
|
|
63
|
-
case Threat.Simulator.value:
|
|
64
|
-
(_c = callbacks.simulator) === null || _c === void 0 ? void 0 : _c.call(callbacks);
|
|
65
|
-
break;
|
|
66
|
-
case Threat.AppIntegrity.value:
|
|
67
|
-
(_d = callbacks.appIntegrity) === null || _d === void 0 ? void 0 : _d.call(callbacks);
|
|
68
|
-
break;
|
|
69
|
-
case Threat.UnofficialStore.value:
|
|
70
|
-
(_e = callbacks.unofficialStore) === null || _e === void 0 ? void 0 : _e.call(callbacks);
|
|
71
|
-
break;
|
|
72
|
-
case Threat.Hooks.value:
|
|
73
|
-
(_f = callbacks.hooks) === null || _f === void 0 ? void 0 : _f.call(callbacks);
|
|
74
|
-
break;
|
|
75
|
-
case Threat.DeviceBinding.value:
|
|
76
|
-
(_g = callbacks.deviceBinding) === null || _g === void 0 ? void 0 : _g.call(callbacks);
|
|
77
|
-
break;
|
|
78
|
-
case Threat.Passcode.value:
|
|
79
|
-
(_h = callbacks.passcode) === null || _h === void 0 ? void 0 : _h.call(callbacks);
|
|
80
|
-
break;
|
|
81
|
-
case Threat.SecureHardwareNotAvailable.value:
|
|
82
|
-
(_j = callbacks.secureHardwareNotAvailable) === null || _j === void 0 ? void 0 : _j.call(callbacks);
|
|
83
|
-
break;
|
|
84
|
-
case Threat.ObfuscationIssues.value:
|
|
85
|
-
(_k = callbacks.obfuscationIssues) === null || _k === void 0 ? void 0 : _k.call(callbacks);
|
|
86
|
-
break;
|
|
87
|
-
case Threat.DeviceID.value:
|
|
88
|
-
(_l = callbacks.deviceID) === null || _l === void 0 ? void 0 : _l.call(callbacks);
|
|
89
|
-
break;
|
|
90
|
-
case Threat.DevMode.value:
|
|
91
|
-
(_m = callbacks.devMode) === null || _m === void 0 ? void 0 : _m.call(callbacks);
|
|
92
|
-
break;
|
|
93
|
-
case Threat.SystemVPN.value:
|
|
94
|
-
(_o = callbacks.systemVPN) === null || _o === void 0 ? void 0 : _o.call(callbacks);
|
|
95
|
-
break;
|
|
96
|
-
case Threat.Malware.value:
|
|
97
|
-
(_p = callbacks.malware) === null || _p === void 0 ? void 0 : _p.call(callbacks, await parseMalwareData(event[malwareKey]));
|
|
98
|
-
break;
|
|
99
|
-
case Threat.ADBEnabled.value:
|
|
100
|
-
(_q = callbacks.adbEnabled) === null || _q === void 0 ? void 0 : _q.call(callbacks);
|
|
101
|
-
break;
|
|
102
|
-
case Threat.Screenshot.value:
|
|
103
|
-
(_r = callbacks.screenshot) === null || _r === void 0 ? void 0 : _r.call(callbacks);
|
|
104
|
-
break;
|
|
105
|
-
case Threat.ScreenRecording.value:
|
|
106
|
-
(_s = callbacks.screenRecording) === null || _s === void 0 ? void 0 : _s.call(callbacks);
|
|
107
|
-
break;
|
|
108
|
-
case Threat.MultiInstance.value:
|
|
109
|
-
(_t = callbacks.multiInstance) === null || _t === void 0 ? void 0 : _t.call(callbacks);
|
|
110
|
-
break;
|
|
111
|
-
default:
|
|
112
|
-
onInvalidCallback();
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
const removeThreatListeners = () => {
|
|
118
|
-
activeListeners.forEach(listener => listener.remove());
|
|
119
|
-
};
|
|
120
|
-
const startFreeRASP = async (config, reactions) => {
|
|
121
|
-
await setThreatListeners(reactions);
|
|
122
|
-
try {
|
|
123
|
-
const { started } = await Freerasp.talsecStart({ config });
|
|
124
|
-
return started;
|
|
125
|
-
}
|
|
126
|
-
catch (e) {
|
|
127
|
-
console.error(`${e.code}: ${e.message}`);
|
|
128
|
-
return Promise.reject(`${e.code}: ${e.message}`);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
const addToWhitelist = async (packageName) => {
|
|
132
|
-
if (Capacitor.getPlatform() === 'ios') {
|
|
133
|
-
return Promise.reject('Malware detection not available on iOS');
|
|
134
|
-
}
|
|
135
|
-
const { result } = await Freerasp.addToWhitelist({ packageName });
|
|
136
|
-
return result;
|
|
137
|
-
};
|
|
138
|
-
const getAppIcon = async (packageName) => {
|
|
139
|
-
if (Capacitor.getPlatform() === 'ios') {
|
|
140
|
-
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
141
|
-
}
|
|
142
|
-
const { result } = await Freerasp.getAppIcon({ packageName });
|
|
143
|
-
return result;
|
|
144
|
-
};
|
|
145
|
-
const blockScreenCapture = async (enable) => {
|
|
146
|
-
const { result } = await Freerasp.blockScreenCapture({ enable });
|
|
147
|
-
return result;
|
|
148
|
-
};
|
|
149
|
-
const isScreenCaptureBlocked = async () => {
|
|
150
|
-
const { result } = await Freerasp.isScreenCaptureBlocked();
|
|
151
|
-
return result;
|
|
152
|
-
};
|
|
153
|
-
const storeExternalId = async (data) => {
|
|
154
|
-
const { result } = await Freerasp.storeExternalId({ data });
|
|
155
|
-
return result;
|
|
156
|
-
};
|
|
157
|
-
export * from './definitions';
|
|
158
|
-
export { Freerasp, startFreeRASP, setThreatListeners, removeThreatListeners, addToWhitelist, getAppIcon, blockScreenCapture, isScreenCaptureBlocked, storeExternalId, };
|
|
1
|
+
import { onInvalidCallback } from './api/methods/native';
|
|
2
|
+
export * from './types/types';
|
|
3
|
+
export * from './api/methods/native';
|
|
4
|
+
export * from './api/listeners/threat';
|
|
5
|
+
export * from './api/listeners/raspExecutionState';
|
|
6
|
+
export * from './api/methods/capacitor';
|
|
7
|
+
export { onInvalidCallback as abortApp };
|
|
159
8
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Capacitor, registerPlugin } from '@capacitor/core';\n\nimport type {\n FreeraspPlugin,\n FreeraspConfig,\n NativeEventEmitterActions,\n SuspiciousAppInfo,\n PackageInfo,\n} from './definitions';\nimport { Threat } from './definitions';\nimport { getThreatCount, itemsHaveType } from './utils';\n\nconst activeListeners: any[] = [];\n\nconst Freerasp = registerPlugin<FreeraspPlugin>('Freerasp', {});\n\nconst onInvalidCallback = (): void => {\n Freerasp.onInvalidCallback();\n};\n\nconst getThreatIdentifiers = async (): Promise<number[]> => {\n const { ids } = await Freerasp.getThreatIdentifiers();\n if (ids.length !== getThreatCount() || !itemsHaveType(ids, 'number')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nconst getThreatChannelData = async (): Promise<[string, string, string]> => {\n const dataLength = Capacitor.getPlatform() === 'ios' ? 2 : 3;\n const { ids } = await Freerasp.getThreatChannelData();\n if (ids.length !== dataLength || !itemsHaveType(ids, 'string')) {\n onInvalidCallback();\n }\n return ids;\n};\n\nconst prepareMapping = async (): Promise<void> => {\n const newValues = await getThreatIdentifiers();\n const threats = Threat.getValues();\n\n threats.map((threat, index) => {\n threat.value = newValues[index];\n });\n};\n\n// parses base64-encoded malware data to SuspiciousAppInfo[]\nconst parseMalwareData = async (\n data: string[],\n): Promise<SuspiciousAppInfo[]> => {\n return new Promise((resolve, reject) => {\n try {\n const suspiciousAppData = data.map(entry => toSuspiciousAppInfo(entry));\n resolve(suspiciousAppData);\n } catch (error: any) {\n reject(`Parsing app data failed: ${error}`);\n }\n });\n};\n\nconst toSuspiciousAppInfo = (base64Value: string): SuspiciousAppInfo => {\n const data = JSON.parse(atob(base64Value));\n const packageInfo = data.packageInfo as PackageInfo;\n return { packageInfo, reason: data.reason } as SuspiciousAppInfo;\n};\n\nconst setThreatListeners = async <T extends NativeEventEmitterActions>(\n callbacks: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>,\n): Promise<void> => {\n const [channel, key, malwareKey] = await getThreatChannelData();\n await prepareMapping();\n\n await Freerasp.addListener(channel, async (event: any) => {\n if (event[key] === undefined) {\n onInvalidCallback();\n }\n switch (event[key]) {\n case Threat.PrivilegedAccess.value:\n callbacks.privilegedAccess?.();\n break;\n case Threat.Debug.value:\n callbacks.debug?.();\n break;\n case Threat.Simulator.value:\n callbacks.simulator?.();\n break;\n case Threat.AppIntegrity.value:\n callbacks.appIntegrity?.();\n break;\n case Threat.UnofficialStore.value:\n callbacks.unofficialStore?.();\n break;\n case Threat.Hooks.value:\n callbacks.hooks?.();\n break;\n case Threat.DeviceBinding.value:\n callbacks.deviceBinding?.();\n break;\n case Threat.Passcode.value:\n callbacks.passcode?.();\n break;\n case Threat.SecureHardwareNotAvailable.value:\n callbacks.secureHardwareNotAvailable?.();\n break;\n case Threat.ObfuscationIssues.value:\n callbacks.obfuscationIssues?.();\n break;\n case Threat.DeviceID.value:\n callbacks.deviceID?.();\n break;\n case Threat.DevMode.value:\n callbacks.devMode?.();\n break;\n case Threat.SystemVPN.value:\n callbacks.systemVPN?.();\n break;\n case Threat.Malware.value:\n callbacks.malware?.(await parseMalwareData(event[malwareKey]));\n break;\n case Threat.ADBEnabled.value:\n callbacks.adbEnabled?.();\n break;\n case Threat.Screenshot.value:\n callbacks.screenshot?.();\n break;\n case Threat.ScreenRecording.value:\n callbacks.screenRecording?.();\n break;\n case Threat.MultiInstance.value:\n callbacks.multiInstance?.();\n break;\n default:\n onInvalidCallback();\n break;\n }\n });\n};\n\nconst removeThreatListeners = (): void => {\n activeListeners.forEach(listener => listener.remove());\n};\n\nconst startFreeRASP = async <T extends NativeEventEmitterActions>(\n config: FreeraspConfig,\n reactions: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>,\n): Promise<boolean> => {\n await setThreatListeners(reactions);\n try {\n const { started } = await Freerasp.talsecStart({ config });\n return started;\n } catch (e: any) {\n console.error(`${e.code}: ${e.message}`);\n return Promise.reject(`${e.code}: ${e.message}`);\n }\n};\n\nconst addToWhitelist = async (packageName: string): Promise<boolean> => {\n if (Capacitor.getPlatform() === 'ios') {\n return Promise.reject('Malware detection not available on iOS');\n }\n const { result } = await Freerasp.addToWhitelist({ packageName });\n return result;\n};\n\nconst getAppIcon = async (packageName: string): Promise<string> => {\n if (Capacitor.getPlatform() === 'ios') {\n return Promise.reject(\n 'App icon retrieval for Malware detection not available on iOS',\n );\n }\n const { result } = await Freerasp.getAppIcon({ packageName });\n return result;\n};\n\nconst blockScreenCapture = async (enable: boolean): Promise<boolean> => {\n const { result } = await Freerasp.blockScreenCapture({ enable });\n return result;\n};\n\nconst isScreenCaptureBlocked = async (): Promise<boolean> => {\n const { result } = await Freerasp.isScreenCaptureBlocked();\n return result;\n};\n\nconst storeExternalId = async (data: string): Promise<boolean> => {\n const { result } = await Freerasp.storeExternalId({ data });\n return result;\n};\n\nexport * from './definitions';\nexport {\n Freerasp,\n startFreeRASP,\n setThreatListeners,\n removeThreatListeners,\n addToWhitelist,\n getAppIcon,\n blockScreenCapture,\n isScreenCaptureBlocked,\n storeExternalId,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,CAAC","sourcesContent":["import { onInvalidCallback } from './api/methods/native';\n\nexport * from './types/types';\nexport * from './api/methods/native';\nexport * from './api/listeners/threat';\nexport * from './api/listeners/raspExecutionState';\nexport * from './api/methods/capacitor';\nexport { onInvalidCallback as abortApp };\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export class RaspExecutionState {
|
|
2
|
+
constructor(value) {
|
|
3
|
+
this.value = value;
|
|
4
|
+
}
|
|
5
|
+
static getValues() {
|
|
6
|
+
return [this.AllChecksFinished];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
RaspExecutionState.AllChecksFinished = new RaspExecutionState(0);
|
|
10
|
+
//# sourceMappingURL=raspExecutionState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raspExecutionState.js","sourceRoot":"","sources":["../../../src/models/raspExecutionState.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IAK7B,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;;AARM,oCAAiB,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC","sourcesContent":["export class RaspExecutionState {\n value: number;\n\n static AllChecksFinished = new RaspExecutionState(0);\n\n constructor(value: number) {\n this.value = value;\n }\n\n static getValues(): RaspExecutionState[] {\n return [this.AllChecksFinished];\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare class Threat {
|
|
2
|
+
value: number;
|
|
3
|
+
static AppIntegrity: Threat;
|
|
4
|
+
static PrivilegedAccess: Threat;
|
|
5
|
+
static Debug: Threat;
|
|
6
|
+
static Hooks: Threat;
|
|
7
|
+
static Passcode: Threat;
|
|
8
|
+
static Simulator: Threat;
|
|
9
|
+
static SecureHardwareNotAvailable: Threat;
|
|
10
|
+
static SystemVPN: Threat;
|
|
11
|
+
static DeviceBinding: Threat;
|
|
12
|
+
static DeviceID: Threat;
|
|
13
|
+
static UnofficialStore: Threat;
|
|
14
|
+
static ObfuscationIssues: Threat;
|
|
15
|
+
static DevMode: Threat;
|
|
16
|
+
static Malware: Threat;
|
|
17
|
+
static ADBEnabled: Threat;
|
|
18
|
+
static Screenshot: Threat;
|
|
19
|
+
static ScreenRecording: Threat;
|
|
20
|
+
static MultiInstance: Threat;
|
|
21
|
+
static TimeSpoofing: Threat;
|
|
22
|
+
static LocationSpoofing: Threat;
|
|
23
|
+
static UnsecureWifi: Threat;
|
|
24
|
+
constructor(value: number);
|
|
25
|
+
static getValues(): Threat[];
|
|
26
|
+
}
|
|
@@ -16,7 +16,6 @@ export class Threat {
|
|
|
16
16
|
this.SystemVPN,
|
|
17
17
|
this.DeviceBinding,
|
|
18
18
|
this.UnofficialStore,
|
|
19
|
-
this.Overlay,
|
|
20
19
|
this.ObfuscationIssues,
|
|
21
20
|
this.DevMode,
|
|
22
21
|
this.Malware,
|
|
@@ -24,6 +23,9 @@ export class Threat {
|
|
|
24
23
|
this.Screenshot,
|
|
25
24
|
this.ScreenRecording,
|
|
26
25
|
this.MultiInstance,
|
|
26
|
+
this.TimeSpoofing,
|
|
27
|
+
this.LocationSpoofing,
|
|
28
|
+
this.UnsecureWifi,
|
|
27
29
|
]
|
|
28
30
|
: [
|
|
29
31
|
this.AppIntegrity,
|
|
@@ -53,7 +55,6 @@ Threat.SystemVPN = new Threat(0);
|
|
|
53
55
|
Threat.DeviceBinding = new Threat(0);
|
|
54
56
|
Threat.DeviceID = new Threat(0);
|
|
55
57
|
Threat.UnofficialStore = new Threat(0);
|
|
56
|
-
Threat.Overlay = new Threat(0);
|
|
57
58
|
Threat.ObfuscationIssues = new Threat(0);
|
|
58
59
|
Threat.DevMode = new Threat(0);
|
|
59
60
|
Threat.Malware = new Threat(0);
|
|
@@ -61,4 +62,7 @@ Threat.ADBEnabled = new Threat(0);
|
|
|
61
62
|
Threat.Screenshot = new Threat(0);
|
|
62
63
|
Threat.ScreenRecording = new Threat(0);
|
|
63
64
|
Threat.MultiInstance = new Threat(0);
|
|
64
|
-
|
|
65
|
+
Threat.TimeSpoofing = new Threat(0);
|
|
66
|
+
Threat.LocationSpoofing = new Threat(0);
|
|
67
|
+
Threat.UnsecureWifi = new Threat(0);
|
|
68
|
+
//# sourceMappingURL=threat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat.js","sourceRoot":"","sources":["../../../src/models/threat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,MAAM;IAyBjB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS;QACd,OAAO,SAAS,CAAC,WAAW,EAAE,KAAK,SAAS;YAC1C,CAAC,CAAC;gBACE,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,0BAA0B;gBAC/B,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,iBAAiB;gBACtB,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,YAAY;aAClB;YACH,CAAC,CAAC;gBACE,IAAI,CAAC,YAAY;gBACjB,IAAI,CAAC,gBAAgB;gBACrB,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,0BAA0B;gBAC/B,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,aAAa;gBAClB,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;aACrB,CAAC;IACR,CAAC;;AAjEM,mBAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,uBAAgB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,YAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,YAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,eAAQ,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAS,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,iCAA0B,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAS,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAa,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,eAAQ,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,sBAAe,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,wBAAiB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,cAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,cAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,iBAAU,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,iBAAU,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,sBAAe,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,oBAAa,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,mBAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,uBAAgB,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,mBAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC","sourcesContent":["import { Capacitor } from '@capacitor/core';\n\nexport class Threat {\n value: number;\n\n static AppIntegrity = new Threat(0);\n static PrivilegedAccess = new Threat(0);\n static Debug = new Threat(0);\n static Hooks = new Threat(0);\n static Passcode = new Threat(0);\n static Simulator = new Threat(0);\n static SecureHardwareNotAvailable = new Threat(0);\n static SystemVPN = new Threat(0);\n static DeviceBinding = new Threat(0);\n static DeviceID = new Threat(0);\n static UnofficialStore = new Threat(0);\n static ObfuscationIssues = new Threat(0);\n static DevMode = new Threat(0);\n static Malware = new Threat(0);\n static ADBEnabled = new Threat(0);\n static Screenshot = new Threat(0);\n static ScreenRecording = new Threat(0);\n static MultiInstance = new Threat(0);\n static TimeSpoofing = new Threat(0);\n static LocationSpoofing = new Threat(0);\n static UnsecureWifi = new Threat(0);\n\n constructor(value: number) {\n this.value = value;\n }\n\n static getValues(): Threat[] {\n return Capacitor.getPlatform() === 'android'\n ? [\n this.AppIntegrity,\n this.PrivilegedAccess,\n this.Debug,\n this.Hooks,\n this.Passcode,\n this.Simulator,\n this.SecureHardwareNotAvailable,\n this.SystemVPN,\n this.DeviceBinding,\n this.UnofficialStore,\n this.ObfuscationIssues,\n this.DevMode,\n this.Malware,\n this.ADBEnabled,\n this.Screenshot,\n this.ScreenRecording,\n this.MultiInstance,\n this.TimeSpoofing,\n this.LocationSpoofing,\n this.UnsecureWifi,\n ]\n : [\n this.AppIntegrity,\n this.PrivilegedAccess,\n this.Debug,\n this.Hooks,\n this.Passcode,\n this.Simulator,\n this.SecureHardwareNotAvailable,\n this.SystemVPN,\n this.DeviceBinding,\n this.DeviceID,\n this.UnofficialStore,\n this.Screenshot,\n this.ScreenRecording,\n ];\n }\n}\n"]}
|