react-native-security-suite 0.2.0 → 0.3.1
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/LICENSE +1 -2
- package/README.md +20 -1
- package/android/build.gradle +86 -43
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +1 -3
- package/android/src/main/AndroidManifestDeprecated.xml +3 -0
- package/android/src/main/java/com/{reactnativesecuritysuite → securitysuite}/SecuritySuiteModule.java +8 -1
- package/android/src/main/java/com/{reactnativesecuritysuite → securitysuite}/SecuritySuitePackage.java +1 -1
- package/android/src/main/java/com/securitysuite/Sslpinning.java +302 -0
- package/android/src/main/java/com/{reactnativesecuritysuite → securitysuite}/StorageEncryption.java +1 -2
- package/ios/ReactNativeSslPinning-Bridging-Header.h +2 -0
- package/ios/{SecuritySuite.m → SecuritySuite.mm} +2 -0
- package/ios/SecuritySuite.swift +55 -1
- package/ios/SecuritySuite.xcodeproj/project.pbxproj +20 -10
- package/ios/SecuritySuite.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -3
- package/ios/SecuritySuite.xcodeproj/project.xcworkspace/xcuserdata/mohammadnavabi.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/SecuritySuite.xcodeproj/xcuserdata/mohammadnavabi.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +6 -0
- package/ios/SslPinning.swift +195 -0
- package/lib/commonjs/helpers.js +0 -3
- package/lib/commonjs/helpers.js.map +1 -1
- package/lib/commonjs/index.js +46 -38
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/helpers.js +0 -1
- package/lib/module/helpers.js.map +1 -1
- package/lib/module/index.js +43 -14
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/helpers.d.ts +1 -0
- package/lib/typescript/helpers.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +4 -1
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +45 -35
- package/react-native-security-suite.podspec +18 -2
- package/src/index.tsx +66 -16
- package/android/.gradle/7.4/checksums/checksums.lock +0 -0
- package/android/.gradle/7.4/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/7.4/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/7.4/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.4/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.4/executionHistory/executionHistory.bin +0 -0
- package/android/.gradle/7.4/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/7.4/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.4/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/7.4/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.4/fileHashes/resourceHashesCache.bin +0 -0
- package/android/.gradle/7.4/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
- package/android/.gradle/file-system.probe +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/compiler.xml +0 -6
- package/android/.idea/gradle.xml +0 -17
- package/android/.idea/jarRepositories.xml +0 -40
- package/android/.idea/misc.xml +0 -10
- package/android/.idea/vcs.xml +0 -6
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
- package/android/gradlew +0 -234
- package/android/gradlew.bat +0 -89
- package/android/local.properties +0 -8
- package/ios/SecuritySuite.xcodeproj/project.xcworkspace/xcuserdata/Navabi.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- /package/ios/SecuritySuite.xcodeproj/xcuserdata/{Navabi.xcuserdatad → mohammadnavabi.xcuserdatad}/xcschemes/xcschememanagement.plist +0 -0
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","AsyncStorage","_","isJsonString","LINKING_ERROR","select","ios","default","SecuritySuite","Proxy","get","Error","getPublicKey","getSharedKey","serverPublicKey","encryptBySharedKey","input","encrypt","decryptBySharedKey","decrypt","getDeviceId","Promise","resolve","reject","result","error","hardEncryption","secretKey","storageEncrypt","storageDecrypt","SecureStorage","setItem","key","value","encryptedKey","encryptedValue","e","getItem","encryptedData","mergeItem","data","mergedData","JSON","stringify","merge","parse","removeItem","getAllKeys","encryptedKeys","all","map","item","decryptedKey","multiSet","keyValuePairs","encryptedKeyValuePairs","length","multiGet","keys","Array","isArray","encryptedItems","decryptedalue","multiMerge","multiRemove","clear","deviceHasSecurityRisk"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\nimport _ from 'lodash';\nimport { isJsonString } from './helpers';\n\nconst LINKING_ERROR =\n `The package 'react-native-security-suite' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst SecuritySuite = NativeModules.SecuritySuite\n ? NativeModules.SecuritySuite\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nexport const getPublicKey = (): Promise<string> => SecuritySuite.getPublicKey();\n\nexport const getSharedKey = (serverPublicKey: string): Promise<string> =>\n SecuritySuite.getSharedKey(serverPublicKey);\n\nexport const encryptBySharedKey = (input: string): Promise<string> =>\n input && typeof input === 'string' ? SecuritySuite.encrypt(input) : '';\n\nexport const decryptBySharedKey = (input: string) =>\n input && typeof input === 'string' ? SecuritySuite.decrypt(input) : '';\n\nexport const getDeviceId = (): Promise<string> =>\n new Promise((resolve: any, reject: any) => {\n SecuritySuite.getDeviceId((result: string | null, error: string | null) => {\n if (error !== null) reject(error);\n else resolve(result);\n });\n });\n\nexport const encrypt = (\n input: string,\n hardEncryption = true,\n secretKey = null\n): Promise<string> =>\n new Promise((resolve: any, reject: any) => {\n if (!input) resolve(input);\n\n SecuritySuite.storageEncrypt(\n input,\n secretKey,\n hardEncryption,\n (result: string | null, error: string | null) => {\n if (error !== null) reject(error);\n else resolve(result);\n }\n );\n });\n\nexport const decrypt = (\n input: string,\n hardEncryption = true,\n secretKey = null\n): Promise<string> =>\n new Promise((resolve: any, reject: any) => {\n if (!input) resolve(input);\n\n SecuritySuite.storageDecrypt(\n input,\n secretKey,\n hardEncryption,\n (result: string | null, error: string | null) => {\n if (error !== null) reject(error);\n else resolve(result);\n }\n );\n });\n\nexport const SecureStorage = {\n setItem: async (key: string, value: string) => {\n try {\n const encryptedKey = await encrypt(key, false);\n const encryptedValue = await encrypt(value);\n return AsyncStorage.setItem(encryptedKey, encryptedValue);\n } catch (e) {\n return e;\n }\n },\n getItem: async (key: string) => {\n try {\n const encryptedKey = await encrypt(key, false);\n const encryptedData = await AsyncStorage.getItem(encryptedKey);\n return decrypt(encryptedData ?? '');\n } catch (e) {\n return e;\n }\n },\n mergeItem: async (key: string, value: string) => {\n try {\n const encryptedKey = await encrypt(key, false);\n const encryptedData = await AsyncStorage.getItem(encryptedKey);\n const data = await decrypt(encryptedData ?? '');\n if (!isJsonString(data) || !isJsonString(value)) return null;\n const mergedData = await JSON.stringify(\n _.merge(JSON.parse(data), JSON.parse(value))\n );\n const encryptedValue = await encrypt(mergedData);\n return AsyncStorage.setItem(encryptedKey, encryptedValue);\n } catch (e) {\n return e;\n }\n },\n removeItem: async (key: string) => {\n try {\n const encryptedKey = await encrypt(key, false);\n return AsyncStorage.removeItem(encryptedKey);\n } catch (e) {\n return e;\n }\n },\n getAllKeys: async () => {\n try {\n const encryptedKeys = await AsyncStorage.getAllKeys();\n return await Promise.all(\n encryptedKeys.map(async (item: string): Promise<string> => {\n const decryptedKey = await decrypt(item, false);\n return decryptedKey ? decryptedKey : item;\n })\n );\n } catch (e) {\n return e;\n }\n },\n multiSet: async (keyValuePairs: Array<Array<string>>) => {\n try {\n const encryptedKeyValuePairs: any = await Promise.all(\n keyValuePairs.map(async (item: Array<string>) => {\n if (item.length !== 2) return [];\n const encryptedKey = await encrypt(item[0], false);\n const encryptedValue = await encrypt(item[1]);\n return [encryptedKey, encryptedValue];\n })\n );\n AsyncStorage.multiSet(encryptedKeyValuePairs);\n } catch (e) {\n return e;\n }\n },\n multiGet: async (keys: Array<string>) => {\n try {\n if (!Array.isArray(keys)) return null;\n const encryptedKeys = await Promise.all(\n keys.map(\n async (item: string): Promise<string> => await encrypt(item, false)\n )\n );\n const encryptedItems = await AsyncStorage.multiGet(encryptedKeys);\n return await Promise.all(\n encryptedItems && encryptedItems.length\n ? encryptedItems.map(async (item: any): Promise<string[]> => {\n const decryptedKey = await decrypt(item[0], false);\n const decryptedalue = await decrypt(item[1]);\n return [decryptedKey, decryptedalue];\n })\n : []\n );\n } catch (e) {\n return e;\n }\n },\n multiMerge: async (keyValuePairs: Array<Array<string>>) => {\n try {\n return keyValuePairs.map(async (item: Array<string>) => {\n if (item.length !== 2) return;\n const encryptedKey = await encrypt(item[0], false);\n const encryptedData = await AsyncStorage.getItem(item[0]);\n const data = await decrypt(encryptedData ?? '');\n if (!isJsonString(data) || !isJsonString(item[1])) return null;\n const mergedData = await JSON.stringify(\n _.merge(JSON.parse(data), JSON.parse(item[1]))\n );\n const encryptedValue = await encrypt(mergedData, false);\n return AsyncStorage.setItem(encryptedKey, encryptedValue);\n });\n } catch (e) {\n return e;\n }\n },\n multiRemove: async (keys: Array<string>) => {\n try {\n if (!Array.isArray(keys)) return keys;\n const encryptedKeys = await Promise.all(\n keys.map(\n async (item: string): Promise<string> => await encrypt(item, false)\n )\n );\n return AsyncStorage.multiRemove(encryptedKeys);\n } catch (e) {\n return e;\n }\n },\n clear: async () => {\n try {\n return AsyncStorage.clear();\n } catch (e) {\n return e;\n }\n },\n};\n\nexport function deviceHasSecurityRisk(): Promise<boolean> {\n return SecuritySuite.deviceHasSecurityRisk();\n}\n\nexport default SecuritySuite;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","AsyncStorage","_","isJsonString","LINKING_ERROR","select","ios","default","SecuritySuite","Proxy","get","Error","getPublicKey","getSharedKey","serverPublicKey","encryptBySharedKey","input","encrypt","decryptBySharedKey","decrypt","getDeviceId","Promise","resolve","reject","result","error","hardEncryption","arguments","length","undefined","secretKey","storageEncrypt","storageDecrypt","SecureStorage","setItem","key","value","encryptedKey","encryptedValue","e","getItem","encryptedData","mergeItem","data","mergedData","JSON","stringify","merge","parse","removeItem","getAllKeys","encryptedKeys","all","map","item","decryptedKey","multiSet","keyValuePairs","encryptedKeyValuePairs","console","multiGet","keys","Array","isArray","encryptedItems","decryptedalue","multiMerge","multiRemove","clear","fetch","url","options","json","response","errorJson","objectError","path","message","code","status","deviceHasSecurityRisk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,OAO5C,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ErrorResponse, Options, SuccessResponse } from 'react-native-security-suite';
|
|
1
2
|
declare const SecuritySuite: any;
|
|
2
3
|
export declare const getPublicKey: () => Promise<string>;
|
|
3
4
|
export declare const getSharedKey: (serverPublicKey: string) => Promise<string>;
|
|
@@ -12,11 +13,13 @@ export declare const SecureStorage: {
|
|
|
12
13
|
mergeItem: (key: string, value: string) => Promise<unknown>;
|
|
13
14
|
removeItem: (key: string) => Promise<unknown>;
|
|
14
15
|
getAllKeys: () => Promise<unknown>;
|
|
15
|
-
multiSet: (keyValuePairs: Array<Array<string>>) => Promise<
|
|
16
|
+
multiSet: (keyValuePairs: Array<Array<string>>) => Promise<void | string[][]>;
|
|
16
17
|
multiGet: (keys: Array<string>) => Promise<unknown>;
|
|
17
18
|
multiMerge: (keyValuePairs: Array<Array<string>>) => Promise<unknown>;
|
|
18
19
|
multiRemove: (keys: Array<string>) => Promise<unknown>;
|
|
19
20
|
clear: () => Promise<unknown>;
|
|
20
21
|
};
|
|
22
|
+
export declare function fetch(url: string, options: Options): Promise<SuccessResponse | ErrorResponse>;
|
|
21
23
|
export declare function deviceHasSecurityRisk(): Promise<boolean>;
|
|
22
24
|
export default SecuritySuite;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,OAAO,EACP,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAQrC,QAAA,MAAM,aAAa,KASd,CAAC;AAEN,eAAO,MAAM,YAAY,QAAO,QAAQ,MAAM,CAAiC,CAAC;AAEhF,eAAO,MAAM,YAAY,oBAAqB,MAAM,KAAG,QAAQ,MAAM,CACxB,CAAC;AAE9C,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,QAAQ,MAAM,CACO,CAAC;AAEzE,eAAO,MAAM,kBAAkB,UAAW,MAAM,QACwB,CAAC;AAEzE,eAAO,MAAM,WAAW,QAAO,QAAQ,MAAM,CAMzC,CAAC;AAEL,eAAO,MAAM,OAAO,UACX,MAAM,iDAGZ,QAAQ,MAAM,CAab,CAAC;AAEL,eAAO,MAAM,OAAO,UACX,MAAM,iDAGZ,QAAQ,MAAM,CAab,CAAC;AAEL,eAAO,MAAM,aAAa;mBACH,MAAM,SAAS,MAAM;mBASrB,MAAM;qBASJ,MAAM,SAAS,MAAM;sBAepB,MAAM;;8BAsBb,MAAM,MAAM,MAAM,CAAC,CAAC,KAClC,QAAQ,IAAI,GAAG,MAAM,EAAE,EAAE,CAAC;qBAkBN,MAAM,MAAM,CAAC;gCAsBF,MAAM,MAAM,MAAM,CAAC,CAAC;wBAqB5B,MAAM,MAAM,CAAC;;CAoBxC,CAAC;AAEF,wBAAgB,KAAK,CACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,eAAe,GAAG,aAAa,CAAC,CAgC1C;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAExD;AAED,eAAe,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-security-suite",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Security
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Security solution for React Native",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
7
7
|
"types": "lib/typescript/index.d.ts",
|
|
@@ -13,34 +13,38 @@
|
|
|
13
13
|
"android",
|
|
14
14
|
"ios",
|
|
15
15
|
"cpp",
|
|
16
|
-
"
|
|
16
|
+
"*.podspec",
|
|
17
17
|
"!lib/typescript/example",
|
|
18
|
-
"!android/build",
|
|
19
18
|
"!ios/build",
|
|
19
|
+
"!android/build",
|
|
20
|
+
"!android/gradle",
|
|
21
|
+
"!android/gradlew",
|
|
22
|
+
"!android/gradlew.bat",
|
|
23
|
+
"!android/local.properties",
|
|
20
24
|
"!**/__tests__",
|
|
21
25
|
"!**/__fixtures__",
|
|
22
|
-
"!**/__mocks__"
|
|
26
|
+
"!**/__mocks__",
|
|
27
|
+
"!**/.*"
|
|
23
28
|
],
|
|
24
29
|
"scripts": {
|
|
25
30
|
"test": "jest",
|
|
26
|
-
"
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
27
32
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
28
|
-
"
|
|
33
|
+
"prepack": "bob build",
|
|
29
34
|
"release": "release-it",
|
|
30
35
|
"example": "yarn --cwd example",
|
|
31
|
-
"
|
|
32
|
-
"
|
|
36
|
+
"build:android": "cd example/android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a",
|
|
37
|
+
"build:ios": "cd example/ios && xcodebuild -workspace SecuritySuiteExample.xcworkspace -scheme SecuritySuiteExample -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO",
|
|
38
|
+
"bootstrap": "yarn example && yarn install && yarn example pods",
|
|
39
|
+
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build"
|
|
33
40
|
},
|
|
34
41
|
"keywords": [
|
|
35
42
|
"react-native",
|
|
36
43
|
"ios",
|
|
37
44
|
"android"
|
|
38
45
|
],
|
|
39
|
-
"repository":
|
|
40
|
-
|
|
41
|
-
"url": "https://github.com/mohamadnavabi/react-native-security-suite.git"
|
|
42
|
-
},
|
|
43
|
-
"author": "Mohammad Navabi <navabifar@gmail.com> (https://mohammadnavabi.ir)",
|
|
46
|
+
"repository": "https://github.com/mohamadnavabi/react-native-security-suite",
|
|
47
|
+
"author": "Mohammad Navabi <navabifar@gmail.com> (https://github.com/mohamadnavabi)",
|
|
44
48
|
"license": "MIT",
|
|
45
49
|
"bugs": {
|
|
46
50
|
"url": "https://github.com/mohamadnavabi/react-native-security-suite/issues"
|
|
@@ -50,26 +54,31 @@
|
|
|
50
54
|
"registry": "https://registry.npmjs.org/"
|
|
51
55
|
},
|
|
52
56
|
"devDependencies": {
|
|
53
|
-
"@commitlint/config-conventional": "^
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@types/
|
|
58
|
-
"@types/
|
|
59
|
-
"@types/react
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"eslint
|
|
64
|
-
"
|
|
65
|
-
"
|
|
57
|
+
"@commitlint/config-conventional": "^17.0.2",
|
|
58
|
+
"@evilmartians/lefthook": "^1.2.2",
|
|
59
|
+
"@react-native-community/eslint-config": "^3.0.2",
|
|
60
|
+
"@release-it/conventional-changelog": "^5.0.0",
|
|
61
|
+
"@types/jest": "^28.1.2",
|
|
62
|
+
"@types/lodash": "^4.14.196",
|
|
63
|
+
"@types/react": "~17.0.21",
|
|
64
|
+
"@types/react-native": "0.70.0",
|
|
65
|
+
"commitlint": "^17.0.2",
|
|
66
|
+
"del-cli": "^5.0.0",
|
|
67
|
+
"eslint": "^8.4.1",
|
|
68
|
+
"eslint-config-prettier": "^8.5.0",
|
|
69
|
+
"eslint-plugin-prettier": "^4.0.0",
|
|
70
|
+
"jest": "^28.1.1",
|
|
66
71
|
"pod-install": "^0.1.0",
|
|
67
72
|
"prettier": "^2.0.5",
|
|
68
|
-
"react": "
|
|
69
|
-
"react-native": "0.
|
|
70
|
-
"react-native-builder-bob": "^0.
|
|
71
|
-
"release-it": "^
|
|
72
|
-
"
|
|
73
|
+
"react": "18.2.0",
|
|
74
|
+
"react-native": "0.72.3",
|
|
75
|
+
"react-native-builder-bob": "^0.20.0",
|
|
76
|
+
"release-it": "^15.0.0",
|
|
77
|
+
"turbo": "^1.10.7",
|
|
78
|
+
"typescript": "^5.0.2"
|
|
79
|
+
},
|
|
80
|
+
"resolutions": {
|
|
81
|
+
"@types/react": "17.0.21"
|
|
73
82
|
},
|
|
74
83
|
"peerDependencies": {
|
|
75
84
|
"@react-native-async-storage/async-storage": "*",
|
|
@@ -82,6 +91,10 @@
|
|
|
82
91
|
"optional": false
|
|
83
92
|
}
|
|
84
93
|
},
|
|
94
|
+
"engines": {
|
|
95
|
+
"node": ">= 16.0.0"
|
|
96
|
+
},
|
|
97
|
+
"packageManager": "^yarn@1.22.15",
|
|
85
98
|
"jest": {
|
|
86
99
|
"preset": "react-native",
|
|
87
100
|
"modulePathIgnorePatterns": [
|
|
@@ -155,9 +168,6 @@
|
|
|
155
168
|
]
|
|
156
169
|
]
|
|
157
170
|
},
|
|
158
|
-
"directories": {
|
|
159
|
-
"example": "example"
|
|
160
|
-
},
|
|
161
171
|
"dependencies": {
|
|
162
172
|
"@react-native-async-storage/async-storage": "^1.19.0"
|
|
163
173
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require "json"
|
|
2
2
|
|
|
3
3
|
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
|
|
4
5
|
|
|
5
6
|
Pod::Spec.new do |s|
|
|
6
7
|
s.name = "react-native-security-suite"
|
|
@@ -10,11 +11,26 @@ Pod::Spec.new do |s|
|
|
|
10
11
|
s.license = package["license"]
|
|
11
12
|
s.authors = package["author"]
|
|
12
13
|
|
|
13
|
-
s.platforms = { :ios => "
|
|
14
|
+
s.platforms = { :ios => "11.0" }
|
|
14
15
|
s.source = { :git => "https://github.com/mohamadnavabi/react-native-security-suite.git", :tag => "#{s.version}" }
|
|
15
16
|
|
|
16
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
17
|
-
|
|
18
|
+
|
|
18
19
|
s.dependency "React-Core"
|
|
19
20
|
s.dependency "IOSSecuritySuite"
|
|
21
|
+
|
|
22
|
+
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
23
|
+
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
|
24
|
+
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
|
25
|
+
s.pod_target_xcconfig = {
|
|
26
|
+
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
|
|
27
|
+
"OTHER_CPLUSPLUSFLAGS" => "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1",
|
|
28
|
+
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
|
|
29
|
+
}
|
|
30
|
+
s.dependency "React-Codegen"
|
|
31
|
+
s.dependency "RCT-Folly"
|
|
32
|
+
s.dependency "RCTRequired"
|
|
33
|
+
s.dependency "RCTTypeSafety"
|
|
34
|
+
s.dependency "ReactCommon/turbomodule/core"
|
|
35
|
+
end
|
|
20
36
|
end
|
package/src/index.tsx
CHANGED
|
@@ -2,6 +2,11 @@ import { NativeModules, Platform } from 'react-native';
|
|
|
2
2
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
3
3
|
import _ from 'lodash';
|
|
4
4
|
import { isJsonString } from './helpers';
|
|
5
|
+
import type {
|
|
6
|
+
ErrorResponse,
|
|
7
|
+
Options,
|
|
8
|
+
SuccessResponse,
|
|
9
|
+
} from 'react-native-security-suite';
|
|
5
10
|
|
|
6
11
|
const LINKING_ERROR =
|
|
7
12
|
`The package 'react-native-security-suite' doesn't seem to be linked. Make sure: \n\n` +
|
|
@@ -132,19 +137,24 @@ export const SecureStorage = {
|
|
|
132
137
|
return e;
|
|
133
138
|
}
|
|
134
139
|
},
|
|
135
|
-
multiSet: async (
|
|
140
|
+
multiSet: async (
|
|
141
|
+
keyValuePairs: Array<Array<string>>
|
|
142
|
+
): Promise<void | string[][]> => {
|
|
136
143
|
try {
|
|
137
144
|
const encryptedKeyValuePairs: any = await Promise.all(
|
|
138
145
|
keyValuePairs.map(async (item: Array<string>) => {
|
|
139
|
-
if (item.length
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
146
|
+
if (item.length === 2 && item[0] && item[1]) {
|
|
147
|
+
const encryptedKey = await encrypt(item[0], false);
|
|
148
|
+
const encryptedValue = await encrypt(item[1]);
|
|
149
|
+
return [encryptedKey, encryptedValue];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return null;
|
|
143
153
|
})
|
|
144
154
|
);
|
|
145
155
|
AsyncStorage.multiSet(encryptedKeyValuePairs);
|
|
146
156
|
} catch (e) {
|
|
147
|
-
|
|
157
|
+
console.error('multiSet error: ', e);
|
|
148
158
|
}
|
|
149
159
|
},
|
|
150
160
|
multiGet: async (keys: Array<string>) => {
|
|
@@ -172,16 +182,19 @@ export const SecureStorage = {
|
|
|
172
182
|
multiMerge: async (keyValuePairs: Array<Array<string>>) => {
|
|
173
183
|
try {
|
|
174
184
|
return keyValuePairs.map(async (item: Array<string>) => {
|
|
175
|
-
if (item.length
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
+
if (item.length === 2 && item[0] && item[1]) {
|
|
186
|
+
const encryptedKey = await encrypt(item[0], false);
|
|
187
|
+
const encryptedData = await AsyncStorage.getItem(item[0]);
|
|
188
|
+
const data = await decrypt(encryptedData ?? '');
|
|
189
|
+
if (!isJsonString(data) || !isJsonString(item[1])) return null;
|
|
190
|
+
const mergedData = await JSON.stringify(
|
|
191
|
+
_.merge(JSON.parse(data), JSON.parse(item[1]))
|
|
192
|
+
);
|
|
193
|
+
const encryptedValue = await encrypt(mergedData, false);
|
|
194
|
+
return AsyncStorage.setItem(encryptedKey, encryptedValue);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return null;
|
|
185
198
|
});
|
|
186
199
|
} catch (e) {
|
|
187
200
|
return e;
|
|
@@ -209,6 +222,43 @@ export const SecureStorage = {
|
|
|
209
222
|
},
|
|
210
223
|
};
|
|
211
224
|
|
|
225
|
+
export function fetch(
|
|
226
|
+
url: string,
|
|
227
|
+
options: Options
|
|
228
|
+
): Promise<SuccessResponse | ErrorResponse> {
|
|
229
|
+
return new Promise((resolve, reject) => {
|
|
230
|
+
SecuritySuite.fetch(
|
|
231
|
+
url,
|
|
232
|
+
options,
|
|
233
|
+
(result: SuccessResponse, error: ErrorResponse) => {
|
|
234
|
+
try {
|
|
235
|
+
if (error === null) {
|
|
236
|
+
result.json = () => JSON.parse(result.response);
|
|
237
|
+
|
|
238
|
+
resolve(result);
|
|
239
|
+
} else {
|
|
240
|
+
let errorJson = JSON.parse(error.error);
|
|
241
|
+
|
|
242
|
+
const objectError = {
|
|
243
|
+
json: () => errorJson,
|
|
244
|
+
error: error.error,
|
|
245
|
+
path: errorJson?.path,
|
|
246
|
+
message: errorJson?.message,
|
|
247
|
+
code: errorJson?.code,
|
|
248
|
+
status: error?.status,
|
|
249
|
+
url: error?.url,
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
reject(objectError);
|
|
253
|
+
}
|
|
254
|
+
} catch (e) {
|
|
255
|
+
console.error('SSL Pinnning fetch error: ', e);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
);
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
212
262
|
export function deviceHasSecurityRisk(): Promise<boolean> {
|
|
213
263
|
return SecuritySuite.deviceHasSecurityRisk();
|
|
214
264
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
package/android/.idea/gradle.xml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="GradleSettings">
|
|
4
|
-
<option name="linkedExternalProjectsSettings">
|
|
5
|
-
<GradleProjectSettings>
|
|
6
|
-
<option name="testRunner" value="GRADLE" />
|
|
7
|
-
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
|
8
|
-
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
|
9
|
-
<option name="modules">
|
|
10
|
-
<set>
|
|
11
|
-
<option value="$PROJECT_DIR$" />
|
|
12
|
-
</set>
|
|
13
|
-
</option>
|
|
14
|
-
</GradleProjectSettings>
|
|
15
|
-
</option>
|
|
16
|
-
</component>
|
|
17
|
-
</project>
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="RemoteRepositoriesConfiguration">
|
|
4
|
-
<remote-repository>
|
|
5
|
-
<option name="id" value="central" />
|
|
6
|
-
<option name="name" value="Maven Central repository" />
|
|
7
|
-
<option name="url" value="https://repo1.maven.org/maven2" />
|
|
8
|
-
</remote-repository>
|
|
9
|
-
<remote-repository>
|
|
10
|
-
<option name="id" value="jboss.community" />
|
|
11
|
-
<option name="name" value="JBoss Community repository" />
|
|
12
|
-
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
|
13
|
-
</remote-repository>
|
|
14
|
-
<remote-repository>
|
|
15
|
-
<option name="id" value="MavenLocal" />
|
|
16
|
-
<option name="name" value="MavenLocal" />
|
|
17
|
-
<option name="url" value="file:$USER_HOME$/.m2/repository/" />
|
|
18
|
-
</remote-repository>
|
|
19
|
-
<remote-repository>
|
|
20
|
-
<option name="id" value="MavenRepo" />
|
|
21
|
-
<option name="name" value="MavenRepo" />
|
|
22
|
-
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
|
23
|
-
</remote-repository>
|
|
24
|
-
<remote-repository>
|
|
25
|
-
<option name="id" value="maven" />
|
|
26
|
-
<option name="name" value="maven" />
|
|
27
|
-
<option name="url" value="file:$PROJECT_DIR$/../node_modules/react-native/android/" />
|
|
28
|
-
</remote-repository>
|
|
29
|
-
<remote-repository>
|
|
30
|
-
<option name="id" value="BintrayJCenter" />
|
|
31
|
-
<option name="name" value="BintrayJCenter" />
|
|
32
|
-
<option name="url" value="https://jcenter.bintray.com/" />
|
|
33
|
-
</remote-repository>
|
|
34
|
-
<remote-repository>
|
|
35
|
-
<option name="id" value="Google" />
|
|
36
|
-
<option name="name" value="Google" />
|
|
37
|
-
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
|
38
|
-
</remote-repository>
|
|
39
|
-
</component>
|
|
40
|
-
</project>
|
package/android/.idea/misc.xml
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
4
|
-
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
|
|
5
|
-
<output url="file://$PROJECT_DIR$/build/classes" />
|
|
6
|
-
</component>
|
|
7
|
-
<component name="ProjectType">
|
|
8
|
-
<option name="id" value="Android" />
|
|
9
|
-
</component>
|
|
10
|
-
</project>
|
package/android/.idea/vcs.xml
DELETED
|
Binary file
|