capacitor-freerasp 2.2.2 → 2.4.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.
Files changed (125) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/CapacitorFreerasp.podspec +5 -1
  3. package/README.md +8 -8
  4. package/android/build.gradle +3 -3
  5. package/android/src/main/java/com/aheaditec/freerasp/FreeraspPlugin.kt +106 -33
  6. package/android/src/main/java/com/aheaditec/freerasp/PluginThreatHandler.kt +121 -0
  7. package/android/src/main/java/com/aheaditec/freerasp/ScreenProtector.kt +24 -2
  8. package/android/src/main/java/com/aheaditec/freerasp/dispatchers/ExecutionStateDispatcher.kt +38 -0
  9. package/android/src/main/java/com/aheaditec/freerasp/dispatchers/ThreatDispatcher.kt +62 -0
  10. package/android/src/main/java/com/aheaditec/freerasp/events/BaseRaspEvent.kt +7 -0
  11. package/android/src/main/java/com/aheaditec/freerasp/events/RaspExecutionStateEvent.kt +22 -0
  12. package/android/src/main/java/com/aheaditec/freerasp/events/ThreatEvent.kt +71 -0
  13. package/android/src/main/java/com/aheaditec/freerasp/interfaces/PluginExecutionStateListener.kt +7 -0
  14. package/android/src/main/java/com/aheaditec/freerasp/interfaces/PluginThreatListener.kt +9 -0
  15. package/android/src/main/java/com/aheaditec/freerasp/models/CapSuspiciousAppInfo.kt +1 -0
  16. package/android/src/main/java/com/aheaditec/freerasp/utils/Extensions.kt +1 -0
  17. package/android/src/main/java/com/aheaditec/freerasp/utils/RandomGenerator.kt +24 -0
  18. package/android/src/main/java/com/aheaditec/freerasp/utils/Utils.kt +3 -5
  19. package/dist/esm/api/listeners/raspExecutionState.d.ts +3 -0
  20. package/dist/esm/api/listeners/raspExecutionState.js +40 -0
  21. package/dist/esm/api/listeners/raspExecutionState.js.map +1 -0
  22. package/dist/esm/api/listeners/threat.d.ts +3 -0
  23. package/dist/esm/api/listeners/threat.js +104 -0
  24. package/dist/esm/api/listeners/threat.js.map +1 -0
  25. package/dist/esm/api/methods/capacitor.d.ts +4 -0
  26. package/dist/esm/api/methods/capacitor.js +11 -0
  27. package/dist/esm/api/methods/capacitor.js.map +1 -0
  28. package/dist/esm/api/methods/native.d.ts +7 -0
  29. package/dist/esm/api/methods/native.js +36 -0
  30. package/dist/esm/api/methods/native.js.map +1 -0
  31. package/dist/esm/api/nativeModules.d.ts +2 -0
  32. package/dist/esm/api/nativeModules.js +3 -0
  33. package/dist/esm/api/nativeModules.js.map +1 -0
  34. package/dist/esm/channels/raspExecutionState.d.ts +3 -0
  35. package/dist/esm/channels/raspExecutionState.js +27 -0
  36. package/dist/esm/channels/raspExecutionState.js.map +1 -0
  37. package/dist/esm/channels/threat.d.ts +3 -0
  38. package/dist/esm/channels/threat.js +34 -0
  39. package/dist/esm/channels/threat.js.map +1 -0
  40. package/dist/esm/index.d.ts +7 -12
  41. package/dist/esm/index.js +7 -158
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/models/raspExecutionState.d.ts +6 -0
  44. package/dist/esm/models/raspExecutionState.js +10 -0
  45. package/dist/esm/models/raspExecutionState.js.map +1 -0
  46. package/dist/esm/models/threat.d.ts +27 -0
  47. package/dist/esm/{definitions.js → models/threat.js} +9 -3
  48. package/dist/esm/models/threat.js.map +1 -0
  49. package/dist/esm/{definitions.d.ts → types/types.d.ts} +41 -44
  50. package/dist/esm/types/types.js +2 -0
  51. package/dist/esm/types/types.js.map +1 -0
  52. package/dist/esm/utils/malware.d.ts +3 -0
  53. package/dist/esm/utils/malware.js +22 -0
  54. package/dist/esm/utils/malware.js.map +1 -0
  55. package/dist/esm/utils/utils.d.ts +3 -0
  56. package/dist/esm/utils/utils.js +12 -0
  57. package/dist/esm/utils/utils.js.map +1 -0
  58. package/dist/plugin.cjs.js +197 -76
  59. package/dist/plugin.cjs.js.map +1 -1
  60. package/dist/plugin.js +197 -76
  61. package/dist/plugin.js.map +1 -1
  62. package/ios/Plugin/FreeraspPlugin.m +3 -0
  63. package/ios/Plugin/FreeraspPlugin.swift +36 -77
  64. package/ios/Plugin/Info.plist +1 -1
  65. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeDirectory +0 -0
  66. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeResources +100 -298
  67. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeSignature +0 -0
  68. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  69. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +7 -2
  70. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curl.h +380 -281
  71. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curlver.h +5 -6
  72. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/easy.h +4 -4
  73. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/header.h +1 -1
  74. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/mprintf.h +11 -4
  75. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/multi.h +62 -22
  76. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/options.h +2 -2
  77. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/system.h +76 -164
  78. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
  79. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/urlapi.h +5 -4
  80. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/websockets.h +17 -3
  81. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
  82. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +233 -528
  83. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.private.swiftinterface +7 -3
  84. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  85. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftinterface +7 -3
  86. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
  87. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  88. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +14 -4
  89. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curl.h +380 -281
  90. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curlver.h +5 -6
  91. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/easy.h +4 -4
  92. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/header.h +1 -1
  93. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/mprintf.h +11 -4
  94. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/multi.h +62 -22
  95. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/options.h +2 -2
  96. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/system.h +76 -164
  97. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
  98. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/urlapi.h +5 -4
  99. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/websockets.h +17 -3
  100. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
  101. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +233 -528
  102. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +7 -3
  103. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  104. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftinterface +7 -3
  105. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +233 -528
  106. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +7 -3
  107. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  108. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +7 -3
  109. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
  110. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +56 -45
  111. package/ios/Plugin/dispatchers/ExecutionStateDispatcher.swift +35 -0
  112. package/ios/Plugin/dispatchers/ThreatDispatcher.swift +36 -0
  113. package/ios/Plugin/models/RaspExecutionStates.swift +15 -0
  114. package/ios/Plugin/models/SecurityThreat.swift +40 -0
  115. package/ios/Plugin/utils/EventIdentifiers.swift +17 -0
  116. package/ios/Plugin/utils/RandomGenerator.swift +23 -0
  117. package/ios/Plugin/utils/Utils.swift +32 -0
  118. package/package.json +15 -10
  119. package/android/src/main/java/com/aheaditec/freerasp/Threat.kt +0 -58
  120. package/android/src/main/java/com/aheaditec/freerasp/ThreatHandler.kt +0 -76
  121. package/dist/esm/definitions.js.map +0 -1
  122. package/dist/esm/utils.d.ts +0 -2
  123. package/dist/esm/utils.js +0 -8
  124. package/dist/esm/utils.js.map +0 -1
  125. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
@@ -0,0 +1,62 @@
1
+ package com.aheaditec.freerasp.dispatchers
2
+
3
+ import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo
4
+ import com.aheaditec.freerasp.events.ThreatEvent
5
+ import com.aheaditec.freerasp.interfaces.PluginThreatListener
6
+
7
+ internal class ThreatDispatcher {
8
+ private val threatCache = mutableSetOf<ThreatEvent>()
9
+ private val malwareCache = mutableSetOf<SuspiciousAppInfo>()
10
+
11
+ var listener: PluginThreatListener? = null
12
+ set(value) {
13
+ field = value
14
+ if (value != null) {
15
+ flushCache(value)
16
+ }
17
+ }
18
+
19
+ fun dispatchThreat(event: ThreatEvent) {
20
+ val checkedListener = synchronized(threatCache) {
21
+ val currentListener = listener
22
+ if (currentListener != null) {
23
+ currentListener
24
+ } else {
25
+ threatCache.add(event)
26
+ null
27
+ }
28
+ }
29
+ checkedListener?.threatDetected(event)
30
+ }
31
+
32
+ fun dispatchMalware(apps: MutableList<SuspiciousAppInfo>) {
33
+ val checkedListener = synchronized(malwareCache) {
34
+ val currentListener = listener
35
+ if (currentListener != null) {
36
+ currentListener
37
+ } else {
38
+ malwareCache.addAll(apps)
39
+ null
40
+ }
41
+ }
42
+ checkedListener?.malwareDetected(apps)
43
+ }
44
+
45
+ private fun flushCache(registeredListener: PluginThreatListener) {
46
+ val threats = synchronized(threatCache) {
47
+ val snapshot = threatCache.toSet()
48
+ threatCache.clear()
49
+ snapshot
50
+ }
51
+ threats.forEach { registeredListener.threatDetected(it) }
52
+
53
+ val malware = synchronized(malwareCache) {
54
+ val snapshot = malwareCache.toMutableList()
55
+ malwareCache.clear()
56
+ snapshot
57
+ }
58
+ if (malware.isNotEmpty()) {
59
+ registeredListener.malwareDetected(malware)
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,7 @@
1
+ package com.aheaditec.freerasp.events
2
+
3
+ internal interface BaseRaspEvent {
4
+ val value: Int
5
+ val channelName: String
6
+ val channelKey: String
7
+ }
@@ -0,0 +1,22 @@
1
+ package com.aheaditec.freerasp.events
2
+
3
+ import com.aheaditec.freerasp.utils.RandomGenerator
4
+ import org.json.JSONArray
5
+
6
+ internal sealed class RaspExecutionStateEvent(override val value: Int) : BaseRaspEvent {
7
+ override val channelName: String get() = CHANNEL_NAME
8
+ override val channelKey: String get() = CHANNEL_KEY
9
+
10
+ object AllChecksFinished : RaspExecutionStateEvent(RandomGenerator.next())
11
+
12
+ companion object {
13
+ internal val CHANNEL_NAME = RandomGenerator.next().toString()
14
+ internal val CHANNEL_KEY = RandomGenerator.next().toString()
15
+
16
+ internal val ALL_EVENTS = JSONArray(
17
+ listOf(
18
+ AllChecksFinished.value
19
+ )
20
+ )
21
+ }
22
+ }
@@ -0,0 +1,71 @@
1
+ package com.aheaditec.freerasp.events
2
+
3
+ import com.aheaditec.freerasp.utils.RandomGenerator
4
+ import org.json.JSONArray
5
+
6
+ /**
7
+ * Sealed class to represent the error codes.
8
+ *
9
+ * Sealed classes are used because of obfuscation - enums classes are not obfuscated well enough.
10
+ *
11
+ * @property value integer value of the error code.
12
+ */
13
+ internal sealed class ThreatEvent(override val value: Int) : BaseRaspEvent {
14
+ override val channelName: String get() = CHANNEL_NAME
15
+ override val channelKey: String get() = CHANNEL_KEY
16
+
17
+ object AppIntegrity : ThreatEvent(RandomGenerator.next())
18
+ object PrivilegedAccess : ThreatEvent(RandomGenerator.next())
19
+ object Debug : ThreatEvent(RandomGenerator.next())
20
+ object Hooks : ThreatEvent(RandomGenerator.next())
21
+ object Passcode : ThreatEvent(RandomGenerator.next())
22
+ object Simulator : ThreatEvent(RandomGenerator.next())
23
+ object SecureHardwareNotAvailable : ThreatEvent(RandomGenerator.next())
24
+ object DeviceBinding : ThreatEvent(RandomGenerator.next())
25
+ object UnofficialStore : ThreatEvent(RandomGenerator.next())
26
+ object ObfuscationIssues : ThreatEvent(RandomGenerator.next())
27
+ object SystemVPN : ThreatEvent(RandomGenerator.next())
28
+ object DevMode : ThreatEvent(RandomGenerator.next())
29
+ object Malware : ThreatEvent(RandomGenerator.next())
30
+ object ADBEnabled : ThreatEvent(RandomGenerator.next())
31
+ object Screenshot : ThreatEvent(RandomGenerator.next())
32
+ object ScreenRecording : ThreatEvent(RandomGenerator.next())
33
+ object MultiInstance : ThreatEvent(RandomGenerator.next())
34
+ object TimeSpoofing : ThreatEvent(RandomGenerator.next())
35
+ object LocationSpoofing : ThreatEvent(RandomGenerator.next())
36
+ object UnsecureWifi : ThreatEvent(RandomGenerator.next())
37
+ object Automation : ThreatEvent(RandomGenerator.next())
38
+
39
+ companion object {
40
+
41
+ internal val CHANNEL_NAME = RandomGenerator.next().toString()
42
+ internal val CHANNEL_KEY = RandomGenerator.next().toString()
43
+ internal val MALWARE_CHANNEL_KEY = RandomGenerator.next().toString()
44
+
45
+ internal val ALL_EVENTS = JSONArray(
46
+ listOf(
47
+ AppIntegrity,
48
+ PrivilegedAccess,
49
+ Debug,
50
+ Hooks,
51
+ Passcode,
52
+ Simulator,
53
+ SecureHardwareNotAvailable,
54
+ SystemVPN,
55
+ DeviceBinding,
56
+ UnofficialStore,
57
+ ObfuscationIssues,
58
+ DevMode,
59
+ Malware,
60
+ ADBEnabled,
61
+ Screenshot,
62
+ ScreenRecording,
63
+ MultiInstance,
64
+ TimeSpoofing,
65
+ LocationSpoofing,
66
+ UnsecureWifi,
67
+ Automation
68
+ ).map { it.value }
69
+ )
70
+ }
71
+ }
@@ -0,0 +1,7 @@
1
+ package com.aheaditec.freerasp.interfaces
2
+
3
+ import com.aheaditec.freerasp.events.RaspExecutionStateEvent
4
+
5
+ internal interface PluginExecutionStateListener {
6
+ fun raspExecutionStateChanged(event: RaspExecutionStateEvent)
7
+ }
@@ -0,0 +1,9 @@
1
+ package com.aheaditec.freerasp.interfaces
2
+
3
+ import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo
4
+ import com.aheaditec.freerasp.events.ThreatEvent
5
+
6
+ internal interface PluginThreatListener {
7
+ fun threatDetected(threatEventType: ThreatEvent)
8
+ fun malwareDetected(suspiciousApps: MutableList<SuspiciousAppInfo>)
9
+ }
@@ -10,6 +10,7 @@ import kotlinx.serialization.Serializable
10
10
  data class CapSuspiciousAppInfo(
11
11
  val packageInfo: CapPackageInfo,
12
12
  val reason: String,
13
+ val permissions: Set<String>?
13
14
  )
14
15
 
15
16
  /**
@@ -57,6 +57,7 @@ internal fun SuspiciousAppInfo.toCapSuspiciousAppInfo(context: Context): CapSusp
57
57
  return CapSuspiciousAppInfo(
58
58
  packageInfo = this.packageInfo.toCapPackageInfo(context),
59
59
  reason = this.reason,
60
+ permissions = this.permissions
60
61
  )
61
62
  }
62
63
 
@@ -0,0 +1,24 @@
1
+ package com.aheaditec.freerasp.utils
2
+
3
+ import java.security.SecureRandom
4
+ import java.util.concurrent.ConcurrentHashMap
5
+
6
+ internal object RandomGenerator {
7
+ private val secureRandom = SecureRandom()
8
+
9
+ private val generatedNumbers = ConcurrentHashMap.newKeySet<Int>()
10
+
11
+ internal fun next(): Int {
12
+ val min = 10_000_000
13
+ val max = 999_999_999
14
+ val range = (max - min) + 1
15
+
16
+ var nextNumber: Int
17
+ do {
18
+ nextNumber = secureRandom.nextInt(range) + min
19
+ } while (!generatedNumbers.add(nextNumber))
20
+
21
+ return nextNumber
22
+ }
23
+
24
+ }
@@ -9,6 +9,8 @@ import android.os.Build
9
9
  import android.util.Base64
10
10
  import android.util.Log
11
11
  import java.io.ByteArrayOutputStream
12
+ import androidx.core.graphics.createBitmap
13
+
12
14
 
13
15
  internal object Utils {
14
16
 
@@ -42,11 +44,7 @@ internal object Utils {
42
44
  }
43
45
 
44
46
  if (drawable.intrinsicWidth > 0 && drawable.intrinsicHeight > 0) {
45
- val bitmap = Bitmap.createBitmap(
46
- drawable.intrinsicWidth,
47
- drawable.intrinsicHeight,
48
- Bitmap.Config.ARGB_8888
49
- )
47
+ val bitmap = createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight)
50
48
  val canvas = Canvas(bitmap)
51
49
  drawable.setBounds(0, 0, canvas.width, canvas.height)
52
50
  drawable.draw(canvas)
@@ -0,0 +1,3 @@
1
+ import type { RaspExecutionStateEventActions } from '../../types/types';
2
+ export declare const registerRaspExecutionStateListener: (config: RaspExecutionStateEventActions) => Promise<void>;
3
+ export declare const removeRaspExecutionStateListener: () => Promise<void>;
@@ -0,0 +1,40 @@
1
+ import { getRaspExecutionStateChannelData, prepareRaspExecutionStateMapping } from '../../channels/raspExecutionState';
2
+ import { RaspExecutionState } from '../../models/raspExecutionState';
3
+ import { onInvalidCallback } from '../methods/native';
4
+ import { Talsec } from '../nativeModules';
5
+ let eventsListener = null;
6
+ let isInitializing = false;
7
+ export const registerRaspExecutionStateListener = async (config) => {
8
+ if (isInitializing) {
9
+ return;
10
+ }
11
+ isInitializing = true;
12
+ if (eventsListener) {
13
+ await eventsListener.remove();
14
+ eventsListener = null;
15
+ }
16
+ const [channel, key] = await getRaspExecutionStateChannelData();
17
+ await prepareRaspExecutionStateMapping();
18
+ eventsListener = await Talsec.addListener(channel, async (event) => {
19
+ var _a;
20
+ if (event[key] == undefined) {
21
+ onInvalidCallback();
22
+ }
23
+ switch (event[key]) {
24
+ case RaspExecutionState.AllChecksFinished.value:
25
+ (_a = config.allChecksFinished) === null || _a === void 0 ? void 0 : _a.call(config);
26
+ break;
27
+ default:
28
+ onInvalidCallback();
29
+ break;
30
+ }
31
+ });
32
+ isInitializing = false;
33
+ };
34
+ export const removeRaspExecutionStateListener = async () => {
35
+ if (eventsListener) {
36
+ await eventsListener.remove();
37
+ eventsListener = null;
38
+ }
39
+ };
40
+ //# sourceMappingURL=raspExecutionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raspExecutionState.js","sourceRoot":"","sources":["../../../../src/api/listeners/raspExecutionState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,MAAM,mCAAmC,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,IAAI,cAAc,GAAgC,IAAI,CAAC;AACvD,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,EAAE,MAAsC,EAAiB,EAAE;IAChH,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,cAAc,GAAG,IAAI,CAAC;IAEtB,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,MAAM,gCAAgC,EAAE,CAAC;IAChE,MAAM,gCAAgC,EAAE,CAAC;IAEzC,cAAc,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;;QACtE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;YAC5B,iBAAiB,EAAE,CAAC;QACtB,CAAC;QACD,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,kBAAkB,CAAC,iBAAiB,CAAC,KAAK;gBAC7C,MAAA,MAAM,CAAC,iBAAiB,sDAAI,CAAC;gBAC7B,MAAM;YACR;gBACE,iBAAiB,EAAE,CAAC;gBACpB,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IACH,cAAc,GAAG,KAAK,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,IAAmB,EAAE;IACxE,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;AACH,CAAC,CAAC","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nimport { getRaspExecutionStateChannelData, prepareRaspExecutionStateMapping } from '../../channels/raspExecutionState';\nimport { RaspExecutionState } from '../../models/raspExecutionState';\nimport type { RaspExecutionStateEventActions } from '../../types/types';\nimport { onInvalidCallback } from '../methods/native';\nimport { Talsec } from '../nativeModules';\n\nlet eventsListener: PluginListenerHandle | null = null;\nlet isInitializing = false;\n\nexport const registerRaspExecutionStateListener = async (config: RaspExecutionStateEventActions): Promise<void> => {\n if (isInitializing) {\n return;\n }\n isInitializing = true;\n\n if (eventsListener) {\n await eventsListener.remove();\n eventsListener = null;\n }\n\n const [channel, key] = await getRaspExecutionStateChannelData();\n await prepareRaspExecutionStateMapping();\n\n eventsListener = await Talsec.addListener(channel, async (event: any) => {\n if (event[key] == undefined) {\n onInvalidCallback();\n }\n switch (event[key]) {\n case RaspExecutionState.AllChecksFinished.value:\n config.allChecksFinished?.();\n break;\n default:\n onInvalidCallback();\n break;\n }\n });\n isInitializing = false;\n};\n\nexport const removeRaspExecutionStateListener = async (): Promise<void> => {\n if (eventsListener) {\n await eventsListener.remove();\n eventsListener = null;\n }\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import type { ThreatEventActions } from '../../types/types';
2
+ export declare const registerThreatListener: (config: ThreatEventActions) => Promise<void>;
3
+ export declare const removeThreatListener: () => Promise<void>;
@@ -0,0 +1,104 @@
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
+ let eventsListener = null;
7
+ let isInitializing = false;
8
+ export const registerThreatListener = async (config) => {
9
+ if (isInitializing) {
10
+ return;
11
+ }
12
+ isInitializing = true;
13
+ if (eventsListener) {
14
+ await eventsListener.remove();
15
+ eventsListener = null;
16
+ }
17
+ const [channel, key, malwareKey] = await getThreatChannelData();
18
+ await prepareThreatMapping();
19
+ eventsListener = await Talsec.addListener(channel, async (event) => {
20
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
21
+ if (event[key] == undefined) {
22
+ onInvalidCallback();
23
+ }
24
+ switch (event[key]) {
25
+ case Threat.PrivilegedAccess.value:
26
+ (_a = config.privilegedAccess) === null || _a === void 0 ? void 0 : _a.call(config);
27
+ break;
28
+ case Threat.Debug.value:
29
+ (_b = config.debug) === null || _b === void 0 ? void 0 : _b.call(config);
30
+ break;
31
+ case Threat.Simulator.value:
32
+ (_c = config.simulator) === null || _c === void 0 ? void 0 : _c.call(config);
33
+ break;
34
+ case Threat.AppIntegrity.value:
35
+ (_d = config.appIntegrity) === null || _d === void 0 ? void 0 : _d.call(config);
36
+ break;
37
+ case Threat.UnofficialStore.value:
38
+ (_e = config.unofficialStore) === null || _e === void 0 ? void 0 : _e.call(config);
39
+ break;
40
+ case Threat.Hooks.value:
41
+ (_f = config.hooks) === null || _f === void 0 ? void 0 : _f.call(config);
42
+ break;
43
+ case Threat.DeviceBinding.value:
44
+ (_g = config.deviceBinding) === null || _g === void 0 ? void 0 : _g.call(config);
45
+ break;
46
+ case Threat.Passcode.value:
47
+ (_h = config.passcode) === null || _h === void 0 ? void 0 : _h.call(config);
48
+ break;
49
+ case Threat.SecureHardwareNotAvailable.value:
50
+ (_j = config.secureHardwareNotAvailable) === null || _j === void 0 ? void 0 : _j.call(config);
51
+ break;
52
+ case Threat.ObfuscationIssues.value:
53
+ (_k = config.obfuscationIssues) === null || _k === void 0 ? void 0 : _k.call(config);
54
+ break;
55
+ case Threat.DeviceID.value:
56
+ (_l = config.deviceID) === null || _l === void 0 ? void 0 : _l.call(config);
57
+ break;
58
+ case Threat.DevMode.value:
59
+ (_m = config.devMode) === null || _m === void 0 ? void 0 : _m.call(config);
60
+ break;
61
+ case Threat.SystemVPN.value:
62
+ (_o = config.systemVPN) === null || _o === void 0 ? void 0 : _o.call(config);
63
+ break;
64
+ case Threat.Malware.value:
65
+ (_p = config.malware) === null || _p === void 0 ? void 0 : _p.call(config, await parseMalwareData(event[malwareKey]));
66
+ break;
67
+ case Threat.ADBEnabled.value:
68
+ (_q = config.adbEnabled) === null || _q === void 0 ? void 0 : _q.call(config);
69
+ break;
70
+ case Threat.Screenshot.value:
71
+ (_r = config.screenshot) === null || _r === void 0 ? void 0 : _r.call(config);
72
+ break;
73
+ case Threat.ScreenRecording.value:
74
+ (_s = config.screenRecording) === null || _s === void 0 ? void 0 : _s.call(config);
75
+ break;
76
+ case Threat.MultiInstance.value:
77
+ (_t = config.multiInstance) === null || _t === void 0 ? void 0 : _t.call(config);
78
+ break;
79
+ case Threat.TimeSpoofing.value:
80
+ (_u = config.timeSpoofing) === null || _u === void 0 ? void 0 : _u.call(config);
81
+ break;
82
+ case Threat.LocationSpoofing.value:
83
+ (_v = config.locationSpoofing) === null || _v === void 0 ? void 0 : _v.call(config);
84
+ break;
85
+ case Threat.UnsecureWifi.value:
86
+ (_w = config.unsecureWifi) === null || _w === void 0 ? void 0 : _w.call(config);
87
+ break;
88
+ case Threat.Automation.value:
89
+ (_x = config.automation) === null || _x === void 0 ? void 0 : _x.call(config);
90
+ break;
91
+ default:
92
+ onInvalidCallback();
93
+ break;
94
+ }
95
+ });
96
+ isInitializing = false;
97
+ };
98
+ export const removeThreatListener = async () => {
99
+ if (eventsListener) {
100
+ await eventsListener.remove();
101
+ eventsListener = null;
102
+ }
103
+ };
104
+ //# 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 type { PluginListenerHandle } from '@capacitor/core';\n\nimport { 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\nlet eventsListener: PluginListenerHandle | null = null;\nlet isInitializing = false;\n\nexport const registerThreatListener = async (config: ThreatEventActions): Promise<void> => {\n if (isInitializing) {\n return;\n }\n isInitializing = true;\n\n if (eventsListener) {\n await eventsListener.remove();\n eventsListener = null;\n }\n\n const [channel, key, malwareKey] = await getThreatChannelData();\n await prepareThreatMapping();\n\n eventsListener = 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 case Threat.Automation.value:\n config.automation?.();\n break;\n default:\n onInvalidCallback();\n break;\n }\n });\n isInitializing = false;\n};\n\nexport const removeThreatListener = async (): Promise<void> => {\n if (eventsListener) {\n await eventsListener.remove();\n eventsListener = null;\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,7 @@
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 removeExternalId: () => Promise<boolean>;
6
+ export declare const getAppIcon: (packageName: string) => Promise<string>;
7
+ export declare const onInvalidCallback: () => void;
@@ -0,0 +1,36 @@
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 removeExternalId = async () => {
23
+ const { result } = await Talsec.removeExternalId();
24
+ return result;
25
+ };
26
+ export const getAppIcon = async (packageName) => {
27
+ if (Capacitor.getPlatform() === 'ios') {
28
+ return Promise.reject('App icon retrieval for Malware detection is not available on iOS');
29
+ }
30
+ const { result } = await Talsec.getAppIcon({ packageName });
31
+ return result;
32
+ };
33
+ export const onInvalidCallback = () => {
34
+ Talsec.onInvalidCallback();
35
+ };
36
+ //# 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,gBAAgB,GAAG,KAAK,IAAsB,EAAE;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACnD,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 removeExternalId = async (): Promise<boolean> => {\n const { result } = await Talsec.removeExternalId();\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,2 @@
1
+ import type { TalsecPlugin } from '../types/types';
2
+ export declare const Talsec: TalsecPlugin;
@@ -0,0 +1,3 @@
1
+ import { registerPlugin } from '@capacitor/core';
2
+ export const Talsec = registerPlugin('Freerasp', {});
3
+ //# sourceMappingURL=nativeModules.js.map
@@ -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,3 @@
1
+ export declare const getRaspExecutionStateIdentifiers: () => Promise<number[]>;
2
+ export declare const getRaspExecutionStateChannelData: () => Promise<[string, string]>;
3
+ export declare const prepareRaspExecutionStateMapping: () => Promise<void>;
@@ -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,3 @@
1
+ export declare const getThreatIdentifiers: () => Promise<number[]>;
2
+ export declare const getThreatChannelData: () => Promise<[string, string, string]>;
3
+ export declare const prepareThreatMapping: () => Promise<void>;
@@ -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"]}
@@ -1,12 +1,7 @@
1
- import type { FreeraspPlugin, FreeraspConfig, NativeEventEmitterActions } from './definitions';
2
- declare const Freerasp: FreeraspPlugin;
3
- declare const setThreatListeners: <T extends NativeEventEmitterActions>(callbacks: T & Record<Exclude<keyof T, "privilegedAccess" | "debug" | "simulator" | "appIntegrity" | "unofficialStore" | "hooks" | "deviceBinding" | "deviceID" | "passcode" | "secureHardwareNotAvailable" | "obfuscationIssues" | "devMode" | "systemVPN" | "malware" | "adbEnabled" | "screenshot" | "screenRecording" | "multiInstance">, []>) => Promise<void>;
4
- declare const removeThreatListeners: () => void;
5
- declare const startFreeRASP: <T extends NativeEventEmitterActions>(config: FreeraspConfig, reactions: T & Record<Exclude<keyof T, "privilegedAccess" | "debug" | "simulator" | "appIntegrity" | "unofficialStore" | "hooks" | "deviceBinding" | "deviceID" | "passcode" | "secureHardwareNotAvailable" | "obfuscationIssues" | "devMode" | "systemVPN" | "malware" | "adbEnabled" | "screenshot" | "screenRecording" | "multiInstance">, []>) => Promise<boolean>;
6
- declare const addToWhitelist: (packageName: string) => Promise<boolean>;
7
- declare const getAppIcon: (packageName: string) => Promise<string>;
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 };