freerasp-react-native 3.11.0 → 3.13.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 +30 -0
- package/README.md +4 -2
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt +59 -12
- package/android/src/main/java/com/freeraspreactnative/utils/Extensions.kt +1 -1
- package/android/src/main/java/com/freeraspreactnative/utils/Utils.kt +4 -1
- package/example/src/MalwareItem.tsx +14 -15
- package/lib/commonjs/index.js +20 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +16 -4
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +21 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.13.0] - 2024-12-20
|
|
9
|
+
|
|
10
|
+
- iOS SDK version: 6.6.3
|
|
11
|
+
- Android SDK version: 13.2.0
|
|
12
|
+
|
|
13
|
+
### Android
|
|
14
|
+
|
|
15
|
+
#### Added
|
|
16
|
+
|
|
17
|
+
- Added request integrity information to data collection headers.
|
|
18
|
+
- Enhanced and accelerated the data collection logic.
|
|
19
|
+
|
|
20
|
+
## [3.12.0] - 2024-12-06
|
|
21
|
+
|
|
22
|
+
- iOS SDK version: 6.6.3
|
|
23
|
+
- Android SDK version: 13.0.0
|
|
24
|
+
|
|
25
|
+
### React Native
|
|
26
|
+
|
|
27
|
+
#### Changed
|
|
28
|
+
|
|
29
|
+
- App icons for detected malware are not fetched automatically anymore, which reduces computation required to retrieve malware data. From now on, app icons have to be retrieved using the `getAppIcon` method
|
|
30
|
+
- Parsing of malware data is now async
|
|
31
|
+
|
|
32
|
+
### Android
|
|
33
|
+
|
|
34
|
+
#### Changed
|
|
35
|
+
|
|
36
|
+
- Malware data is now parsed on background thread to improve responsiveness
|
|
37
|
+
|
|
8
38
|
## [3.11.0] - 2024-11-19
|
|
9
39
|
|
|
10
40
|
### React Native
|
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ Learn more about freemium freeRASP features at [GitHub main repository](https://
|
|
|
48
48
|
## :radioactive: freeMalwareDetection
|
|
49
49
|
**freeMalwareDetection** is a powerful feature designed to enhance the security of your Android application by quickly and efficiently scanning for malicious or suspicious applications (e.g. Android malware) based on various blacklists and security policies. It helps to detect apps with suspicious package names, hashes, or potentially dangerous permissions.
|
|
50
50
|
|
|
51
|
-
After the integration of freeRASP, make sure you visit the [freeMalwareDetection](https://
|
|
51
|
+
After the integration of freeRASP, make sure you visit the [freeMalwareDetection](https://github.com/talsec/freeMalwareDetection) repository to learn more about this feature!
|
|
52
52
|
|
|
53
53
|
# :book: Discover the Official freeRASP Documentation
|
|
54
54
|
|
|
@@ -73,4 +73,6 @@ If you have any ideas for improvements, feel free to [raise an issue](https://gi
|
|
|
73
73
|
You can check out the project board [here](https://github.com/orgs/talsec/projects/2).
|
|
74
74
|
|
|
75
75
|
# :page_facing_up: License
|
|
76
|
-
|
|
76
|
+
|
|
77
|
+
This project is provided as freemium software, i.e. there is a [fair usage policy](https://docs.talsec.app/freerasp/features-and-pricing-plans#plans-comparison) that imposes some limitations on the free usage. The SDK software consists of open-source and binary parts, which is the property of Talsec. The open-source part is licensed under the MIT License - see the LICENSE file for details.
|
|
78
|
+
|
package/android/build.gradle
CHANGED
|
@@ -90,7 +90,7 @@ dependencies {
|
|
|
90
90
|
implementation "com.facebook.react:react-native:$react_native_version"
|
|
91
91
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
92
92
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1"
|
|
93
|
-
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:13.
|
|
93
|
+
implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:13.2.0"
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
if (isNewArchitectureEnabled()) {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
package com.freeraspreactnative
|
|
2
2
|
|
|
3
|
+
import android.os.Handler
|
|
4
|
+
import android.os.HandlerThread
|
|
5
|
+
import android.os.Looper
|
|
3
6
|
import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo
|
|
4
7
|
import com.aheaditec.talsec_security.security.api.Talsec
|
|
5
8
|
import com.aheaditec.talsec_security.security.api.TalsecConfig
|
|
6
9
|
import com.aheaditec.talsec_security.security.api.ThreatListener
|
|
7
10
|
import com.facebook.react.bridge.Arguments
|
|
11
|
+
import com.facebook.react.bridge.LifecycleEventListener
|
|
8
12
|
import com.facebook.react.bridge.Promise
|
|
9
13
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
10
14
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
@@ -13,6 +17,7 @@ import com.facebook.react.bridge.ReadableMap
|
|
|
13
17
|
import com.facebook.react.bridge.UiThreadUtil.runOnUiThread
|
|
14
18
|
import com.facebook.react.bridge.WritableArray
|
|
15
19
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
20
|
+
import com.freeraspreactnative.utils.Utils
|
|
16
21
|
import com.freeraspreactnative.utils.getArraySafe
|
|
17
22
|
import com.freeraspreactnative.utils.getBooleanSafe
|
|
18
23
|
import com.freeraspreactnative.utils.getMapThrowing
|
|
@@ -24,6 +29,19 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
24
29
|
ReactContextBaseJavaModule(reactContext) {
|
|
25
30
|
|
|
26
31
|
private val listener = ThreatListener(FreeraspThreatHandler, FreeraspThreatHandler)
|
|
32
|
+
private val lifecycleListener = object : LifecycleEventListener {
|
|
33
|
+
override fun onHostResume() {
|
|
34
|
+
// do nothing
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
override fun onHostPause() {
|
|
38
|
+
// do nothing
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override fun onHostDestroy() {
|
|
42
|
+
backgroundHandlerThread.quitSafely()
|
|
43
|
+
}
|
|
44
|
+
}
|
|
27
45
|
|
|
28
46
|
override fun getName(): String {
|
|
29
47
|
return NAME
|
|
@@ -31,6 +49,7 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
31
49
|
|
|
32
50
|
init {
|
|
33
51
|
appReactContext = reactContext
|
|
52
|
+
reactContext.addLifecycleEventListener(lifecycleListener)
|
|
34
53
|
}
|
|
35
54
|
|
|
36
55
|
@ReactMethod
|
|
@@ -103,6 +122,20 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
103
122
|
promise.resolve(true)
|
|
104
123
|
}
|
|
105
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Method retrieves app icon for the given parameter
|
|
127
|
+
* @param packageName package name of the app we want to retrieve icon for
|
|
128
|
+
* @return PNG with app icon encoded as a base64 string
|
|
129
|
+
*/
|
|
130
|
+
@ReactMethod
|
|
131
|
+
fun getAppIcon(packageName: String, promise: Promise) {
|
|
132
|
+
// Perform the app icon encoding on a background thread
|
|
133
|
+
backgroundHandler.post {
|
|
134
|
+
val encodedData = Utils.getAppIconAsBase64String(reactContext, packageName)
|
|
135
|
+
mainHandler.post { promise.resolve(encodedData) }
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
106
139
|
private fun buildTalsecConfig(config: ReadableMap): TalsecConfig {
|
|
107
140
|
val androidConfig = config.getMapThrowing("androidConfig")
|
|
108
141
|
val packageName = androidConfig.getStringThrowing("packageName")
|
|
@@ -126,13 +159,19 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
126
159
|
|
|
127
160
|
companion object {
|
|
128
161
|
const val NAME = "FreeraspReactNative"
|
|
129
|
-
val THREAT_CHANNEL_NAME = (10000..999999999).random()
|
|
162
|
+
private val THREAT_CHANNEL_NAME = (10000..999999999).random()
|
|
130
163
|
.toString() // name of the channel over which threat callbacks are sent
|
|
131
|
-
val THREAT_CHANNEL_KEY = (10000..999999999).random()
|
|
164
|
+
private val THREAT_CHANNEL_KEY = (10000..999999999).random()
|
|
132
165
|
.toString() // key of the argument map under which threats are expected
|
|
133
|
-
val MALWARE_CHANNEL_KEY = (10000..999999999).random()
|
|
166
|
+
private val MALWARE_CHANNEL_KEY = (10000..999999999).random()
|
|
134
167
|
.toString() // key of the argument map under which malware data is expected
|
|
168
|
+
|
|
169
|
+
private val backgroundHandlerThread = HandlerThread("BackgroundThread").apply { start() }
|
|
170
|
+
private val backgroundHandler = Handler(backgroundHandlerThread.looper)
|
|
171
|
+
private val mainHandler = Handler(Looper.getMainLooper())
|
|
172
|
+
|
|
135
173
|
private lateinit var appReactContext: ReactApplicationContext
|
|
174
|
+
|
|
136
175
|
private fun notifyListeners(threat: Threat) {
|
|
137
176
|
val params = Arguments.createMap()
|
|
138
177
|
params.putInt(THREAT_CHANNEL_KEY, threat.value)
|
|
@@ -145,15 +184,23 @@ class FreeraspReactNativeModule(private val reactContext: ReactApplicationContex
|
|
|
145
184
|
* Sends malware detected event to React Native
|
|
146
185
|
*/
|
|
147
186
|
private fun notifyMalware(suspiciousApps: MutableList<SuspiciousAppInfo>) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
187
|
+
// Perform the malware encoding on a background thread
|
|
188
|
+
backgroundHandler.post {
|
|
189
|
+
|
|
190
|
+
val encodedSuspiciousApps = suspiciousApps.toEncodedWritableArray(appReactContext)
|
|
191
|
+
|
|
192
|
+
mainHandler.post {
|
|
193
|
+
val params = Arguments.createMap()
|
|
194
|
+
params.putInt(THREAT_CHANNEL_KEY, Threat.Malware.value)
|
|
195
|
+
params.putArray(
|
|
196
|
+
MALWARE_CHANNEL_KEY, encodedSuspiciousApps
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
appReactContext
|
|
200
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
201
|
+
.emit(THREAT_CHANNEL_NAME, params)
|
|
202
|
+
}
|
|
203
|
+
}
|
|
157
204
|
}
|
|
158
205
|
}
|
|
159
206
|
|
|
@@ -86,7 +86,7 @@ internal fun PackageInfo.toRNPackageInfo(context: ReactContext): RNPackageInfo {
|
|
|
86
86
|
packageName = this.packageName,
|
|
87
87
|
appName = Utils.getAppName(context, this.applicationInfo),
|
|
88
88
|
version = this.versionName,
|
|
89
|
-
appIcon =
|
|
89
|
+
appIcon = null, // this requires heavier computations, so appIcon has to be retrieved separately
|
|
90
90
|
installerStore = Utils.getInstallationSource(context, this.packageName)
|
|
91
91
|
)
|
|
92
92
|
}
|
|
@@ -75,7 +75,10 @@ internal object Utils {
|
|
|
75
75
|
context.packageManager.getInstallerPackageName(packageName)
|
|
76
76
|
}
|
|
77
77
|
} catch (e: Exception) {
|
|
78
|
-
Log.e(
|
|
78
|
+
Log.e(
|
|
79
|
+
"Talsec",
|
|
80
|
+
"Could not retrieve app installation source for ${packageName}: ${e.message}",
|
|
81
|
+
)
|
|
79
82
|
null
|
|
80
83
|
}
|
|
81
84
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Button, HStack } from '@react-native-material/core';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
addToWhitelist,
|
|
4
|
+
getAppIcon,
|
|
5
|
+
type SuspiciousAppInfo,
|
|
6
|
+
} from 'freerasp-react-native';
|
|
3
7
|
import ArrowUp from '../assets/arrow-up.png';
|
|
4
8
|
import ArrowDown from '../assets/arrow-down.png';
|
|
5
|
-
import React from 'react';
|
|
9
|
+
import React, { useEffect } from 'react';
|
|
6
10
|
import { useState } from 'react';
|
|
7
11
|
import { TouchableOpacity, View, Text, Image, StyleSheet } from 'react-native';
|
|
8
12
|
import { Colors } from './styles';
|
|
@@ -10,6 +14,14 @@ import { Colors } from './styles';
|
|
|
10
14
|
export const MalwareItem: React.FC<{ app: SuspiciousAppInfo }> = ({ app }) => {
|
|
11
15
|
const [expanded, setExpanded] = useState(false);
|
|
12
16
|
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
(async () => {
|
|
19
|
+
// retrieve app icons for detected malware
|
|
20
|
+
const appIcon = await getAppIcon(app.packageInfo.packageName);
|
|
21
|
+
app.packageInfo.appIcon = appIcon;
|
|
22
|
+
})();
|
|
23
|
+
}, [app.packageInfo]);
|
|
24
|
+
|
|
13
25
|
const appUninstall = async () => {
|
|
14
26
|
alert('Implement yourself!');
|
|
15
27
|
};
|
|
@@ -94,19 +106,6 @@ export const MalwareItem: React.FC<{ app: SuspiciousAppInfo }> = ({ app }) => {
|
|
|
94
106
|
};
|
|
95
107
|
|
|
96
108
|
const styles = StyleSheet.create({
|
|
97
|
-
button: {
|
|
98
|
-
borderRadius: 20,
|
|
99
|
-
paddingHorizontal: 30,
|
|
100
|
-
paddingVertical: 10,
|
|
101
|
-
marginTop: 15,
|
|
102
|
-
elevation: 2,
|
|
103
|
-
},
|
|
104
|
-
buttonOpen: {
|
|
105
|
-
backgroundColor: '#F194FF',
|
|
106
|
-
},
|
|
107
|
-
buttonClose: {
|
|
108
|
-
backgroundColor: '#2196F3',
|
|
109
|
-
},
|
|
110
109
|
item: {
|
|
111
110
|
backgroundColor: '#d4e4ff',
|
|
112
111
|
borderRadius: 20,
|
package/lib/commonjs/index.js
CHANGED
|
@@ -8,9 +8,10 @@ var _exportNames = {
|
|
|
8
8
|
removeThreatListeners: true,
|
|
9
9
|
talsecStart: true,
|
|
10
10
|
useFreeRasp: true,
|
|
11
|
-
addToWhitelist: true
|
|
11
|
+
addToWhitelist: true,
|
|
12
|
+
getAppIcon: true
|
|
12
13
|
};
|
|
13
|
-
exports.useFreeRasp = exports.talsecStart = exports.setThreatListeners = exports.removeThreatListeners = exports.default = exports.addToWhitelist = void 0;
|
|
14
|
+
exports.useFreeRasp = exports.talsecStart = exports.setThreatListeners = exports.removeThreatListeners = exports.getAppIcon = exports.default = exports.addToWhitelist = void 0;
|
|
14
15
|
var _react = require("react");
|
|
15
16
|
var _reactNative = require("react-native");
|
|
16
17
|
var _utils = require("./utils");
|
|
@@ -60,8 +61,14 @@ const prepareMapping = async () => {
|
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
63
|
-
const parseMalwareData = data => {
|
|
64
|
-
return
|
|
64
|
+
const parseMalwareData = async data => {
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
66
|
+
try {
|
|
67
|
+
resolve(data.map(entry => toSuspiciousAppInfo(entry)));
|
|
68
|
+
} catch (error) {
|
|
69
|
+
reject(`Error while parsing app data: ${error}`);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
65
72
|
};
|
|
66
73
|
const toSuspiciousAppInfo = base64Value => {
|
|
67
74
|
const data = JSON.parse(_buffer.Buffer.from(base64Value, 'base64').toString('utf8'));
|
|
@@ -74,7 +81,7 @@ const toSuspiciousAppInfo = base64Value => {
|
|
|
74
81
|
const setThreatListeners = async config => {
|
|
75
82
|
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
76
83
|
await prepareMapping();
|
|
77
|
-
eventsListener = eventEmitter.addListener(channel, event => {
|
|
84
|
+
eventsListener = eventEmitter.addListener(channel, async event => {
|
|
78
85
|
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware, _config$adbEnabled;
|
|
79
86
|
if (event[key] === undefined) {
|
|
80
87
|
onInvalidCallback();
|
|
@@ -120,7 +127,7 @@ const setThreatListeners = async config => {
|
|
|
120
127
|
(_config$systemVPN = config.systemVPN) === null || _config$systemVPN === void 0 || _config$systemVPN.call(config);
|
|
121
128
|
break;
|
|
122
129
|
case _threat.Threat.Malware.value:
|
|
123
|
-
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, parseMalwareData(event[malwareKey]));
|
|
130
|
+
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, await parseMalwareData(event[malwareKey]));
|
|
124
131
|
break;
|
|
125
132
|
case _threat.Threat.ADBEnabled.value:
|
|
126
133
|
(_config$adbEnabled = config.adbEnabled) === null || _config$adbEnabled === void 0 || _config$adbEnabled.call(config);
|
|
@@ -168,5 +175,12 @@ const addToWhitelist = async packageName => {
|
|
|
168
175
|
return FreeraspReactNative.addToWhitelist(packageName);
|
|
169
176
|
};
|
|
170
177
|
exports.addToWhitelist = addToWhitelist;
|
|
178
|
+
const getAppIcon = packageName => {
|
|
179
|
+
if (_reactNative.Platform.OS === 'ios') {
|
|
180
|
+
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
181
|
+
}
|
|
182
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
183
|
+
};
|
|
184
|
+
exports.getAppIcon = getAppIcon;
|
|
171
185
|
var _default = exports.default = FreeraspReactNative;
|
|
172
186
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_utils","_buffer","_threat","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","FreeraspReactNative","NativeModules","eventEmitter","NativeEventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatCount","itemsHaveType","getThreatChannelData","dataLength","Platform","OS","data","prepareMapping","newValues","threats","Threat","getValues","map","threat","index","value","parseMalwareData","entry","toSuspiciousAppInfo","base64Value","JSON","parse","Buffer","from","toString","packageInfo","reason","setThreatListeners","config","channel","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","undefined","PrivilegedAccess","privilegedAccess","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","ADBEnabled","adbEnabled","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","useEffect","response","console","log","e","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_utils","_buffer","_threat","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","FreeraspReactNative","NativeModules","eventEmitter","NativeEventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatCount","itemsHaveType","getThreatChannelData","dataLength","Platform","OS","data","prepareMapping","newValues","threats","Threat","getValues","map","threat","index","value","parseMalwareData","Promise","resolve","reject","entry","toSuspiciousAppInfo","error","base64Value","JSON","parse","Buffer","from","toString","packageInfo","reason","setThreatListeners","config","channel","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","undefined","PrivilegedAccess","privilegedAccess","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","ADBEnabled","adbEnabled","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","useEffect","response","console","log","e","code","message","addToWhitelist","packageName","getAppIcon","_default","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -35,8 +35,14 @@ const prepareMapping = async () => {
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
38
|
-
const parseMalwareData = data => {
|
|
39
|
-
return
|
|
38
|
+
const parseMalwareData = async data => {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
try {
|
|
41
|
+
resolve(data.map(entry => toSuspiciousAppInfo(entry)));
|
|
42
|
+
} catch (error) {
|
|
43
|
+
reject(`Error while parsing app data: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
40
46
|
};
|
|
41
47
|
const toSuspiciousAppInfo = base64Value => {
|
|
42
48
|
const data = JSON.parse(Buffer.from(base64Value, 'base64').toString('utf8'));
|
|
@@ -49,7 +55,7 @@ const toSuspiciousAppInfo = base64Value => {
|
|
|
49
55
|
export const setThreatListeners = async config => {
|
|
50
56
|
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
51
57
|
await prepareMapping();
|
|
52
|
-
eventsListener = eventEmitter.addListener(channel, event => {
|
|
58
|
+
eventsListener = eventEmitter.addListener(channel, async event => {
|
|
53
59
|
var _config$privilegedAcc, _config$debug, _config$simulator, _config$appIntegrity, _config$unofficialSto, _config$hooks, _config$deviceBinding, _config$passcode, _config$secureHardwar, _config$obfuscationIs, _config$deviceID, _config$devMode, _config$systemVPN, _config$malware, _config$adbEnabled;
|
|
54
60
|
if (event[key] === undefined) {
|
|
55
61
|
onInvalidCallback();
|
|
@@ -95,7 +101,7 @@ export const setThreatListeners = async config => {
|
|
|
95
101
|
(_config$systemVPN = config.systemVPN) === null || _config$systemVPN === void 0 || _config$systemVPN.call(config);
|
|
96
102
|
break;
|
|
97
103
|
case Threat.Malware.value:
|
|
98
|
-
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, parseMalwareData(event[malwareKey]));
|
|
104
|
+
(_config$malware = config.malware) === null || _config$malware === void 0 || _config$malware.call(config, await parseMalwareData(event[malwareKey]));
|
|
99
105
|
break;
|
|
100
106
|
case Threat.ADBEnabled.value:
|
|
101
107
|
(_config$adbEnabled = config.adbEnabled) === null || _config$adbEnabled === void 0 || _config$adbEnabled.call(config);
|
|
@@ -138,6 +144,12 @@ export const addToWhitelist = async packageName => {
|
|
|
138
144
|
}
|
|
139
145
|
return FreeraspReactNative.addToWhitelist(packageName);
|
|
140
146
|
};
|
|
147
|
+
export const getAppIcon = packageName => {
|
|
148
|
+
if (Platform.OS === 'ios') {
|
|
149
|
+
return Promise.reject('App icon retrieval for Malware detection not available on iOS');
|
|
150
|
+
}
|
|
151
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
152
|
+
};
|
|
141
153
|
export * from './types';
|
|
142
154
|
export default FreeraspReactNative;
|
|
143
155
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","NativeEventEmitter","NativeModules","Platform","getThreatCount","itemsHaveType","Buffer","Threat","FreeraspReactNative","eventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatChannelData","dataLength","OS","data","prepareMapping","newValues","threats","getValues","map","threat","index","value","parseMalwareData","entry","toSuspiciousAppInfo","base64Value","JSON","parse","from","toString","packageInfo","reason","setThreatListeners","config","channel","key","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","undefined","PrivilegedAccess","privilegedAccess","call","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","ADBEnabled","adbEnabled","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","response","console","log","e","
|
|
1
|
+
{"version":3,"names":["useEffect","NativeEventEmitter","NativeModules","Platform","getThreatCount","itemsHaveType","Buffer","Threat","FreeraspReactNative","eventEmitter","eventsListener","onInvalidCallback","getThreatIdentifiers","identifiers","length","getThreatChannelData","dataLength","OS","data","prepareMapping","newValues","threats","getValues","map","threat","index","value","parseMalwareData","Promise","resolve","reject","entry","toSuspiciousAppInfo","error","base64Value","JSON","parse","from","toString","packageInfo","reason","setThreatListeners","config","channel","key","malwareKey","addListener","event","_config$privilegedAcc","_config$debug","_config$simulator","_config$appIntegrity","_config$unofficialSto","_config$hooks","_config$deviceBinding","_config$passcode","_config$secureHardwar","_config$obfuscationIs","_config$deviceID","_config$devMode","_config$systemVPN","_config$malware","_config$adbEnabled","undefined","PrivilegedAccess","privilegedAccess","call","Debug","debug","Simulator","simulator","AppIntegrity","appIntegrity","UnofficialStore","unofficialStore","Hooks","hooks","DeviceBinding","deviceBinding","Passcode","passcode","SecureHardwareNotAvailable","secureHardwareNotAvailable","ObfuscationIssues","obfuscationIssues","DeviceID","deviceID","DevMode","devMode","SystemVPN","systemVPN","Malware","malware","ADBEnabled","adbEnabled","removeThreatListeners","remove","talsecStart","options","useFreeRasp","actions","response","console","log","e","code","message","addToWhitelist","packageName","getAppIcon"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SACEC,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,QAEH,cAAc;AAOrB,SAASC,cAAc,EAAEC,aAAa,QAAQ,SAAS;AACvD,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,MAAM,QAAQ,UAAU;AAEjC,MAAM;EAAEC;AAAoB,CAAC,GAAGN,aAAa;AAE7C,MAAMO,YAAY,GAAG,IAAIR,kBAAkB,CAACO,mBAAmB,CAAC;AAChE,IAAIE,cAAmC;AAEvC,MAAMC,iBAAiB,GAAGA,CAAA,KAAY;EACpCH,mBAAmB,CAACG,iBAAiB,CAAC,CAAC;AACzC,CAAC;AAED,MAAMC,oBAAoB,GAAG,MAAAA,CAAA,KAA+B;EAC1D,IAAIC,WAAW,GAAG,MAAML,mBAAmB,CAACI,oBAAoB,CAAC,CAAC;EAClE,IACEC,WAAW,CAACC,MAAM,KAAKV,cAAc,CAAC,CAAC,IACvC,CAACC,aAAa,CAACQ,WAAW,EAAE,QAAQ,CAAC,EACrC;IACAF,iBAAiB,CAAC,CAAC;EACrB;EACA,OAAOE,WAAW;AACpB,CAAC;AAED,MAAME,oBAAoB,GAAG,MAAAA,CAAA,KAA+C;EAC1E,MAAMC,UAAU,GAAGb,QAAQ,CAACc,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;EAChD,IAAIC,IAAI,GAAG,MAAMV,mBAAmB,CAACO,oBAAoB,CAAC,CAAC;EAC3D,IAAIG,IAAI,CAACJ,MAAM,KAAKE,UAAU,IAAI,CAACX,aAAa,CAACa,IAAI,EAAE,QAAQ,CAAC,EAAE;IAChEP,iBAAiB,CAAC,CAAC;EACrB;EACA,OAAOO,IAAI;AACb,CAAC;AAED,MAAMC,cAAc,GAAG,MAAAA,CAAA,KAA2B;EAChD,MAAMC,SAAS,GAAG,MAAMR,oBAAoB,CAAC,CAAC;EAC9C,MAAMS,OAAO,GAAGd,MAAM,CAACe,SAAS,CAAC,CAAC;EAElCD,OAAO,CAACE,GAAG,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;IAC7BD,MAAM,CAACE,KAAK,GAAGN,SAAS,CAACK,KAAK,CAAE;EAClC,CAAC,CAAC;AACJ,CAAC;;AAED;AACA,MAAME,gBAAgB,GAAG,MACvBT,IAAc,IACmB;EACjC,OAAO,IAAIU,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtC,IAAI;MACFD,OAAO,CAACX,IAAI,CAACK,GAAG,CAAEQ,KAAK,IAAKC,mBAAmB,CAACD,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,OAAOE,KAAU,EAAE;MACnBH,MAAM,CAAE,iCAAgCG,KAAM,EAAC,CAAC;IAClD;EACF,CAAC,CAAC;AACJ,CAAC;AAED,MAAMD,mBAAmB,GAAIE,WAAmB,IAAwB;EACtE,MAAMhB,IAAI,GAAGiB,IAAI,CAACC,KAAK,CAAC9B,MAAM,CAAC+B,IAAI,CAACH,WAAW,EAAE,QAAQ,CAAC,CAACI,QAAQ,CAAC,MAAM,CAAC,CAAC;EAC5E,MAAMC,WAAW,GAAGrB,IAAI,CAACqB,WAA0B;EACnD,OAAO;IAAEA,WAAW;IAAEC,MAAM,EAAEtB,IAAI,CAACsB;EAAO,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAAG,MAChCC,MAAyE,IACtE;EACH,MAAM,CAACC,OAAO,EAAEC,GAAG,EAAEC,UAAU,CAAC,GAAG,MAAM9B,oBAAoB,CAAC,CAAC;EAC/D,MAAMI,cAAc,CAAC,CAAC;EAEtBT,cAAc,GAAGD,YAAY,CAACqC,WAAW,CAACH,OAAO,EAAE,MAAOI,KAAK,IAAK;IAAA,IAAAC,qBAAA,EAAAC,aAAA,EAAAC,iBAAA,EAAAC,oBAAA,EAAAC,qBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,eAAA,EAAAC,iBAAA,EAAAC,eAAA,EAAAC,kBAAA;IAClE,IAAIf,KAAK,CAACH,GAAG,CAAC,KAAKmB,SAAS,EAAE;MAC5BpD,iBAAiB,CAAC,CAAC;IACrB;IACA,QAAQoC,KAAK,CAACH,GAAG,CAAC;MAChB,KAAKrC,MAAM,CAACyD,gBAAgB,CAACtC,KAAK;QAChC,CAAAsB,qBAAA,GAAAN,MAAM,CAACuB,gBAAgB,cAAAjB,qBAAA,eAAvBA,qBAAA,CAAAkB,IAAA,CAAAxB,MAA0B,CAAC;QAC3B;MACF,KAAKnC,MAAM,CAAC4D,KAAK,CAACzC,KAAK;QACrB,CAAAuB,aAAA,GAAAP,MAAM,CAAC0B,KAAK,cAAAnB,aAAA,eAAZA,aAAA,CAAAiB,IAAA,CAAAxB,MAAe,CAAC;QAChB;MACF,KAAKnC,MAAM,CAAC8D,SAAS,CAAC3C,KAAK;QACzB,CAAAwB,iBAAA,GAAAR,MAAM,CAAC4B,SAAS,cAAApB,iBAAA,eAAhBA,iBAAA,CAAAgB,IAAA,CAAAxB,MAAmB,CAAC;QACpB;MACF,KAAKnC,MAAM,CAACgE,YAAY,CAAC7C,KAAK;QAC5B,CAAAyB,oBAAA,GAAAT,MAAM,CAAC8B,YAAY,cAAArB,oBAAA,eAAnBA,oBAAA,CAAAe,IAAA,CAAAxB,MAAsB,CAAC;QACvB;MACF,KAAKnC,MAAM,CAACkE,eAAe,CAAC/C,KAAK;QAC/B,CAAA0B,qBAAA,GAAAV,MAAM,CAACgC,eAAe,cAAAtB,qBAAA,eAAtBA,qBAAA,CAAAc,IAAA,CAAAxB,MAAyB,CAAC;QAC1B;MACF,KAAKnC,MAAM,CAACoE,KAAK,CAACjD,KAAK;QACrB,CAAA2B,aAAA,GAAAX,MAAM,CAACkC,KAAK,cAAAvB,aAAA,eAAZA,aAAA,CAAAa,IAAA,CAAAxB,MAAe,CAAC;QAChB;MACF,KAAKnC,MAAM,CAACsE,aAAa,CAACnD,KAAK;QAC7B,CAAA4B,qBAAA,GAAAZ,MAAM,CAACoC,aAAa,cAAAxB,qBAAA,eAApBA,qBAAA,CAAAY,IAAA,CAAAxB,MAAuB,CAAC;QACxB;MACF,KAAKnC,MAAM,CAACwE,QAAQ,CAACrD,KAAK;QACxB,CAAA6B,gBAAA,GAAAb,MAAM,CAACsC,QAAQ,cAAAzB,gBAAA,eAAfA,gBAAA,CAAAW,IAAA,CAAAxB,MAAkB,CAAC;QACnB;MACF,KAAKnC,MAAM,CAAC0E,0BAA0B,CAACvD,KAAK;QAC1C,CAAA8B,qBAAA,GAAAd,MAAM,CAACwC,0BAA0B,cAAA1B,qBAAA,eAAjCA,qBAAA,CAAAU,IAAA,CAAAxB,MAAoC,CAAC;QACrC;MACF,KAAKnC,MAAM,CAAC4E,iBAAiB,CAACzD,KAAK;QACjC,CAAA+B,qBAAA,GAAAf,MAAM,CAAC0C,iBAAiB,cAAA3B,qBAAA,eAAxBA,qBAAA,CAAAS,IAAA,CAAAxB,MAA2B,CAAC;QAC5B;MACF,KAAKnC,MAAM,CAAC8E,QAAQ,CAAC3D,KAAK;QACxB,CAAAgC,gBAAA,GAAAhB,MAAM,CAAC4C,QAAQ,cAAA5B,gBAAA,eAAfA,gBAAA,CAAAQ,IAAA,CAAAxB,MAAkB,CAAC;QACnB;MACF,KAAKnC,MAAM,CAACgF,OAAO,CAAC7D,KAAK;QACvB,CAAAiC,eAAA,GAAAjB,MAAM,CAAC8C,OAAO,cAAA7B,eAAA,eAAdA,eAAA,CAAAO,IAAA,CAAAxB,MAAiB,CAAC;QAClB;MACF,KAAKnC,MAAM,CAACkF,SAAS,CAAC/D,KAAK;QACzB,CAAAkC,iBAAA,GAAAlB,MAAM,CAACgD,SAAS,cAAA9B,iBAAA,eAAhBA,iBAAA,CAAAM,IAAA,CAAAxB,MAAmB,CAAC;QACpB;MACF,KAAKnC,MAAM,CAACoF,OAAO,CAACjE,KAAK;QACvB,CAAAmC,eAAA,GAAAnB,MAAM,CAACkD,OAAO,cAAA/B,eAAA,eAAdA,eAAA,CAAAK,IAAA,CAAAxB,MAAM,EAAW,MAAMf,gBAAgB,CAACoB,KAAK,CAACF,UAAU,CAAC,CAAC,CAAC;QAC3D;MACF,KAAKtC,MAAM,CAACsF,UAAU,CAACnE,KAAK;QAC1B,CAAAoC,kBAAA,GAAApB,MAAM,CAACoD,UAAU,cAAAhC,kBAAA,eAAjBA,kBAAA,CAAAI,IAAA,CAAAxB,MAAoB,CAAC;QACrB;MACF;QACE/B,iBAAiB,CAAC,CAAC;QACnB;IACJ;EACF,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMoF,qBAAqB,GAAGA,CAAA,KAAY;EAC/CrF,cAAc,CAACsF,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,OAAO,MAAMC,WAAW,GAAG,MAAOC,OAAqB,IAAsB;EAC3E,OAAO1F,mBAAmB,CAACyF,WAAW,CAACC,OAAO,CAAC;AACjD,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGA,CACzBzD,MAAoB,EACpB0D,OAA0E,KACvE;EACHpG,SAAS,CAAC,MAAM;IACd,CAAC,YAAY;MACX,MAAMyC,kBAAkB,CAAC2D,OAAO,CAAC;MACjC,IAAI;QACF,IAAIC,QAAQ,GAAG,MAAMJ,WAAW,CAACvD,MAAM,CAAC;QACxC,IAAI2D,QAAQ,KAAK,kBAAkB,EAAE;UACnC1F,iBAAiB,CAAC,CAAC;QACrB;QACA2F,OAAO,CAACC,GAAG,CAACF,QAAQ,CAAC;MACvB,CAAC,CAAC,OAAOG,CAAM,EAAE;QACfF,OAAO,CAACrE,KAAK,CAAE,GAAEuE,CAAC,CAACC,IAAK,KAAID,CAAC,CAACE,OAAQ,EAAC,CAAC;MAC1C;MAEA,OAAO,MAAM;QACXX,qBAAqB,CAAC,CAAC;MACzB,CAAC;IACH,CAAC,EAAE,CAAC;IACJ;EACF,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAED,OAAO,MAAMY,cAAc,GAAG,MAAOC,WAAmB,IAAuB;EAC7E,IAAIzG,QAAQ,CAACc,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOW,OAAO,CAACE,MAAM,CAAC,wCAAwC,CAAC;EACjE;EACA,OAAOtB,mBAAmB,CAACmG,cAAc,CAACC,WAAW,CAAC;AACxD,CAAC;AAED,OAAO,MAAMC,UAAU,GAAID,WAAmB,IAAsB;EAClE,IAAIzG,QAAQ,CAACc,EAAE,KAAK,KAAK,EAAE;IACzB,OAAOW,OAAO,CAACE,MAAM,CACnB,+DACF,CAAC;EACH;EACA,OAAOtB,mBAAmB,CAACqG,UAAU,CAACD,WAAW,CAAC;AACpD,CAAC;AAED,cAAc,SAAS;AACvB,eAAepG,mBAAmB","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ export declare const removeThreatListeners: () => void;
|
|
|
5
5
|
export declare const talsecStart: (options: TalsecConfig) => Promise<string>;
|
|
6
6
|
export declare const useFreeRasp: <T extends NativeEventEmitterActions>(config: TalsecConfig, actions: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>) => void;
|
|
7
7
|
export declare const addToWhitelist: (packageName: string) => Promise<boolean>;
|
|
8
|
+
export declare const getAppIcon: (packageName: string) => Promise<string>;
|
|
8
9
|
export * from './types';
|
|
9
10
|
export default FreeraspReactNative;
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,yBAAyB,EAGzB,YAAY,EACb,MAAM,SAAS,CAAC;AAKjB,QAAA,MAAQ,mBAAmB,KAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,yBAAyB,EAGzB,YAAY,EACb,MAAM,SAAS,CAAC;AAKjB,QAAA,MAAQ,mBAAmB,KAAkB,CAAC;AAyD9C,eAAO,MAAM,kBAAkB,gDACrB,CAAC,GAAG,OAAO,QAAQ,MAAM,CAAC,EAAE,MAAM,yBAAyB,CAAC,EAAE,EAAE,CAAC,kBA4D1E,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,IAExC,CAAC;AAEF,eAAO,MAAM,WAAW,YAAmB,YAAY,KAAG,QAAQ,MAAM,CAEvE,CAAC;AAEF,eAAO,MAAM,WAAW,gDACd,YAAY,WACX,CAAC,GAAG,OAAO,QAAQ,MAAM,CAAC,EAAE,MAAM,yBAAyB,CAAC,EAAE,EAAE,CAAC,SAqB3E,CAAC;AAEF,eAAO,MAAM,cAAc,gBAAuB,MAAM,KAAG,QAAQ,OAAO,CAKzE,CAAC;AAEF,eAAO,MAAM,UAAU,gBAAiB,MAAM,KAAG,QAAQ,MAAM,CAO9D,CAAC;AAEF,cAAc,SAAS,CAAC;AACxB,eAAe,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freerasp-react-native",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.13.0",
|
|
4
4
|
"description": "React Native plugin for improving app security and threat monitoring on Android and iOS mobile devices.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/index.tsx
CHANGED
|
@@ -54,8 +54,16 @@ const prepareMapping = async (): Promise<void> => {
|
|
|
54
54
|
};
|
|
55
55
|
|
|
56
56
|
// parses base64-encoded malware data to SuspiciousAppInfo[]
|
|
57
|
-
const parseMalwareData = (
|
|
58
|
-
|
|
57
|
+
const parseMalwareData = async (
|
|
58
|
+
data: string[]
|
|
59
|
+
): Promise<SuspiciousAppInfo[]> => {
|
|
60
|
+
return new Promise((resolve, reject) => {
|
|
61
|
+
try {
|
|
62
|
+
resolve(data.map((entry) => toSuspiciousAppInfo(entry)));
|
|
63
|
+
} catch (error: any) {
|
|
64
|
+
reject(`Error while parsing app data: ${error}`);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
59
67
|
};
|
|
60
68
|
|
|
61
69
|
const toSuspiciousAppInfo = (base64Value: string): SuspiciousAppInfo => {
|
|
@@ -70,7 +78,7 @@ export const setThreatListeners = async <T extends NativeEventEmitterActions>(
|
|
|
70
78
|
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
71
79
|
await prepareMapping();
|
|
72
80
|
|
|
73
|
-
eventsListener = eventEmitter.addListener(channel, (event) => {
|
|
81
|
+
eventsListener = eventEmitter.addListener(channel, async (event) => {
|
|
74
82
|
if (event[key] === undefined) {
|
|
75
83
|
onInvalidCallback();
|
|
76
84
|
}
|
|
@@ -115,7 +123,7 @@ export const setThreatListeners = async <T extends NativeEventEmitterActions>(
|
|
|
115
123
|
config.systemVPN?.();
|
|
116
124
|
break;
|
|
117
125
|
case Threat.Malware.value:
|
|
118
|
-
config.malware?.(parseMalwareData(event[malwareKey]));
|
|
126
|
+
config.malware?.(await parseMalwareData(event[malwareKey]));
|
|
119
127
|
break;
|
|
120
128
|
case Threat.ADBEnabled.value:
|
|
121
129
|
config.adbEnabled?.();
|
|
@@ -167,5 +175,14 @@ export const addToWhitelist = async (packageName: string): Promise<boolean> => {
|
|
|
167
175
|
return FreeraspReactNative.addToWhitelist(packageName);
|
|
168
176
|
};
|
|
169
177
|
|
|
178
|
+
export const getAppIcon = (packageName: string): Promise<string> => {
|
|
179
|
+
if (Platform.OS === 'ios') {
|
|
180
|
+
return Promise.reject(
|
|
181
|
+
'App icon retrieval for Malware detection not available on iOS'
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
185
|
+
};
|
|
186
|
+
|
|
170
187
|
export * from './types';
|
|
171
188
|
export default FreeraspReactNative;
|