freerasp-react-native 4.2.4 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/6.13.0/dSYMs/iphoneos/TalsecRuntime.framework.dSYM/Contents/Info.plist +20 -0
- package/6.13.0/dSYMs/iphoneos/TalsecRuntime.framework.dSYM/Contents/Resources/DWARF/TalsecRuntime +0 -0
- package/6.13.0/dSYMs/iphoneos/TalsecRuntime.framework.dSYM/Contents/Resources/Relocations/aarch64/TalsecRuntime.yml +4153 -0
- package/6.13.0/dSYMs/iphonesimulator/TalsecRuntime.framework.dSYM/Contents/Info.plist +20 -0
- package/6.13.0/dSYMs/iphonesimulator/TalsecRuntime.framework.dSYM/Contents/Resources/DWARF/TalsecRuntime +0 -0
- package/6.13.0/dSYMs/iphonesimulator/TalsecRuntime.framework.dSYM/Contents/Resources/Relocations/aarch64/TalsecRuntime.yml +4036 -0
- package/6.13.0/dSYMs/iphonesimulator/TalsecRuntime.framework.dSYM/Contents/Resources/Relocations/x86_64/TalsecRuntime.yml +3951 -0
- package/CHANGELOG.md +58 -4
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt +45 -22
- package/android/src/main/java/com/freeraspreactnative/FreeraspThreatHandler.kt +39 -19
- package/android/src/main/java/com/freeraspreactnative/events/BaseRaspEvent.kt +7 -0
- package/android/src/main/java/com/freeraspreactnative/events/RaspExecutionStateEvent.kt +20 -0
- package/android/src/main/java/com/freeraspreactnative/events/ThreatEvent.kt +67 -0
- package/android/src/main/java/com/freeraspreactnative/models/RNSuspiciousAppInfo.kt +1 -0
- package/android/src/main/java/com/freeraspreactnative/utils/Extensions.kt +1 -0
- package/android/src/main/java/com/freeraspreactnative/utils/RandomGenerator.kt +18 -0
- package/android/src/main/java/com/freeraspreactnative/utils/Utils.kt +2 -5
- package/example/android/app/release/app-release.apk +0 -0
- package/example/android/app/release/baselineProfiles/0/app-release.dm +0 -0
- package/example/android/app/release/baselineProfiles/1/app-release.dm +0 -0
- package/example/android/app/release/output-metadata.json +37 -0
- package/example/android/app/src/main/AndroidManifest.xml +7 -0
- package/example/src/App.tsx +77 -3
- package/example/src/DemoApp.tsx +46 -1
- package/example/src/MalwareItem.tsx +4 -0
- package/example/src/checks.ts +3 -0
- package/example/src/styles.ts +2 -0
- package/freerasp-react-native.podspec +1 -1
- package/ios/FreeraspReactNative.m +4 -0
- package/ios/FreeraspReactNative.swift +37 -75
- package/ios/TalsecRuntime.xcframework/Info.plist +5 -5
- package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeDirectory +0 -0
- package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
- package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeResources +144 -114
- package/ios/TalsecRuntime.xcframework/_CodeSignature/CodeSignature +0 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +1 -1
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curl.h +380 -281
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/curlver.h +5 -6
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/easy.h +4 -4
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/header.h +1 -1
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/mprintf.h +11 -4
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/multi.h +62 -22
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/options.h +2 -2
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/system.h +76 -164
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/urlapi.h +5 -4
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/websockets.h +17 -3
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +181 -146
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.private.swiftinterface +3 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.swiftinterface +3 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +2 -2
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curl.h +380 -281
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/curlver.h +5 -6
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/easy.h +4 -4
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/header.h +1 -1
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/mprintf.h +11 -4
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/multi.h +62 -22
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/options.h +2 -2
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/system.h +76 -164
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/typecheck-gcc.h +947 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/urlapi.h +5 -4
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/websockets.h +17 -3
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +181 -146
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +3 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.swiftinterface +3 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +181 -146
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +3 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +3 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
- package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +52 -41
- package/ios/models/RaspExecutionStates.swift +15 -0
- package/ios/models/SecurityThreat.swift +40 -0
- package/ios/utils/EventIdentifiers.swift +13 -0
- package/ios/utils/RandomGenerator.swift +12 -0
- package/ios/utils/Utils.swift +34 -0
- package/lib/commonjs/api/listeners/raspExecutionState.js +40 -0
- package/lib/commonjs/api/listeners/raspExecutionState.js.map +1 -0
- package/lib/commonjs/api/listeners/threat.js +102 -0
- package/lib/commonjs/api/listeners/threat.js.map +1 -0
- package/lib/commonjs/api/methods/native.js +43 -0
- package/lib/commonjs/api/methods/native.js.map +1 -0
- package/lib/commonjs/api/methods/reactNative.js +35 -0
- package/lib/commonjs/api/methods/reactNative.js.map +1 -0
- package/lib/commonjs/api/nativeModules.js +12 -0
- package/lib/commonjs/api/nativeModules.js.map +1 -0
- package/lib/commonjs/channels/raspExecutionState.js +36 -0
- package/lib/commonjs/channels/raspExecutionState.js.map +1 -0
- package/lib/commonjs/channels/threat.js +37 -0
- package/lib/commonjs/channels/threat.js.map +1 -0
- package/lib/commonjs/index.js +39 -188
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/internal.js +6 -0
- package/lib/commonjs/internal.js.map +1 -0
- package/lib/commonjs/models/raspExecutionState.js +17 -0
- package/lib/commonjs/models/raspExecutionState.js.map +1 -0
- package/lib/commonjs/{threat.js → models/threat.js} +4 -1
- package/lib/commonjs/models/threat.js.map +1 -0
- package/lib/commonjs/types/types.js.map +1 -0
- package/lib/commonjs/utils/malware.js +28 -0
- package/lib/commonjs/utils/malware.js.map +1 -0
- package/lib/commonjs/utils/utils.js +21 -0
- package/lib/commonjs/utils/utils.js.map +1 -0
- package/lib/module/api/listeners/raspExecutionState.js +32 -0
- package/lib/module/api/listeners/raspExecutionState.js.map +1 -0
- package/lib/module/api/listeners/threat.js +94 -0
- package/lib/module/api/listeners/threat.js.map +1 -0
- package/lib/module/api/methods/native.js +30 -0
- package/lib/module/api/methods/native.js.map +1 -0
- package/lib/module/api/methods/reactNative.js +28 -0
- package/lib/module/api/methods/reactNative.js.map +1 -0
- package/lib/module/api/nativeModules.js +5 -0
- package/lib/module/api/nativeModules.js.map +1 -0
- package/lib/module/channels/raspExecutionState.js +27 -0
- package/lib/module/channels/raspExecutionState.js.map +1 -0
- package/lib/module/channels/threat.js +28 -0
- package/lib/module/channels/threat.js.map +1 -0
- package/lib/module/index.js +5 -172
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal.js +3 -0
- package/lib/module/internal.js.map +1 -0
- package/lib/module/models/raspExecutionState.js +10 -0
- package/lib/module/models/raspExecutionState.js.map +1 -0
- package/lib/module/{threat.js → models/threat.js} +4 -1
- package/lib/module/models/threat.js.map +1 -0
- package/lib/module/types/types.js.map +1 -0
- package/lib/module/utils/malware.js +20 -0
- package/lib/module/utils/malware.js.map +1 -0
- package/lib/module/utils/utils.js +12 -0
- package/lib/module/utils/utils.js.map +1 -0
- package/lib/typescript/src/api/listeners/raspExecutionState.d.ts +4 -0
- package/lib/typescript/src/api/listeners/raspExecutionState.d.ts.map +1 -0
- package/lib/typescript/src/api/listeners/threat.d.ts +4 -0
- package/lib/typescript/src/api/listeners/threat.d.ts.map +1 -0
- package/lib/typescript/src/api/methods/native.d.ts +9 -0
- package/lib/typescript/src/api/methods/native.d.ts.map +1 -0
- package/lib/typescript/src/api/methods/reactNative.d.ts +3 -0
- package/lib/typescript/src/api/methods/reactNative.d.ts.map +1 -0
- package/lib/typescript/src/api/nativeModules.d.ts +2 -0
- package/lib/typescript/src/api/nativeModules.d.ts.map +1 -0
- package/lib/typescript/src/channels/raspExecutionState.d.ts +7 -0
- package/lib/typescript/src/channels/raspExecutionState.d.ts.map +1 -0
- package/lib/typescript/src/channels/threat.d.ts +8 -0
- package/lib/typescript/src/channels/threat.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +5 -13
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/internal.d.ts +2 -0
- package/lib/typescript/src/internal.d.ts.map +1 -0
- package/lib/typescript/src/models/raspExecutionState.d.ts +7 -0
- package/lib/typescript/src/models/raspExecutionState.d.ts.map +1 -0
- package/lib/typescript/src/{threat.d.ts → models/threat.d.ts} +3 -0
- package/lib/typescript/src/models/threat.d.ts.map +1 -0
- package/lib/typescript/src/{types.d.ts → types/types.d.ts} +12 -1
- package/lib/typescript/src/types/types.d.ts.map +1 -0
- package/lib/typescript/src/utils/malware.d.ts +4 -0
- package/lib/typescript/src/utils/malware.d.ts.map +1 -0
- package/lib/typescript/src/{utils.d.ts → utils/utils.d.ts} +1 -0
- package/lib/typescript/src/utils/utils.d.ts.map +1 -0
- package/package.json +1 -1
- package/plugin/build/index.d.ts +0 -1
- package/src/api/listeners/raspExecutionState.ts +42 -0
- package/src/api/listeners/threat.ts +101 -0
- package/src/api/methods/native.ts +39 -0
- package/src/api/methods/reactNative.ts +42 -0
- package/src/api/nativeModules.ts +3 -0
- package/src/channels/raspExecutionState.ts +35 -0
- package/src/channels/threat.ts +35 -0
- package/src/index.tsx +5 -209
- package/src/internal.ts +2 -0
- package/src/models/raspExecutionState.ts +13 -0
- package/src/{threat.ts → models/threat.ts} +6 -0
- package/src/{types.ts → types/types.ts} +12 -1
- package/src/utils/malware.ts +24 -0
- package/src/utils/utils.ts +14 -0
- package/android/src/main/java/com/freeraspreactnative/Threat.kt +0 -57
- package/lib/commonjs/threat.js.map +0 -1
- package/lib/commonjs/types.js.map +0 -1
- package/lib/commonjs/utils.js +0 -16
- package/lib/commonjs/utils.js.map +0 -1
- package/lib/module/threat.js.map +0 -1
- package/lib/module/types.js.map +0 -1
- package/lib/module/utils.js +0 -8
- package/lib/module/utils.js.map +0 -1
- package/lib/typescript/src/threat.d.ts.map +0 -1
- package/lib/typescript/src/types.d.ts.map +0 -1
- package/lib/typescript/src/utils.d.ts.map +0 -1
- package/src/utils.ts +0 -9
- /package/lib/commonjs/{types.js → types/types.js} +0 -0
- /package/lib/module/{types.js → types/types.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raspExecutionState.d.ts","sourceRoot":"","sources":["../../../../src/channels/raspExecutionState.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gCAAgC,QAAa,QAAQ,MAAM,EAAE,CAUzE,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAAa,QACxD;IAAC,MAAM;IAAE,MAAM;CAAC,CAQjB,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAAa,QAAQ,IAAI,CAMrE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const getThreatIdentifiers: () => Promise<number[]>;
|
|
2
|
+
export declare const getThreatChannelData: () => Promise<[
|
|
3
|
+
string,
|
|
4
|
+
string,
|
|
5
|
+
string
|
|
6
|
+
]>;
|
|
7
|
+
export declare const prepareThreatMapping: () => Promise<void>;
|
|
8
|
+
//# sourceMappingURL=threat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat.d.ts","sourceRoot":"","sources":["../../../../src/channels/threat.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,QAAa,QAAQ,MAAM,EAAE,CAS7D,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAa,QAC5C;IAAC,MAAM;IAAE,MAAM;IAAE,MAAM;CAAC,CAQzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAa,QAAQ,IAAI,CAMzD,CAAC"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export declare const useFreeRasp: <T extends NativeEventEmitterActions>(config: TalsecConfig, actions: T & Record<Exclude<keyof T, keyof NativeEventEmitterActions>, []>) => void;
|
|
7
|
-
export declare const addToWhitelist: (packageName: string) => Promise<boolean>;
|
|
8
|
-
export declare const getAppIcon: (packageName: string) => Promise<string>;
|
|
9
|
-
export declare const blockScreenCapture: (enable: boolean) => Promise<string>;
|
|
10
|
-
export declare const isScreenCaptureBlocked: () => Promise<boolean>;
|
|
11
|
-
export declare const storeExternalId: (data: string) => Promise<string>;
|
|
12
|
-
export * from './types';
|
|
13
|
-
export default FreeraspReactNative;
|
|
1
|
+
export * from './types/types';
|
|
2
|
+
export * from './api/methods/native';
|
|
3
|
+
export * from './api/methods/reactNative';
|
|
4
|
+
export * from './api/listeners/threat';
|
|
5
|
+
export * from './api/listeners/raspExecutionState';
|
|
14
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/internal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raspExecutionState.d.ts","sourceRoot":"","sources":["../../../../src/models/raspExecutionState.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,iBAAiB,qBAA6B;gBAEzC,KAAK,EAAE,MAAM;IAIzB,MAAM,CAAC,SAAS,IAAI,kBAAkB,EAAE;CAGzC"}
|
|
@@ -18,6 +18,9 @@ export declare class Threat {
|
|
|
18
18
|
static Screenshot: Threat;
|
|
19
19
|
static ScreenRecording: Threat;
|
|
20
20
|
static MultiInstance: Threat;
|
|
21
|
+
static TimeSpoofing: Threat;
|
|
22
|
+
static LocationSpoofing: Threat;
|
|
23
|
+
static UnsecureWifi: Threat;
|
|
21
24
|
constructor(value: number);
|
|
22
25
|
static getValues(): Threat[];
|
|
23
26
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threat.d.ts","sourceRoot":"","sources":["../../../../src/models/threat.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,YAAY,SAAiB;IACpC,MAAM,CAAC,gBAAgB,SAAiB;IACxC,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,KAAK,SAAiB;IAC7B,MAAM,CAAC,QAAQ,SAAiB;IAChC,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,0BAA0B,SAAiB;IAClD,MAAM,CAAC,SAAS,SAAiB;IACjC,MAAM,CAAC,aAAa,SAAiB;IACrC,MAAM,CAAC,QAAQ,SAAiB;IAChC,MAAM,CAAC,eAAe,SAAiB;IACvC,MAAM,CAAC,iBAAiB,SAAiB;IACzC,MAAM,CAAC,OAAO,SAAiB;IAC/B,MAAM,CAAC,OAAO,SAAiB;IAC/B,MAAM,CAAC,UAAU,SAAiB;IAClC,MAAM,CAAC,UAAU,SAAiB;IAClC,MAAM,CAAC,eAAe,SAAiB;IACvC,MAAM,CAAC,aAAa,SAAiB;IACrC,MAAM,CAAC,YAAY,SAAiB;IACpC,MAAM,CAAC,gBAAgB,SAAiB;IACxC,MAAM,CAAC,YAAY,SAAiB;gBAExB,KAAK,EAAE,MAAM;IAIzB,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE;CAwC7B"}
|
|
@@ -3,6 +3,7 @@ export type TalsecConfig = {
|
|
|
3
3
|
iosConfig?: TalsecIosConfig;
|
|
4
4
|
watcherMail: string;
|
|
5
5
|
isProd?: boolean;
|
|
6
|
+
killOnBypass?: boolean;
|
|
6
7
|
};
|
|
7
8
|
export type TalsecAndroidConfig = {
|
|
8
9
|
packageName: string;
|
|
@@ -23,6 +24,7 @@ export type TalsecMalwareConfig = {
|
|
|
23
24
|
export type SuspiciousAppInfo = {
|
|
24
25
|
packageInfo: PackageInfo;
|
|
25
26
|
reason: string;
|
|
27
|
+
permissions?: string[];
|
|
26
28
|
};
|
|
27
29
|
export type PackageInfo = {
|
|
28
30
|
packageName: string;
|
|
@@ -31,7 +33,7 @@ export type PackageInfo = {
|
|
|
31
33
|
appIcon?: string;
|
|
32
34
|
installerStore?: string;
|
|
33
35
|
};
|
|
34
|
-
export type
|
|
36
|
+
export type ThreatEventActions = {
|
|
35
37
|
privilegedAccess?: () => any;
|
|
36
38
|
debug?: () => any;
|
|
37
39
|
simulator?: () => any;
|
|
@@ -50,5 +52,14 @@ export type NativeEventEmitterActions = {
|
|
|
50
52
|
screenshot?: () => any;
|
|
51
53
|
screenRecording?: () => any;
|
|
52
54
|
multiInstance?: () => any;
|
|
55
|
+
timeSpoofing?: () => any;
|
|
56
|
+
locationSpoofing?: () => any;
|
|
57
|
+
unsecureWifi?: () => any;
|
|
58
|
+
};
|
|
59
|
+
export type NativeEvent = {
|
|
60
|
+
[key: string]: number | string[] | undefined;
|
|
61
|
+
};
|
|
62
|
+
export type RaspExecutionStateEventActions = {
|
|
63
|
+
allChecksFinished?: () => any;
|
|
53
64
|
};
|
|
54
65
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACnC,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,GAAG,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,KAAK,GAAG,CAAC;IACvD,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,8BAA8B,GAAG;IAC3C,iBAAiB,CAAC,EAAE,MAAM,GAAG,CAAC;CAC/B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SuspiciousAppInfo } from '../types/types';
|
|
2
|
+
export declare const parseMalwareData: (data: string[]) => Promise<SuspiciousAppInfo[]>;
|
|
3
|
+
export declare const toSuspiciousAppInfo: (base64Value: string) => SuspiciousAppInfo;
|
|
4
|
+
//# sourceMappingURL=malware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malware.d.ts","sourceRoot":"","sources":["../../../../src/utils/malware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,eAAO,MAAM,gBAAgB,SACrB,MAAM,EAAE,KACb,QAAQ,iBAAiB,EAAE,CAQ7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,KAAG,iBAQzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,QAAO,MAEjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,MAE7C,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,GAAG,EAAE,eAAe,MAAM,YAE7D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freerasp-react-native",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.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/plugin/build/index.d.ts
CHANGED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { NativeEventEmitter, type EmitterSubscription } from 'react-native';
|
|
2
|
+
import { FreeraspReactNative } from '../nativeModules';
|
|
3
|
+
import { onInvalidCallback } from '../methods/native';
|
|
4
|
+
import type {
|
|
5
|
+
NativeEvent,
|
|
6
|
+
RaspExecutionStateEventActions,
|
|
7
|
+
} from '../../types/types';
|
|
8
|
+
import {
|
|
9
|
+
getRaspExecutionStateChannelData,
|
|
10
|
+
prepareRaspExecutionStateMapping,
|
|
11
|
+
} from '../../channels/raspExecutionState';
|
|
12
|
+
import { RaspExecutionState } from '../../models/raspExecutionState';
|
|
13
|
+
|
|
14
|
+
const eventEmitter = new NativeEventEmitter(FreeraspReactNative);
|
|
15
|
+
let eventsListener: EmitterSubscription | undefined;
|
|
16
|
+
|
|
17
|
+
export const setRaspExecutionStateListener = async (
|
|
18
|
+
config: RaspExecutionStateEventActions
|
|
19
|
+
) => {
|
|
20
|
+
const [channel, key] = await getRaspExecutionStateChannelData();
|
|
21
|
+
await prepareRaspExecutionStateMapping();
|
|
22
|
+
|
|
23
|
+
const listener = async (event: NativeEvent) => {
|
|
24
|
+
if (event[key] === undefined) {
|
|
25
|
+
onInvalidCallback();
|
|
26
|
+
}
|
|
27
|
+
switch (event[key]) {
|
|
28
|
+
case RaspExecutionState.AllChecksFinished.value:
|
|
29
|
+
config.allChecksFinished?.();
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
onInvalidCallback();
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
eventsListener = eventEmitter.addListener(channel, listener);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const removeRaspExecutionStateEventListener = (): void => {
|
|
40
|
+
eventsListener?.remove();
|
|
41
|
+
eventsListener = undefined;
|
|
42
|
+
};
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { NativeEventEmitter, type EmitterSubscription } from 'react-native';
|
|
2
|
+
import { FreeraspReactNative } from '../nativeModules';
|
|
3
|
+
import { onInvalidCallback } from '../methods/native';
|
|
4
|
+
import { Threat } from '../../models/threat';
|
|
5
|
+
import type { NativeEvent, ThreatEventActions } from '../../types/types';
|
|
6
|
+
import { parseMalwareData } from '../../utils/malware';
|
|
7
|
+
import {
|
|
8
|
+
getThreatChannelData,
|
|
9
|
+
prepareThreatMapping,
|
|
10
|
+
} from '../../channels/threat';
|
|
11
|
+
|
|
12
|
+
const eventEmitter = new NativeEventEmitter(FreeraspReactNative);
|
|
13
|
+
let eventsListener: EmitterSubscription | undefined;
|
|
14
|
+
|
|
15
|
+
export const setThreatListeners = async (config: ThreatEventActions) => {
|
|
16
|
+
const [channel, key, malwareKey] = await getThreatChannelData();
|
|
17
|
+
await prepareThreatMapping();
|
|
18
|
+
|
|
19
|
+
const listener = async (event: NativeEvent) => {
|
|
20
|
+
if (event[key] === undefined) {
|
|
21
|
+
onInvalidCallback();
|
|
22
|
+
}
|
|
23
|
+
switch (event[key]) {
|
|
24
|
+
case Threat.PrivilegedAccess.value:
|
|
25
|
+
config.privilegedAccess?.();
|
|
26
|
+
break;
|
|
27
|
+
case Threat.Debug.value:
|
|
28
|
+
config.debug?.();
|
|
29
|
+
break;
|
|
30
|
+
case Threat.Simulator.value:
|
|
31
|
+
config.simulator?.();
|
|
32
|
+
break;
|
|
33
|
+
case Threat.AppIntegrity.value:
|
|
34
|
+
config.appIntegrity?.();
|
|
35
|
+
break;
|
|
36
|
+
case Threat.UnofficialStore.value:
|
|
37
|
+
config.unofficialStore?.();
|
|
38
|
+
break;
|
|
39
|
+
case Threat.Hooks.value:
|
|
40
|
+
config.hooks?.();
|
|
41
|
+
break;
|
|
42
|
+
case Threat.DeviceBinding.value:
|
|
43
|
+
config.deviceBinding?.();
|
|
44
|
+
break;
|
|
45
|
+
case Threat.Passcode.value:
|
|
46
|
+
config.passcode?.();
|
|
47
|
+
break;
|
|
48
|
+
case Threat.SecureHardwareNotAvailable.value:
|
|
49
|
+
config.secureHardwareNotAvailable?.();
|
|
50
|
+
break;
|
|
51
|
+
case Threat.ObfuscationIssues.value:
|
|
52
|
+
config.obfuscationIssues?.();
|
|
53
|
+
break;
|
|
54
|
+
case Threat.DeviceID.value:
|
|
55
|
+
config.deviceID?.();
|
|
56
|
+
break;
|
|
57
|
+
case Threat.DevMode.value:
|
|
58
|
+
config.devMode?.();
|
|
59
|
+
break;
|
|
60
|
+
case Threat.SystemVPN.value:
|
|
61
|
+
config.systemVPN?.();
|
|
62
|
+
break;
|
|
63
|
+
case Threat.Malware.value:
|
|
64
|
+
const malwareData = event[malwareKey];
|
|
65
|
+
config.malware?.(
|
|
66
|
+
await parseMalwareData(Array.isArray(malwareData) ? malwareData : [])
|
|
67
|
+
);
|
|
68
|
+
break;
|
|
69
|
+
case Threat.ADBEnabled.value:
|
|
70
|
+
config.adbEnabled?.();
|
|
71
|
+
break;
|
|
72
|
+
case Threat.Screenshot.value:
|
|
73
|
+
config.screenshot?.();
|
|
74
|
+
break;
|
|
75
|
+
case Threat.ScreenRecording.value:
|
|
76
|
+
config.screenRecording?.();
|
|
77
|
+
break;
|
|
78
|
+
case Threat.MultiInstance.value:
|
|
79
|
+
config.multiInstance?.();
|
|
80
|
+
break;
|
|
81
|
+
case Threat.TimeSpoofing.value:
|
|
82
|
+
config.timeSpoofing?.();
|
|
83
|
+
break;
|
|
84
|
+
case Threat.LocationSpoofing.value:
|
|
85
|
+
config.locationSpoofing?.();
|
|
86
|
+
break;
|
|
87
|
+
case Threat.UnsecureWifi.value:
|
|
88
|
+
config.unsecureWifi?.();
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
onInvalidCallback();
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
eventsListener = eventEmitter.addListener(channel, listener);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export const removeThreatListener = (): void => {
|
|
99
|
+
eventsListener?.remove();
|
|
100
|
+
eventsListener = undefined;
|
|
101
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
import { FreeraspReactNative } from '../nativeModules';
|
|
3
|
+
import type { TalsecConfig } from '../../types/types';
|
|
4
|
+
|
|
5
|
+
export const talsecStart = async (options: TalsecConfig): Promise<string> => {
|
|
6
|
+
return FreeraspReactNative.talsecStart(options);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const addToWhitelist = async (packageName: string): Promise<boolean> => {
|
|
10
|
+
if (Platform.OS === 'ios') {
|
|
11
|
+
return Promise.reject('Malware detection not available on iOS');
|
|
12
|
+
}
|
|
13
|
+
return FreeraspReactNative.addToWhitelist(packageName);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const blockScreenCapture = (enable: boolean): Promise<string> => {
|
|
17
|
+
return FreeraspReactNative.blockScreenCapture(enable);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const isScreenCaptureBlocked = (): Promise<boolean> => {
|
|
21
|
+
return FreeraspReactNative.isScreenCaptureBlocked();
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const storeExternalId = (data: string): Promise<string> => {
|
|
25
|
+
return FreeraspReactNative.storeExternalId(data);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const getAppIcon = (packageName: string): Promise<string> => {
|
|
29
|
+
if (Platform.OS === 'ios') {
|
|
30
|
+
return Promise.reject(
|
|
31
|
+
'App icon retrieval for Malware detection not available on iOS'
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
return FreeraspReactNative.getAppIcon(packageName);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const onInvalidCallback = (): void => {
|
|
38
|
+
FreeraspReactNative.onInvalidCallback();
|
|
39
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { talsecStart } from 'freerasp-react-native';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
setRaspExecutionStateListener,
|
|
5
|
+
removeRaspExecutionStateEventListener,
|
|
6
|
+
} from '../listeners/raspExecutionState';
|
|
7
|
+
import { setThreatListeners, removeThreatListener } from '../listeners/threat';
|
|
8
|
+
import type {
|
|
9
|
+
ThreatEventActions,
|
|
10
|
+
TalsecConfig,
|
|
11
|
+
RaspExecutionStateEventActions,
|
|
12
|
+
} from '../../types/types';
|
|
13
|
+
import { onInvalidCallback } from './native';
|
|
14
|
+
|
|
15
|
+
export const useFreeRasp = (
|
|
16
|
+
config: TalsecConfig,
|
|
17
|
+
actions: ThreatEventActions,
|
|
18
|
+
raspExecutionStateActions?: RaspExecutionStateEventActions
|
|
19
|
+
) => {
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
(async () => {
|
|
22
|
+
await setThreatListeners(actions);
|
|
23
|
+
raspExecutionStateActions &&
|
|
24
|
+
(await setRaspExecutionStateListener(raspExecutionStateActions));
|
|
25
|
+
try {
|
|
26
|
+
let response = await talsecStart(config);
|
|
27
|
+
if (response !== 'freeRASP started') {
|
|
28
|
+
onInvalidCallback();
|
|
29
|
+
}
|
|
30
|
+
console.log(response);
|
|
31
|
+
} catch (e: any) {
|
|
32
|
+
console.error(`${e.code}: ${e.message}`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return () => {
|
|
36
|
+
removeThreatListener();
|
|
37
|
+
removeRaspExecutionStateEventListener();
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
+
}, []);
|
|
42
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getRaspExecutionStateCount, itemsHaveType } from '../utils/utils';
|
|
2
|
+
import { FreeraspReactNative } from '../api/nativeModules';
|
|
3
|
+
import { onInvalidCallback } from '../api/methods/native';
|
|
4
|
+
import { RaspExecutionState } from '../models/raspExecutionState';
|
|
5
|
+
|
|
6
|
+
export const getRaspExecutionStateIdentifiers = async (): Promise<number[]> => {
|
|
7
|
+
const identifiers =
|
|
8
|
+
await FreeraspReactNative.getRaspExecutionStateIdentifiers();
|
|
9
|
+
if (
|
|
10
|
+
identifiers.length !== getRaspExecutionStateCount() ||
|
|
11
|
+
!itemsHaveType(identifiers, 'number')
|
|
12
|
+
) {
|
|
13
|
+
onInvalidCallback();
|
|
14
|
+
}
|
|
15
|
+
return identifiers;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const getRaspExecutionStateChannelData = async (): Promise<
|
|
19
|
+
[string, string]
|
|
20
|
+
> => {
|
|
21
|
+
const dataLength = 2;
|
|
22
|
+
const data = await FreeraspReactNative.getRaspExecutionStateChannelData();
|
|
23
|
+
if (data.length !== dataLength || !itemsHaveType(data, 'string')) {
|
|
24
|
+
onInvalidCallback();
|
|
25
|
+
}
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const prepareRaspExecutionStateMapping = async (): Promise<void> => {
|
|
30
|
+
const newValues = await getRaspExecutionStateIdentifiers();
|
|
31
|
+
const threats = RaspExecutionState.getValues();
|
|
32
|
+
threats.map((threat, index) => {
|
|
33
|
+
threat.value = newValues[index]!;
|
|
34
|
+
});
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
import { getThreatCount, itemsHaveType } from '../utils/utils';
|
|
3
|
+
import { FreeraspReactNative } from '../api/nativeModules';
|
|
4
|
+
import { Threat } from '../models/threat';
|
|
5
|
+
import { onInvalidCallback } from '../api/methods/native';
|
|
6
|
+
|
|
7
|
+
export const getThreatIdentifiers = async (): Promise<number[]> => {
|
|
8
|
+
const identifiers = await FreeraspReactNative.getThreatIdentifiers();
|
|
9
|
+
if (
|
|
10
|
+
identifiers.length !== getThreatCount() ||
|
|
11
|
+
!itemsHaveType(identifiers, 'number')
|
|
12
|
+
) {
|
|
13
|
+
onInvalidCallback();
|
|
14
|
+
}
|
|
15
|
+
return identifiers;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const getThreatChannelData = async (): Promise<
|
|
19
|
+
[string, string, string]
|
|
20
|
+
> => {
|
|
21
|
+
const dataLength = Platform.OS === 'ios' ? 2 : 3;
|
|
22
|
+
const data = await FreeraspReactNative.getThreatChannelData();
|
|
23
|
+
if (data.length !== dataLength || !itemsHaveType(data, 'string')) {
|
|
24
|
+
onInvalidCallback();
|
|
25
|
+
}
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const prepareThreatMapping = async (): Promise<void> => {
|
|
30
|
+
const newValues = await getThreatIdentifiers();
|
|
31
|
+
const threats = Threat.getValues();
|
|
32
|
+
threats.map((threat, index) => {
|
|
33
|
+
threat.value = newValues[index]!;
|
|
34
|
+
});
|
|
35
|
+
};
|