react-native-security-suite 0.3.3 → 0.5.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/README.md +69 -33
- package/android/build.gradle +8 -0
- package/android/src/main/java/com/securitysuite/AndroidLogger.kt +19 -0
- package/android/src/main/java/com/securitysuite/Sslpinning.java +29 -2
- package/android/src/main/java/com/securitysuite/modifier/Base64Decoder.kt +11 -0
- package/android/src/main/java/com/securitysuite/modifier/BasicAuthorizationHeaderModifier.kt +16 -0
- package/ios/SecuritySuite.swift +3 -0
- package/ios/SslPinning.swift +30 -1
- package/lib/commonjs/index.js +12 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +10 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +6 -0
package/README.md
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
# react-native-security-suite
|
|
2
2
|
|
|
3
|
-
Security solutions for Android and iOS
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Security solutions for React Native both platform Android and iOS
|
|
4
|
+
You can use any of the following:
|
|
5
|
+
|
|
6
|
+
<ol>
|
|
7
|
+
<li>Android Root device or iOS Jailbreak device detection</li>
|
|
8
|
+
<li>Text Encryption/Decryption</li>
|
|
9
|
+
<li>Secure storage</li>
|
|
10
|
+
<li>Diffie–Hellman key exchange</li>
|
|
11
|
+
<li>SSL Pinning & public key pinning</li>
|
|
12
|
+
</ol>
|
|
7
13
|
|
|
8
14
|
## Installation
|
|
9
15
|
|
|
@@ -17,6 +23,41 @@ npm install react-native-security-suite
|
|
|
17
23
|
|
|
18
24
|
## Usage
|
|
19
25
|
|
|
26
|
+
\
|
|
27
|
+
|
|
28
|
+
1. Android Root or iOS Jailbreak devices detection example:
|
|
29
|
+
|
|
30
|
+
```js
|
|
31
|
+
import { deviceHasSecurityRisk } from 'react-native-security-suite';
|
|
32
|
+
|
|
33
|
+
const isRiskyDevice = await deviceHasSecurityRisk();
|
|
34
|
+
console.log('Root/Jailbreak detection result: ', isRiskyDevice);
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
\
|
|
38
|
+
2. Text Encryption/Decryption example:
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
//
|
|
42
|
+
const softEncrypted = await encrypt('STR_FOR_ENCRYPT');
|
|
43
|
+
console.log('Encrypted result: ', softEncrypted);
|
|
44
|
+
const softDecrypted = await decrypt('STR_FOR_DECRYPT');
|
|
45
|
+
console.log('Decrypted result: ', softDecrypted);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
\
|
|
49
|
+
3. Secure storage example:
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
import { SecureStorage } from 'react-native-security-suite';
|
|
53
|
+
|
|
54
|
+
SecureStorage.setItem('key', 'value');
|
|
55
|
+
console.log(await SecureStorage.getItem('key'));
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
\
|
|
59
|
+
4. Diffie–Hellman key exchange:
|
|
60
|
+
|
|
20
61
|
```js
|
|
21
62
|
import {
|
|
22
63
|
getPublicKey,
|
|
@@ -25,27 +66,8 @@ import {
|
|
|
25
66
|
decryptBySharedKey,
|
|
26
67
|
encrypt,
|
|
27
68
|
decrypt,
|
|
28
|
-
deviceHasSecurityRisk,
|
|
29
|
-
fetch,
|
|
30
69
|
} from 'react-native-security-suite';
|
|
31
70
|
|
|
32
|
-
// SSL Pinning
|
|
33
|
-
const response = await fetch('URL', {
|
|
34
|
-
body: {},
|
|
35
|
-
headers: {},
|
|
36
|
-
certificates: [
|
|
37
|
-
/* certs */
|
|
38
|
-
],
|
|
39
|
-
validDomains: [
|
|
40
|
-
/* your valid domain */
|
|
41
|
-
],
|
|
42
|
-
timeout: 6000,
|
|
43
|
-
});
|
|
44
|
-
let responseJson = await response.json();
|
|
45
|
-
console.log('SSL Pinning server response: ', responseJson);
|
|
46
|
-
|
|
47
|
-
// ------- OR --------
|
|
48
|
-
|
|
49
71
|
// Hard Encrypt/Decrypt with sharedKey
|
|
50
72
|
const publicKey = await getPublicKey();
|
|
51
73
|
console.log('Public key: ', publicKey);
|
|
@@ -55,23 +77,37 @@ console.log('Public key: ', publicKey);
|
|
|
55
77
|
*/
|
|
56
78
|
const sharedKey = await getSharedKey('SERVER_PUBLIC_KEY');
|
|
57
79
|
console.log('Shared key: ', sharedKey);
|
|
58
|
-
|
|
80
|
+
|
|
81
|
+
// 1. Hard Encrypt/Decrypt by sharedKey
|
|
59
82
|
const hardEncrypted = await encryptBySharedKey('STR_FOR_ENCRYPT');
|
|
60
83
|
console.log('Encrypted result: ', hardEncrypted);
|
|
61
84
|
const hardDecrypted = await decryptBySharedKey('STR_FOR_DECRYPT');
|
|
62
85
|
console.log('Decrypted result: ', hardDecrypted);
|
|
86
|
+
```
|
|
63
87
|
|
|
64
|
-
|
|
88
|
+
5. SSL Pinning example:
|
|
65
89
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
console.log('Encrypted result: ', softEncrypted);
|
|
69
|
-
const softDecrypted = await decrypt('STR_FOR_DECRYPT');
|
|
70
|
-
console.log('Decrypted result: ', softDecrypted);
|
|
90
|
+
```js
|
|
91
|
+
import { fetch } from 'react-native-security-suite';
|
|
71
92
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
const response = await fetch('URL', {
|
|
94
|
+
method: 'GET', // or any http methods
|
|
95
|
+
headers: {
|
|
96
|
+
/* your request header */
|
|
97
|
+
'Content-Type': 'application/json',
|
|
98
|
+
},
|
|
99
|
+
body: undefiend,
|
|
100
|
+
certificates: [
|
|
101
|
+
/* certificates */
|
|
102
|
+
'sha256/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=',
|
|
103
|
+
],
|
|
104
|
+
validDomains: [
|
|
105
|
+
/* your valid domains */
|
|
106
|
+
'example.com',
|
|
107
|
+
],
|
|
108
|
+
timeout: 6000,
|
|
109
|
+
});
|
|
110
|
+
console.log('server response: ', response.json());
|
|
75
111
|
```
|
|
76
112
|
|
|
77
113
|
## Contributing
|
package/android/build.gradle
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
apply plugin: "kotlin-android"
|
|
2
|
+
|
|
1
3
|
buildscript {
|
|
4
|
+
def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['SecuritySuite_kotlinVersion']
|
|
5
|
+
|
|
2
6
|
repositories {
|
|
3
7
|
google()
|
|
4
8
|
mavenCentral()
|
|
@@ -6,6 +10,7 @@ buildscript {
|
|
|
6
10
|
|
|
7
11
|
dependencies {
|
|
8
12
|
classpath "com.android.tools.build:gradle:7.2.1"
|
|
13
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
9
14
|
}
|
|
10
15
|
}
|
|
11
16
|
|
|
@@ -84,6 +89,7 @@ repositories {
|
|
|
84
89
|
jcenter()
|
|
85
90
|
}
|
|
86
91
|
|
|
92
|
+
def kotlin_version = getExtOrDefault('kotlinVersion')
|
|
87
93
|
|
|
88
94
|
dependencies {
|
|
89
95
|
// For < 0.71, this will be from the local maven repo
|
|
@@ -92,6 +98,8 @@ dependencies {
|
|
|
92
98
|
implementation "com.facebook.react:react-native:+"
|
|
93
99
|
implementation "com.squareup.okhttp3:okhttp:3.0.1"
|
|
94
100
|
implementation "com.scottyab:rootbeer-lib:0.1.0"
|
|
101
|
+
implementation "com.github.mrmike:ok2curl:0.8.0"
|
|
102
|
+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
95
103
|
}
|
|
96
104
|
|
|
97
105
|
if (isNewArchitectureEnabled()) {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.securitysuite
|
|
2
|
+
|
|
3
|
+
import android.util.Log
|
|
4
|
+
import com.moczul.ok2curl.logger.Logger
|
|
5
|
+
|
|
6
|
+
class AndroidLogger : Logger {
|
|
7
|
+
|
|
8
|
+
override fun log(message: String) {
|
|
9
|
+
curl = message
|
|
10
|
+
|
|
11
|
+
// Log.v(TAG, message)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
companion object {
|
|
15
|
+
const val TAG = "Ok2Curl"
|
|
16
|
+
|
|
17
|
+
@JvmStatic var curl : String? = null
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -11,6 +11,11 @@ import com.facebook.react.bridge.ReadableMap;
|
|
|
11
11
|
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
12
12
|
import com.facebook.react.bridge.ReadableType;
|
|
13
13
|
import com.facebook.react.bridge.WritableMap;
|
|
14
|
+
import com.moczul.ok2curl.modifier.HeaderModifier;
|
|
15
|
+
import com.securitysuite.modifier.Base64Decoder;
|
|
16
|
+
import com.securitysuite.modifier.BasicAuthorizationHeaderModifier;
|
|
17
|
+
import com.moczul.ok2curl.Configuration;
|
|
18
|
+
import com.moczul.ok2curl.CurlInterceptor;
|
|
14
19
|
|
|
15
20
|
import org.json.JSONException;
|
|
16
21
|
|
|
@@ -22,7 +27,9 @@ import java.io.InputStream;
|
|
|
22
27
|
import java.io.OutputStream;
|
|
23
28
|
import java.net.URI;
|
|
24
29
|
import java.net.URISyntaxException;
|
|
30
|
+
import java.util.ArrayList;
|
|
25
31
|
import java.util.HashMap;
|
|
32
|
+
import java.util.List;
|
|
26
33
|
import java.util.Map;
|
|
27
34
|
import java.util.concurrent.TimeUnit;
|
|
28
35
|
|
|
@@ -40,6 +47,7 @@ public class Sslpinning {
|
|
|
40
47
|
private static String content_type = "application/json; charset=utf-8";
|
|
41
48
|
public static MediaType mediaType = MediaType.parse(content_type);
|
|
42
49
|
String responseBodyString = "{}";
|
|
50
|
+
private static AndroidLogger curl = null;
|
|
43
51
|
|
|
44
52
|
public Sslpinning(ReactApplicationContext context) {
|
|
45
53
|
this.context = context;
|
|
@@ -94,6 +102,12 @@ public class Sslpinning {
|
|
|
94
102
|
|
|
95
103
|
output.putInt("status", responseCode);
|
|
96
104
|
output.putString("url", request.url().toString());
|
|
105
|
+
output.putString("curl", curl.getCurl());
|
|
106
|
+
|
|
107
|
+
// response time
|
|
108
|
+
long tx = response.sentRequestAtMillis();
|
|
109
|
+
long rx = response.receivedResponseAtMillis();
|
|
110
|
+
output.putString("duration", (rx - tx) + "ms");
|
|
97
111
|
|
|
98
112
|
if (!response.isSuccessful() || responseCode >= 400) {
|
|
99
113
|
output.putString("error", responseBodyString);
|
|
@@ -122,20 +136,23 @@ public class Sslpinning {
|
|
|
122
136
|
|
|
123
137
|
ReadableArray hashes = options.getArray("certificates");
|
|
124
138
|
for (int i = 0; i < hashes.size(); i++) {
|
|
125
|
-
certificatePinner.add(hostname,
|
|
139
|
+
certificatePinner.add(hostname, hashes.getString(i));
|
|
126
140
|
}
|
|
127
141
|
|
|
128
142
|
return certificatePinner.build();
|
|
129
143
|
}
|
|
130
144
|
|
|
131
145
|
private OkHttpClient getClient(ReadableMap options, CertificatePinner certificatePinner) throws JSONException {
|
|
132
|
-
|
|
146
|
+
CurlInterceptor curlInterceptor = handleCurl();
|
|
147
|
+
|
|
148
|
+
if (options.hasKey("timeout")) {
|
|
133
149
|
int timeout = options.getInt("timeout");
|
|
134
150
|
return new OkHttpClient.Builder()
|
|
135
151
|
.connectTimeout(timeout, TimeUnit.MILLISECONDS)
|
|
136
152
|
.readTimeout(timeout, TimeUnit.MILLISECONDS)
|
|
137
153
|
.writeTimeout(timeout, TimeUnit.MILLISECONDS)
|
|
138
154
|
.certificatePinner(certificatePinner)
|
|
155
|
+
.addInterceptor(curlInterceptor)
|
|
139
156
|
.build();
|
|
140
157
|
} else {
|
|
141
158
|
return new OkHttpClient.Builder()
|
|
@@ -144,6 +161,16 @@ public class Sslpinning {
|
|
|
144
161
|
}
|
|
145
162
|
}
|
|
146
163
|
|
|
164
|
+
private CurlInterceptor handleCurl() {
|
|
165
|
+
BasicAuthorizationHeaderModifier modifier = new BasicAuthorizationHeaderModifier(new Base64Decoder());
|
|
166
|
+
List<HeaderModifier> headerModifiers = new ArrayList<>();
|
|
167
|
+
headerModifiers.add(modifier);
|
|
168
|
+
Configuration config = new Configuration(headerModifiers);
|
|
169
|
+
CurlInterceptor curlInterceptor = new CurlInterceptor(curl = new AndroidLogger(), config);
|
|
170
|
+
|
|
171
|
+
return curlInterceptor;
|
|
172
|
+
}
|
|
173
|
+
|
|
147
174
|
private static String getHostname(String url) throws URISyntaxException {
|
|
148
175
|
URI uri = new URI(url);
|
|
149
176
|
String domain = uri.getHost();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package com.securitysuite.modifier
|
|
2
|
+
|
|
3
|
+
import com.moczul.ok2curl.Header
|
|
4
|
+
import com.moczul.ok2curl.modifier.HeaderModifier
|
|
5
|
+
|
|
6
|
+
class BasicAuthorizationHeaderModifier(private val base64Decoder: Base64Decoder) : HeaderModifier {
|
|
7
|
+
override fun matches(header: Header): Boolean {
|
|
8
|
+
return "Authorization" == header.name && header.value.startsWith("Basic")
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
override fun modify(header: Header): Header {
|
|
12
|
+
val valueToDecode = header.value.replace("Basic", "").trim()
|
|
13
|
+
val decodedHeaderValue = base64Decoder.decode(valueToDecode)
|
|
14
|
+
return Header(name = header.name, value = decodedHeaderValue)
|
|
15
|
+
}
|
|
16
|
+
}
|
package/ios/SecuritySuite.swift
CHANGED
|
@@ -136,6 +136,7 @@ class SecuritySuite: NSObject {
|
|
|
136
136
|
|
|
137
137
|
let sslPinning = SSLPinning(data: data)
|
|
138
138
|
|
|
139
|
+
let startTime = Date()
|
|
139
140
|
var request = URLRequest(url: URL(string: url as String)!)
|
|
140
141
|
|
|
141
142
|
if data["method"] != nil { request.httpMethod = data["method"] as! String } else { request.httpMethod = "POST" }
|
|
@@ -158,6 +159,8 @@ class SecuritySuite: NSObject {
|
|
|
158
159
|
]
|
|
159
160
|
if errorString == nil && responseCode! < 400 {
|
|
160
161
|
result["response"] = responseString
|
|
162
|
+
result["curl"] = request.cURL();
|
|
163
|
+
result["duration"] = "\(Int(Date().timeIntervalSince(startTime) * 1000))ms"
|
|
161
164
|
result["responseJSON"] = responseJSON
|
|
162
165
|
callback([result, NSNull()])
|
|
163
166
|
} else {
|
package/ios/SslPinning.swift
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
1
3
|
@available(iOS 13.0, *)
|
|
2
4
|
class SSLPinning: NSObject, URLSessionDelegate {
|
|
3
5
|
var validDomains: [String] = []
|
|
@@ -7,7 +9,8 @@ class SSLPinning: NSObject, URLSessionDelegate {
|
|
|
7
9
|
init(data: NSDictionary) {
|
|
8
10
|
if let certs = data["certificates"] as? [String] {
|
|
9
11
|
for cert in certs {
|
|
10
|
-
|
|
12
|
+
var filteredCert = cert.replacingOccurrences(of: "sha256/", with: "", options: .caseInsensitive, range: nil)
|
|
13
|
+
intermediateKeyHashes.append(Data(base64Encoded: filteredCert)!)
|
|
11
14
|
}
|
|
12
15
|
}
|
|
13
16
|
|
|
@@ -193,3 +196,29 @@ extension NSRegularExpression {
|
|
|
193
196
|
}
|
|
194
197
|
}
|
|
195
198
|
}
|
|
199
|
+
|
|
200
|
+
extension URLRequest {
|
|
201
|
+
public func cURL(pretty: Bool = false) -> String {
|
|
202
|
+
let newLine = pretty ? "\\\n" : ""
|
|
203
|
+
let method = (pretty ? "--request " : "-X ") + "\(self.httpMethod ?? "GET") \(newLine)"
|
|
204
|
+
let url: String = (pretty ? "--url " : "") + "\'\(self.url?.absoluteString ?? "")\' \(newLine)"
|
|
205
|
+
|
|
206
|
+
var cURL = "curl "
|
|
207
|
+
var header = ""
|
|
208
|
+
var data: String = ""
|
|
209
|
+
|
|
210
|
+
if let httpHeaders = self.allHTTPHeaderFields, httpHeaders.keys.count > 0 {
|
|
211
|
+
for (key,value) in httpHeaders {
|
|
212
|
+
header += (pretty ? "--header " : "-H ") + "\'\(key): \(value)\' \(newLine)"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if let bodyData = self.httpBody, let bodyString = String(data: bodyData, encoding: .utf8), !bodyString.isEmpty {
|
|
217
|
+
data = "--data '\(bodyString)'"
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
cURL += method + url + header + data
|
|
221
|
+
|
|
222
|
+
return cURL
|
|
223
|
+
}
|
|
224
|
+
}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = exports.decryptBySharedKey = exports.decrypt = exports.SecureStorage = void 0;
|
|
6
|
+
exports.default = exports.decryptBySharedKey = exports.decrypt = exports.SecureStorage = exports.SSEventEmitter = void 0;
|
|
7
7
|
exports.deviceHasSecurityRisk = deviceHasSecurityRisk;
|
|
8
8
|
exports.encryptBySharedKey = exports.encrypt = void 0;
|
|
9
9
|
exports.fetch = fetch;
|
|
@@ -12,6 +12,7 @@ var _reactNative = require("react-native");
|
|
|
12
12
|
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
13
13
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
14
14
|
var _helpers = require("./helpers");
|
|
15
|
+
var _events = require("events");
|
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
17
|
const LINKING_ERROR = `The package 'react-native-security-suite' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
|
17
18
|
ios: "- You have run 'pod install'\n",
|
|
@@ -177,6 +178,12 @@ exports.SecureStorage = SecureStorage;
|
|
|
177
178
|
function fetch(url, options) {
|
|
178
179
|
return new Promise((resolve, reject) => {
|
|
179
180
|
SecuritySuite.fetch(url, options, (result, error) => {
|
|
181
|
+
SSEventEmitter.emit('fetch', {
|
|
182
|
+
url,
|
|
183
|
+
options,
|
|
184
|
+
result,
|
|
185
|
+
error
|
|
186
|
+
});
|
|
180
187
|
try {
|
|
181
188
|
if (error === null) {
|
|
182
189
|
result.json = () => (0, _helpers.jsonParse)(result.response);
|
|
@@ -190,7 +197,8 @@ function fetch(url, options) {
|
|
|
190
197
|
message: errorJson === null || errorJson === void 0 ? void 0 : errorJson.message,
|
|
191
198
|
code: errorJson === null || errorJson === void 0 ? void 0 : errorJson.code,
|
|
192
199
|
status: error === null || error === void 0 ? void 0 : error.status,
|
|
193
|
-
url: error === null || error === void 0 ? void 0 : error.url
|
|
200
|
+
url: error === null || error === void 0 ? void 0 : error.url,
|
|
201
|
+
curl: error === null || error === void 0 ? void 0 : error.curl
|
|
194
202
|
});
|
|
195
203
|
}
|
|
196
204
|
} catch (e) {
|
|
@@ -202,6 +210,8 @@ function fetch(url, options) {
|
|
|
202
210
|
function deviceHasSecurityRisk() {
|
|
203
211
|
return SecuritySuite.deviceHasSecurityRisk();
|
|
204
212
|
}
|
|
213
|
+
const SSEventEmitter = new _events.EventEmitter();
|
|
214
|
+
exports.SSEventEmitter = SSEventEmitter;
|
|
205
215
|
var _default = SecuritySuite;
|
|
206
216
|
exports.default = _default;
|
|
207
217
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_asyncStorage","_interopRequireDefault","_lodash","_helpers","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","SecuritySuite","NativeModules","Proxy","get","Error","getPublicKey","exports","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","AsyncStorage","e","getItem","encryptedData","mergeItem","data","isJsonString","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","jsonParse","response","errorJson","path","message","code","status","deviceHasSecurityRisk","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_asyncStorage","_interopRequireDefault","_lodash","_helpers","_events","obj","__esModule","default","LINKING_ERROR","Platform","select","ios","SecuritySuite","NativeModules","Proxy","get","Error","getPublicKey","exports","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","AsyncStorage","e","getItem","encryptedData","mergeItem","data","isJsonString","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","SSEventEmitter","emit","json","jsonParse","response","errorJson","path","message","code","status","curl","deviceHasSecurityRisk","EventEmitter","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -2,6 +2,7 @@ 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, jsonParse } from './helpers';
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
5
6
|
const LINKING_ERROR = `The package 'react-native-security-suite' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
|
|
6
7
|
ios: "- You have run 'pod install'\n",
|
|
7
8
|
default: ''
|
|
@@ -158,6 +159,12 @@ export const SecureStorage = {
|
|
|
158
159
|
export function fetch(url, options) {
|
|
159
160
|
return new Promise((resolve, reject) => {
|
|
160
161
|
SecuritySuite.fetch(url, options, (result, error) => {
|
|
162
|
+
SSEventEmitter.emit('fetch', {
|
|
163
|
+
url,
|
|
164
|
+
options,
|
|
165
|
+
result,
|
|
166
|
+
error
|
|
167
|
+
});
|
|
161
168
|
try {
|
|
162
169
|
if (error === null) {
|
|
163
170
|
result.json = () => jsonParse(result.response);
|
|
@@ -171,7 +178,8 @@ export function fetch(url, options) {
|
|
|
171
178
|
message: errorJson === null || errorJson === void 0 ? void 0 : errorJson.message,
|
|
172
179
|
code: errorJson === null || errorJson === void 0 ? void 0 : errorJson.code,
|
|
173
180
|
status: error === null || error === void 0 ? void 0 : error.status,
|
|
174
|
-
url: error === null || error === void 0 ? void 0 : error.url
|
|
181
|
+
url: error === null || error === void 0 ? void 0 : error.url,
|
|
182
|
+
curl: error === null || error === void 0 ? void 0 : error.curl
|
|
175
183
|
});
|
|
176
184
|
}
|
|
177
185
|
} catch (e) {
|
|
@@ -183,5 +191,6 @@ export function fetch(url, options) {
|
|
|
183
191
|
export function deviceHasSecurityRisk() {
|
|
184
192
|
return SecuritySuite.deviceHasSecurityRisk();
|
|
185
193
|
}
|
|
194
|
+
export const SSEventEmitter = new EventEmitter();
|
|
186
195
|
export default SecuritySuite;
|
|
187
196
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","AsyncStorage","_","isJsonString","jsonParse","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","path","message","code","status","deviceHasSecurityRisk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,OAAOC,YAAY,MAAM,2CAA2C;AACpE,OAAOC,CAAC,MAAM,QAAQ;AACtB,SAASC,YAAY,EAAEC,SAAS,QAAQ,WAAW;
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","AsyncStorage","_","isJsonString","jsonParse","EventEmitter","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","SSEventEmitter","emit","json","response","errorJson","path","message","code","status","curl","deviceHasSecurityRisk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import type { ErrorResponse, Options, SuccessResponse } from 'react-native-security-suite';
|
|
3
|
+
import { EventEmitter } from 'events';
|
|
2
4
|
declare const SecuritySuite: any;
|
|
3
5
|
export declare const getPublicKey: () => Promise<string>;
|
|
4
6
|
export declare const getSharedKey: (serverPublicKey: string) => Promise<string>;
|
|
@@ -21,5 +23,6 @@ export declare const SecureStorage: {
|
|
|
21
23
|
};
|
|
22
24
|
export declare function fetch(url: string, options: Options): Promise<SuccessResponse | ErrorResponse>;
|
|
23
25
|
export declare function deviceHasSecurityRisk(): Promise<boolean>;
|
|
26
|
+
export declare const SSEventEmitter: EventEmitter;
|
|
24
27
|
export default SecuritySuite;
|
|
25
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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;
|
|
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;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,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,CA+B1C;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAExD;AAED,eAAO,MAAM,cAAc,cAAqB,CAAC;AAEjD,eAAe,aAAa,CAAC"}
|
package/package.json
CHANGED
package/src/index.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
Options,
|
|
8
8
|
SuccessResponse,
|
|
9
9
|
} from 'react-native-security-suite';
|
|
10
|
+
import { EventEmitter } from 'events';
|
|
10
11
|
|
|
11
12
|
const LINKING_ERROR =
|
|
12
13
|
`The package 'react-native-security-suite' doesn't seem to be linked. Make sure: \n\n` +
|
|
@@ -231,6 +232,8 @@ export function fetch(
|
|
|
231
232
|
url,
|
|
232
233
|
options,
|
|
233
234
|
(result: SuccessResponse, error: ErrorResponse) => {
|
|
235
|
+
SSEventEmitter.emit('fetch', { url, options, result, error });
|
|
236
|
+
|
|
234
237
|
try {
|
|
235
238
|
if (error === null) {
|
|
236
239
|
result.json = () => jsonParse(result.response);
|
|
@@ -245,6 +248,7 @@ export function fetch(
|
|
|
245
248
|
code: errorJson?.code,
|
|
246
249
|
status: error?.status,
|
|
247
250
|
url: error?.url,
|
|
251
|
+
curl: error?.curl,
|
|
248
252
|
});
|
|
249
253
|
}
|
|
250
254
|
} catch (e) {
|
|
@@ -259,4 +263,6 @@ export function deviceHasSecurityRisk(): Promise<boolean> {
|
|
|
259
263
|
return SecuritySuite.deviceHasSecurityRisk();
|
|
260
264
|
}
|
|
261
265
|
|
|
266
|
+
export const SSEventEmitter = new EventEmitter();
|
|
267
|
+
|
|
262
268
|
export default SecuritySuite;
|