capacitor-freerasp 2.2.1 → 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.
Files changed (119) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/CapacitorFreerasp.podspec +1 -1
  3. package/README.md +8 -8
  4. package/android/build.gradle +1 -1
  5. package/android/proguard-rules.pro +23 -0
  6. package/android/src/main/java/com/aheaditec/freerasp/FreeraspPlugin.kt +39 -18
  7. package/android/src/main/java/com/aheaditec/freerasp/ScreenProtector.kt +24 -2
  8. package/android/src/main/java/com/aheaditec/freerasp/ThreatHandler.kt +36 -18
  9. package/android/src/main/java/com/aheaditec/freerasp/events/BaseRaspEvent.kt +7 -0
  10. package/android/src/main/java/com/aheaditec/freerasp/events/RaspExecutionStateEvent.kt +22 -0
  11. package/android/src/main/java/com/aheaditec/freerasp/events/ThreatEvent.kt +69 -0
  12. package/android/src/main/java/com/aheaditec/freerasp/models/CapSuspiciousAppInfo.kt +1 -0
  13. package/android/src/main/java/com/aheaditec/freerasp/utils/Extensions.kt +1 -0
  14. package/android/src/main/java/com/aheaditec/freerasp/utils/RandomGenerator.kt +24 -0
  15. package/android/src/main/java/com/aheaditec/freerasp/utils/Utils.kt +3 -5
  16. package/dist/esm/api/listeners/raspExecutionState.d.ts +2 -0
  17. package/dist/esm/api/listeners/raspExecutionState.js +23 -0
  18. package/dist/esm/api/listeners/raspExecutionState.js.map +1 -0
  19. package/dist/esm/api/listeners/threat.d.ts +2 -0
  20. package/dist/esm/api/listeners/threat.js +84 -0
  21. package/dist/esm/api/listeners/threat.js.map +1 -0
  22. package/dist/esm/api/methods/capacitor.d.ts +4 -0
  23. package/dist/esm/api/methods/capacitor.js +11 -0
  24. package/dist/esm/api/methods/capacitor.js.map +1 -0
  25. package/dist/esm/api/methods/native.d.ts +6 -0
  26. package/dist/esm/api/methods/native.js +32 -0
  27. package/dist/esm/api/methods/native.js.map +1 -0
  28. package/dist/esm/api/nativeModules.d.ts +2 -0
  29. package/dist/esm/api/nativeModules.js +3 -0
  30. package/dist/esm/api/nativeModules.js.map +1 -0
  31. package/dist/esm/channels/raspExecutionState.d.ts +3 -0
  32. package/dist/esm/channels/raspExecutionState.js +27 -0
  33. package/dist/esm/channels/raspExecutionState.js.map +1 -0
  34. package/dist/esm/channels/threat.d.ts +3 -0
  35. package/dist/esm/channels/threat.js +34 -0
  36. package/dist/esm/channels/threat.js.map +1 -0
  37. package/dist/esm/index.d.ts +7 -12
  38. package/dist/esm/index.js +7 -158
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/models/raspExecutionState.d.ts +6 -0
  41. package/dist/esm/models/raspExecutionState.js +10 -0
  42. package/dist/esm/models/raspExecutionState.js.map +1 -0
  43. package/dist/esm/models/threat.d.ts +26 -0
  44. package/dist/esm/{definitions.js → models/threat.js} +7 -3
  45. package/dist/esm/models/threat.js.map +1 -0
  46. package/dist/esm/{definitions.d.ts → types/types.d.ts} +37 -44
  47. package/dist/esm/types/types.js +2 -0
  48. package/dist/esm/types/types.js.map +1 -0
  49. package/dist/esm/utils/malware.d.ts +3 -0
  50. package/dist/esm/utils/malware.js +22 -0
  51. package/dist/esm/utils/malware.js.map +1 -0
  52. package/dist/esm/utils/utils.d.ts +3 -0
  53. package/dist/esm/utils/utils.js +12 -0
  54. package/dist/esm/utils/utils.js.map +1 -0
  55. package/dist/plugin.cjs.js +153 -78
  56. package/dist/plugin.cjs.js.map +1 -1
  57. package/dist/plugin.js +153 -78
  58. package/dist/plugin.js.map +1 -1
  59. package/ios/Plugin/FreeraspPlugin.m +2 -0
  60. package/ios/Plugin/FreeraspPlugin.swift +50 -75
  61. package/ios/Plugin/Info.plist +1 -1
  62. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeDirectory +0 -0
  63. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeResources +100 -298
  64. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeSignature +0 -0
  65. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  66. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +7 -2
  67. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curl.h +380 -281
  68. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curlver.h +5 -6
  69. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/easy.h +4 -4
  70. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/header.h +1 -1
  71. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/mprintf.h +11 -4
  72. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/multi.h +62 -22
  73. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/options.h +2 -2
  74. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/system.h +76 -164
  75. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
  76. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/urlapi.h +5 -4
  77. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/websockets.h +17 -3
  78. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
  79. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +233 -528
  80. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.private.swiftinterface +7 -3
  81. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  82. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftinterface +7 -3
  83. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
  84. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  85. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +14 -4
  86. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curl.h +380 -281
  87. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curlver.h +5 -6
  88. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/easy.h +4 -4
  89. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/header.h +1 -1
  90. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/mprintf.h +11 -4
  91. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/multi.h +62 -22
  92. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/options.h +2 -2
  93. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/system.h +76 -164
  94. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
  95. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/urlapi.h +5 -4
  96. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/websockets.h +17 -3
  97. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
  98. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +233 -528
  99. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +7 -3
  100. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  101. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftinterface +7 -3
  102. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +233 -528
  103. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +7 -3
  104. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  105. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +7 -3
  106. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
  107. package/ios/Plugin/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +56 -45
  108. package/ios/Plugin/models/RaspExecutionStates.swift +15 -0
  109. package/ios/Plugin/models/SecurityThreat.swift +40 -0
  110. package/ios/Plugin/utils/EventIdentifiers.swift +17 -0
  111. package/ios/Plugin/utils/RandomGenerator.swift +23 -0
  112. package/ios/Plugin/utils/Utils.swift +32 -0
  113. package/package.json +15 -10
  114. package/android/src/main/java/com/aheaditec/freerasp/Threat.kt +0 -58
  115. package/dist/esm/definitions.js.map +0 -1
  116. package/dist/esm/utils.d.ts +0 -2
  117. package/dist/esm/utils.js +0 -8
  118. package/dist/esm/utils.js.map +0 -1
  119. package/ios/Plugin/TalsecRuntime.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
@@ -6,12 +6,21 @@ import TalsecRuntime
6
6
  public class FreeraspPlugin: CAPPlugin {
7
7
 
8
8
  public static var shared: FreeraspPlugin?
9
-
10
- let threatChannelKey = String(Int.random(in: 100_000..<999_999_999)) // key of the argument map under which threats are expected
11
- let threatChannelName = String(Int.random(in: 100_000..<999_999_999)) // name of the channel over which threat callbacks are sent
9
+
10
+ static var threatCache = Set<SecurityThreat>()
11
+ static var executionStateCache = Set<RaspExecutionStates>()
12
12
 
13
13
  override public func load() {
14
14
  FreeraspPlugin.shared = self
15
+ FreeraspPlugin.flushCache()
16
+ }
17
+
18
+ private static func flushCache() {
19
+ FreeraspPlugin.threatCache.forEach(FreeraspPlugin.dispatchEvent)
20
+ FreeraspPlugin.threatCache.removeAll()
21
+
22
+ FreeraspPlugin.executionStateCache.forEach(FreeraspPlugin.dispatchRaspExecutionStateEvent)
23
+ FreeraspPlugin.executionStateCache.removeAll()
15
24
  }
16
25
 
17
26
  /// Runs Talsec with given configuration
@@ -67,29 +76,38 @@ public class FreeraspPlugin: CAPPlugin {
67
76
  }
68
77
  }
69
78
  }
70
-
71
- private func getProtectedWindow(completion: @escaping (UIWindow?) -> Void) {
72
- DispatchQueue.main.async {
73
- if #available(iOS 13.0, *) {
74
- if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
75
- if let window = windowScene.windows.first {
76
- completion(window)
77
- } else {
78
- completion(nil)
79
- }
80
- } else {
81
- completion(nil)
82
- }
83
- }
79
+
80
+ static func dispatchEvent(securityThreat: SecurityThreat) {
81
+ if let instance = FreeraspPlugin.shared {
82
+ instance.notifyListeners(EventIdentifiers.threatChannelName, data: [EventIdentifiers.threatChannelKey: securityThreat.callbackIdentifier], retainUntilConsumed: true)
83
+ } else {
84
+ FreeraspPlugin.threatCache.insert(securityThreat)
85
+ }
86
+ }
87
+
88
+ static func dispatchRaspExecutionStateEvent(event: RaspExecutionStates) -> Void {
89
+ if let instance = FreeraspPlugin.shared {
90
+ instance.notifyListeners(EventIdentifiers.raspExecutionStateChannelName, data: [EventIdentifiers.raspExecutionStateChannelKey: event.callbackIdentifier], retainUntilConsumed: true)
91
+ } else {
92
+ FreeraspPlugin.executionStateCache.insert(event)
84
93
  }
85
94
  }
86
95
 
87
96
  /**
88
- * Method to setup the message passing between native and React Native
97
+ * Method to setup the message passing between native and Capacitor
89
98
  */
90
99
  @objc func getThreatChannelData(_ call: CAPPluginCall) -> Void {
91
100
  call.resolve([
92
- "ids": [threatChannelName, threatChannelKey]
101
+ "ids": [EventIdentifiers.threatChannelName, EventIdentifiers.threatChannelKey]
102
+ ])
103
+ }
104
+
105
+ /**
106
+ * Method to setup the message passing between native and Capacitor
107
+ */
108
+ @objc func getRaspExecutionStateChannelData(_ call: CAPPluginCall) -> Void {
109
+ call.resolve([
110
+ "ids": [EventIdentifiers.raspExecutionStateChannelName, EventIdentifiers.raspExecutionStateChannelKey]
93
111
  ])
94
112
  }
95
113
 
@@ -98,9 +116,15 @@ public class FreeraspPlugin: CAPPlugin {
98
116
  */
99
117
  @objc func getThreatIdentifiers(_ call: CAPPluginCall) -> Void {
100
118
  call.resolve([
101
- "ids": getThreatIdentifiers()
119
+ "ids": getThreatIdentifiersList()
102
120
  ])
103
121
  }
122
+
123
+ @objc func getRaspExecutionStateIdentifiers(_ call: CAPPluginCall) -> Void {
124
+ call.resolve([
125
+ "ids": getRaspExecutionStateIdentifiersList()
126
+ ])
127
+ }
104
128
 
105
129
  /**
106
130
  * We never send an invalid callback over our channel.
@@ -110,16 +134,6 @@ public class FreeraspPlugin: CAPPlugin {
110
134
  abort()
111
135
  }
112
136
 
113
- private func getThreatIdentifiers() -> [Int] {
114
- return SecurityThreat.allCases
115
- .filter {
116
- threat in threat.rawValue != "passcodeChange"
117
- }
118
- .map {
119
- threat in threat.callbackIdentifier
120
- }
121
- }
122
-
123
137
  private func initializeTalsec(talsecConfig: JSObject) throws {
124
138
  guard let iosConfig = talsecConfig["iosConfig"] as? JSObject else {
125
139
  throw NSError(domain: "Missing iosConfig parameter in Talsec Native Plugin", code: 1)
@@ -140,56 +154,17 @@ public class FreeraspPlugin: CAPPlugin {
140
154
  }
141
155
  }
142
156
 
143
- extension SecurityThreatCenter: SecurityThreatHandler {
157
+ extension SecurityThreatCenter: @retroactive SecurityThreatHandler, @retroactive RaspExecutionState {
144
158
 
145
159
  public func threatDetected(_ securityThreat: TalsecRuntime.SecurityThreat) {
146
160
  if (securityThreat.rawValue == "passcodeChange") {
147
161
  return
148
162
  }
149
163
 
150
- FreeraspPlugin.shared!.notifyListeners(FreeraspPlugin.shared!.threatChannelName, data: [FreeraspPlugin.shared!.threatChannelKey: securityThreat.callbackIdentifier], retainUntilConsumed: true)
164
+ FreeraspPlugin.dispatchEvent(securityThreat: securityThreat)
151
165
  }
152
- }
153
-
154
- struct ThreatIdentifiers {
155
- static let threatIdentifierList: [Int] = (1...14).map { _ in Int.random(in: 100_000..<999_999_999) }
156
- }
157
-
158
- /// An extension to unify callback names with Capacitor ones.
159
- extension SecurityThreat {
160
-
161
- var callbackIdentifier: Int {
162
- switch self {
163
- case .signature:
164
- return ThreatIdentifiers.threatIdentifierList[0]
165
- case .jailbreak:
166
- return ThreatIdentifiers.threatIdentifierList[1]
167
- case .debugger:
168
- return ThreatIdentifiers.threatIdentifierList[2]
169
- case .runtimeManipulation:
170
- return ThreatIdentifiers.threatIdentifierList[3]
171
- case .passcode:
172
- return ThreatIdentifiers.threatIdentifierList[4]
173
- case .passcodeChange:
174
- return ThreatIdentifiers.threatIdentifierList[5]
175
- case .simulator:
176
- return ThreatIdentifiers.threatIdentifierList[6]
177
- case .missingSecureEnclave:
178
- return ThreatIdentifiers.threatIdentifierList[7]
179
- case .systemVPN:
180
- return ThreatIdentifiers.threatIdentifierList[8]
181
- case .deviceChange:
182
- return ThreatIdentifiers.threatIdentifierList[9]
183
- case .deviceID:
184
- return ThreatIdentifiers.threatIdentifierList[10]
185
- case .unofficialStore:
186
- return ThreatIdentifiers.threatIdentifierList[11]
187
- case .screenshot:
188
- return ThreatIdentifiers.threatIdentifierList[12]
189
- case .screenRecording:
190
- return ThreatIdentifiers.threatIdentifierList[13]
191
- @unknown default:
192
- abort()
193
- }
166
+
167
+ public func onAllChecksFinished() {
168
+ FreeraspPlugin.dispatchRaspExecutionStateEvent(event: RaspExecutionStates.allChecksFinished)
194
169
  }
195
- }
170
+ }
@@ -21,4 +21,4 @@
21
21
  <key>NSPrincipalClass</key>
22
22
  <string></string>
23
23
  </dict>
24
- </plist>
24
+ </plist>