freerasp-react-native 2.0.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +61 -39
  2. package/android/build.gradle +7 -3
  3. package/android/gradle.properties +1 -1
  4. package/android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt +4 -0
  5. package/example/android/app/build.gradle +9 -1
  6. package/example/android/build.gradle +1 -1
  7. package/example/ios/Podfile +5 -0
  8. package/example/src/App.tsx +5 -5
  9. package/example/src/checks.ts +3 -4
  10. package/ios/FreeraspReactNative.swift +11 -8
  11. package/ios/TalsecRuntime.xcframework/Info.plist +5 -5
  12. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  13. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +1 -1
  14. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Info.plist +0 -0
  15. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios.abi.json +21 -14
  16. package/ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/TalsecRuntime +0 -0
  17. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/CurlWrapper.h +1 -1
  18. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/TalsecRuntime-Swift.h +2 -2
  19. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Info.plist +0 -0
  20. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/arm64-apple-ios-simulator.abi.json +21 -14
  21. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Modules/TalsecRuntime.swiftmodule/x86_64-apple-ios-simulator.abi.json +21 -14
  22. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/TalsecRuntime +0 -0
  23. package/ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/_CodeSignature/CodeResources +13 -13
  24. package/lib/commonjs/index.js +3 -0
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/module/index.js +4 -1
  27. package/lib/module/index.js.map +1 -1
  28. package/lib/typescript/index.d.ts +1 -1
  29. package/lib/typescript/index.d.ts.map +1 -1
  30. package/package.json +2 -2
  31. package/src/index.tsx +5 -1
  32. package/example/ios/Podfile.lock +0 -590
package/README.md CHANGED
@@ -94,7 +94,19 @@ or
94
94
 
95
95
  ### Android
96
96
 
97
- _All dependencies of freeRASP for Android are resolved automatically._
97
+ freeRASP for Android requires a minimum **SDK** level of **23**. React Native projects, by default, support even lower levels of minimum SDK. This creates an inconsistency we must solve by updating the minimum SDK level of the application:
98
+
99
+ 1. From the root of your project, go to **android > build.gradle**.
100
+ 1. In **buildscript**, update **minSdkVersion** to at least **23** (Android 6.0) or higher.
101
+
102
+ ```groovy
103
+ buildscript {
104
+ ext {
105
+ minSdkVersion 23
106
+ ...
107
+ }
108
+ }
109
+ ```
98
110
 
99
111
  ### iOS
100
112
 
@@ -222,9 +234,9 @@ const actions = {
222
234
  deviceID: () => {
223
235
  console.log('deviceID');
224
236
  },
225
- // iOS only
226
- passcodeChange: () => {
227
- console.log('passcodeChange');
237
+ // Android only
238
+ obfuscationIssues: () => {
239
+ console.log('obfuscationIssues');
228
240
  },
229
241
  };
230
242
 
@@ -273,23 +285,15 @@ _You can override this default behavior by extending the `actions` object with `
273
285
 
274
286
  ## Step 5: Additional note about obfuscation
275
287
 
276
- The freeRASP contains public API, so the integration process is as simple as possible. Unfortunately, this public API also creates opportunities for the attacker to use publicly available information to interrupt freeRASP operations or modify your custom reaction implementation in threat callbacks. In order for freeRASP to be as effective as possible, it is highly recommended to apply obfuscation to the final package/application, making the public API more difficult to find and also partially randomized for each application so it cannot be automatically abused by generic hooking scripts.
288
+ The freeRASP contains public API, so the integration process is as simple as possible. Unfortunately, this public API also creates opportunities for the attacker to use publicly available information to interrupt freeRASP operations or modify your custom reaction implementation in threat callbacks. In order to provide as much protection as possible, freeRASP obfuscates its source code. However, if all other code is not obfuscated, one can easily deduct that the obfuscated code belongs to a security library. We, therefore, encourage you to apply code obfuscation to your app, making the public API more difficult to find and also partially randomized for each application so it cannot be automatically abused by generic hooking scripts.
277
289
 
278
- ### Android
290
+ Probably the easiest way to obfuscate your app is via code minification, a technique that reduces the size of the compiled code by removing unnecessary characters, whitespace, and renaming variables and functions to shorter names. It can be configured for Android devices in **android/app/build.gradle** like so:
279
291
 
280
- The majority of Android projects support code shrinking and obfuscation without any additional need for setup. The owner of the project can define the set of rules that are usually automatically used when the application is built in the release mode. For more information, please visit the official documentation
281
-
282
- - https://developer.android.com/studio/build/shrink-code
283
- - https://www.guardsquare.com/manual/configuration/usage
284
-
285
- You can make sure, that the obfuscation is enabled by checking the value of **minifyEnabled** property in your **module's build.gradle** file.
286
-
287
- ```gradle
292
+ ```groovy
288
293
  android {
289
- ...
290
-
291
294
  buildTypes {
292
295
  release {
296
+ ...
293
297
  minifyEnabled true
294
298
  shrinkResources true
295
299
  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@@ -298,6 +302,15 @@ android {
298
302
  }
299
303
  ```
300
304
 
305
+ Please note that some other modules in your app may rely on reflection, therefore it may be necessary to add corresponding keep rules into proguard-rules.pro file.
306
+
307
+ If there is a problem with the obfuscation, freeRASP will notify you about it via `obfuscationIssues` callback.
308
+
309
+ You can read more about Android obfuscation in the official documentation:
310
+
311
+ - https://developer.android.com/studio/build/shrink-code
312
+ - https://www.guardsquare.com/manual/configuration/usage
313
+
301
314
  ## Step 6: User Data Policies
302
315
 
303
316
  See the generic info about freeRASP data collection [here](https://github.com/talsec/Free-RASP-Community/tree/master#data-collection-processing-and-gdpr-compliance).
@@ -400,25 +413,25 @@ freeRASP is freemium software i.e. there is a Fair Usage Policy (FUP) that impos
400
413
  <td colspan=5><strong>Runtime App Self Protection (RASP, app shielding)</strong></td>
401
414
  </tr>
402
415
  <tr>
403
- <td>Advanced root/jailbreak protections</td>
416
+ <td>Advanced root/jailbreak protections (including Magisk)</td>
404
417
  <td>basic</td>
405
418
  <td>advanced</td>
406
419
  </tr>
407
420
  <tr>
408
- <td>Runtime reverse engineering controls
421
+ <td>Runtime reverse engineering controls
409
422
  <ul>
410
- <li>Debug</li>
411
- <li>Emulator</li>
412
- <li>Hooking protections (e.g. Frida)</li>
423
+ <li>Debugger</li>
424
+ <li>Emulator / Simulator</li>
425
+ <li>Hooking and reversing frameworks (e.g. Frida, Magisk, XPosed, Cydia Substrate and more)</li>
413
426
  </ul>
414
427
  </td>
415
428
  <td>basic</td>
416
429
  <td>advanced</td>
417
430
  </tr>
418
431
  <tr>
419
- <td>Runtime integrity controls
432
+ <td>Runtime integrity controls
420
433
  <ul>
421
- <li>Tamper protection</li>
434
+ <li>Tampering protection</li>
422
435
  <li>Repackaging / Cloning protection</li>
423
436
  <li>Device binding protection</li>
424
437
  <li>Unofficial store detection</li>
@@ -428,20 +441,22 @@ freeRASP is freemium software i.e. there is a Fair Usage Policy (FUP) that impos
428
441
  <td>advanced</td>
429
442
  </tr>
430
443
  <tr>
431
- <td>Device OS security status check
444
+ <td>Device OS security status check
432
445
  <ul>
433
446
  <li>HW security module control</li>
434
447
  <li>Screen lock control</li>
448
+ <li>Google Play Services enabled/disabled</li>
449
+ <li>Last security patch update</li>
435
450
  </ul>
436
451
  </td>
437
452
  <td>yes</td>
438
453
  <td>yes</td>
439
454
  </tr>
440
455
  <tr>
441
- <td>UI protection
456
+ <td>UI protection
442
457
  <ul>
443
458
  <li>Overlay protection</li>
444
- <li>Accessibility services protection</li>
459
+ <li>Accessibility services misuse protection</li>
445
460
  </ul>
446
461
  </td>
447
462
  <td>no</td>
@@ -451,12 +466,11 @@ freeRASP is freemium software i.e. there is a Fair Usage Policy (FUP) that impos
451
466
  <td colspan=5><strong>Hardening suite</strong></td>
452
467
  </tr>
453
468
  <tr>
454
- <td>Security hardening suite
455
- <ul>
456
- <li>Customer Data Encryption (local storage)</li>
469
+ <td>Security hardening suite
470
+ <ul>
457
471
  <li>End-to-end encryption</li>
458
472
  <li>Strings protection (e.g. API keys)</li>
459
- <li>Dynamic certificate pinning</li>
473
+ <li>Dynamic TLS certificate pinning</li>
460
474
  </ul>
461
475
  </td>
462
476
  <td>no</td>
@@ -471,33 +485,41 @@ freeRASP is freemium software i.e. there is a Fair Usage Policy (FUP) that impos
471
485
  <td>yes</td>
472
486
  </tr>
473
487
  <tr>
474
- <td colspan=5><strong>Monitoring</strong></td>
488
+ <td colspan=5><strong>Security events data collection, Auditing and Monitoring tools</strong></td>
475
489
  </tr>
476
490
  <tr>
477
- <td>AppSec regular email reporting</td>
491
+ <td>Threat events data collection from SDK</td>
492
+ <td>yes</td>
493
+ <td>configurable</td>
494
+ </tr>
495
+ <tr>
496
+ <td>AppSec regular email reporting service</td>
478
497
  <td>yes (up to 100k devices)</td>
479
498
  <td>yes</td>
480
499
  </tr>
481
500
  <tr>
482
- <td>Data insights and auditing portal</td>
501
+ <td>UI portal for Logging, Data analytics and auditing</td>
483
502
  <td>no</td>
484
503
  <td>yes</td>
485
504
  </tr>
505
+ <tr>
506
+ <td colspan=5><strong>Support and Maintenance</strong></td>
507
+ </tr>
486
508
  <tr>
487
- <td>Embed code to integrate with portal</td>
488
- <td>no</td>
509
+ <td>SLA</td>
510
+ <td>Not committed</td>
489
511
  <td>yes</td>
490
512
  </tr>
491
513
  <tr>
492
- <td>API data access</td>
493
- <td>no</td>
514
+ <td>Maintenance updates</td>
515
+ <td>Not committed</td>
494
516
  <td>yes</td>
495
517
  </tr>
496
518
  <tr>
497
- <td colspan=5><strong>Fair usage policy</strong></td>
519
+ <td colspan=5><strong>Fair usage policy</strong></td>
498
520
  </tr>
499
521
  <tr>
500
- <td>Mentioning of the App name and logo in the marketing communications of Talsec (e.g. "Trusted by" section of the Talsec web or in the social media).</td>
522
+ <td>Mentioning of the App name and logo in the marketing communications of Talsec (e.g. "Trusted by" section on the web).</td>
501
523
  <td>over 100k downloads</td>
502
524
  <td>no</td>
503
525
  </tr>
@@ -33,17 +33,21 @@ def getExtOrIntegerDefault(name) {
33
33
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["FreeraspReactNative_" + name]).toInteger()
34
34
  }
35
35
 
36
+ def getIntegerDefault(name) {
37
+ return (project.properties["FreeraspReactNative_" + name]).toInteger()
38
+ }
39
+
36
40
  android {
37
41
  compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
38
42
 
39
43
  defaultConfig {
40
- minSdkVersion getExtOrIntegerDefault("minSdkVersion")
44
+ minSdkVersion getIntegerDefault("minSdkVersion")
41
45
  targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
42
46
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
43
47
  }
44
48
  buildTypes {
45
49
  release {
46
- minifyEnabled false
50
+ minifyEnabled true
47
51
  }
48
52
  }
49
53
 
@@ -78,7 +82,7 @@ dependencies {
78
82
  //noinspection GradleDynamicVersion
79
83
  implementation "com.facebook.react:react-native"
80
84
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
81
- implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:7.0.0"
85
+ implementation "com.aheaditec.talsec.security:TalsecSecurity-Community-ReactNative:8.0.2"
82
86
  }
83
87
 
84
88
  if (isNewArchitectureEnabled()) {
@@ -1,5 +1,5 @@
1
1
  FreeraspReactNative_kotlinVersion=1.7.0
2
- FreeraspReactNative_minSdkVersion=21
2
+ FreeraspReactNative_minSdkVersion=23
3
3
  FreeraspReactNative_targetSdkVersion=31
4
4
  FreeraspReactNative_compileSdkVersion=31
5
5
  FreeraspReactNative_ndkversion=21.4.7075529
@@ -79,6 +79,10 @@ class FreeraspReactNativeModule(val reactContext: ReactApplicationContext) :
79
79
  sendOngoingPluginResult("deviceBinding", null)
80
80
  }
81
81
 
82
+ override fun onObfuscationIssuesDetected() {
83
+ sendOngoingPluginResult("obfuscationIssues", null)
84
+ }
85
+
82
86
  override fun deviceStateChangeDetected(threatType: String) {
83
87
  sendOngoingPluginResult(threatType, null)
84
88
  }
@@ -97,7 +97,7 @@ def enableSeparateBuildPerCPUArchitecture = false
97
97
  /**
98
98
  * Run Proguard to shrink the Java bytecode in release builds.
99
99
  */
100
- def enableProguardInReleaseBuilds = false
100
+ def enableProguardInReleaseBuilds = true
101
101
 
102
102
  /**
103
103
  * The preferred build flavor of JavaScriptCore.
@@ -226,7 +226,15 @@ android {
226
226
  // Caution! In production, you need to generate your own keystore file.
227
227
  // see https://reactnative.dev/docs/signed-apk-android.
228
228
  signingConfig signingConfigs.debug
229
+ // Enables code shrinking, obfuscation, and optimization for only
230
+ // your project's release build type. Make sure to use a build
231
+ // variant with `debuggable false`.
229
232
  minifyEnabled enableProguardInReleaseBuilds
233
+ // Enables resource shrinking, which is performed by the
234
+ // Android Gradle plugin.
235
+ shrinkResources true
236
+ // Includes the default ProGuard rules files that are packaged with
237
+ // the Android Gradle plugin.
230
238
  proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
231
239
  }
232
240
  }
@@ -3,7 +3,7 @@
3
3
  buildscript {
4
4
  ext {
5
5
  buildToolsVersion = "31.0.0"
6
- minSdkVersion = 21
6
+ minSdkVersion = 23
7
7
  compileSdkVersion = 31
8
8
  targetSdkVersion = 31
9
9
 
@@ -38,6 +38,11 @@ target 'FreeraspReactNativeExample' do
38
38
  # necessary for Mac Catalyst builds
39
39
  :mac_catalyst_enabled => false
40
40
  )
41
+ installer.pods_project.targets.each do |target|
42
+ target.build_configurations.each do |config|
43
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
44
+ end
45
+ end
41
46
  __apply_Xcode_12_5_M1_post_install_workaround(installer)
42
47
  end
43
48
  end
@@ -3,12 +3,12 @@ import * as React from 'react';
3
3
  import { Platform } from 'react-native';
4
4
  import { useFreeRasp } from 'freerasp-react-native';
5
5
  import { DemoApp } from './DemoApp';
6
- import { commonChecks, iosChecks } from './checks';
6
+ import { commonChecks, iosChecks, androidChecks } from './checks';
7
7
 
8
8
  const App = () => {
9
9
  const [appChecks, setAppChecks] = React.useState([
10
10
  ...commonChecks,
11
- ...(Platform.OS === 'ios' ? iosChecks : []),
11
+ ...(Platform.OS === 'ios' ? iosChecks : androidChecks),
12
12
  ]);
13
13
 
14
14
  const config = {
@@ -116,11 +116,11 @@ const App = () => {
116
116
  )
117
117
  );
118
118
  },
119
- // iOS only
120
- passcodeChange: () => {
119
+ // Android only
120
+ obfuscationIssues: () => {
121
121
  setAppChecks((currentState) =>
122
122
  currentState.map((threat) =>
123
- threat.name === 'Passcode Change'
123
+ threat.name === 'Obfuscation Issues'
124
124
  ? { ...threat, status: 'nok' }
125
125
  : threat
126
126
  )
@@ -10,7 +10,6 @@ export const commonChecks = [
10
10
  { name: 'Passcode', status: 'ok' },
11
11
  ];
12
12
 
13
- export const iosChecks = [
14
- { name: 'Device ID', status: 'ok' },
15
- { name: 'Passcode Change', status: 'ok' },
16
- ];
13
+ export const iosChecks = [{ name: 'Device ID', status: 'ok' }];
14
+
15
+ export const androidChecks = [{ name: 'Obfuscation Issues', status: 'ok' }];
@@ -48,15 +48,18 @@ class FreeraspReactNative: RCTEventEmitter {
48
48
  }
49
49
 
50
50
  extension SecurityThreatCenter: SecurityThreatHandler {
51
+
52
+
53
+ static let threatEventMap: [String: String] = [
54
+ "missingSecureEnclave": "secureHardwareNotAvailable",
55
+ "device binding": "deviceBinding",
56
+ ]
57
+
51
58
  public func threatDetected(_ securityThreat: TalsecRuntime.SecurityThreat) {
52
- // It is better to implement security reactions (e.g. killing the app) here.
53
- switch securityThreat.rawValue {
54
- case "missingSecureEnclave":
55
- FreeraspReactNative.shared!.sendEvent(withName: "secureHardwareNotAvailable", body: "secureHardwareNotAvailable")
56
- case "device binding":
57
- FreeraspReactNative.shared!.sendEvent(withName: "deviceBinding", body: "deviceBinding")
58
- default:
59
- FreeraspReactNative.shared!.sendEvent(withName: securityThreat.rawValue, body: securityThreat.rawValue)
59
+ let threatName = SecurityThreatCenter.threatEventMap[securityThreat.rawValue] ?? securityThreat.rawValue
60
+ if (threatName == "passcodeChange") {
61
+ return
60
62
  }
63
+ FreeraspReactNative.shared!.sendEvent(withName: threatName, body: threatName)
61
64
  }
62
65
  }
@@ -6,30 +6,30 @@
6
6
  <array>
7
7
  <dict>
8
8
  <key>LibraryIdentifier</key>
9
- <string>ios-arm64</string>
9
+ <string>ios-arm64_x86_64-simulator</string>
10
10
  <key>LibraryPath</key>
11
11
  <string>TalsecRuntime.framework</string>
12
12
  <key>SupportedArchitectures</key>
13
13
  <array>
14
14
  <string>arm64</string>
15
+ <string>x86_64</string>
15
16
  </array>
16
17
  <key>SupportedPlatform</key>
17
18
  <string>ios</string>
19
+ <key>SupportedPlatformVariant</key>
20
+ <string>simulator</string>
18
21
  </dict>
19
22
  <dict>
20
23
  <key>LibraryIdentifier</key>
21
- <string>ios-arm64_x86_64-simulator</string>
24
+ <string>ios-arm64</string>
22
25
  <key>LibraryPath</key>
23
26
  <string>TalsecRuntime.framework</string>
24
27
  <key>SupportedArchitectures</key>
25
28
  <array>
26
29
  <string>arm64</string>
27
- <string>x86_64</string>
28
30
  </array>
29
31
  <key>SupportedPlatform</key>
30
32
  <string>ios</string>
31
- <key>SupportedPlatformVariant</key>
32
- <string>simulator</string>
33
33
  </dict>
34
34
  </array>
35
35
  <key>CFBundlePackageType</key>
@@ -16,7 +16,7 @@
16
16
  #include <unistd.h>
17
17
  #include <string.h>
18
18
 
19
- struct rELTKeUlNBtW {
19
+ struct MRBKHkNLymuB {
20
20
  char *memory;
21
21
  size_t size;
22
22
  CURLcode ret;
@@ -281,7 +281,7 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
281
281
 
282
282
  #if defined(__OBJC__)
283
283
 
284
- SWIFT_EXTERN void __vOXbpNRhpnChjnGnjZhWdRZ(void);
284
+ SWIFT_EXTERN void __gEpMdsSyQvqeuMjBPsfuvPt(void);
285
285
 
286
286
  #endif
287
287
  #if defined(__cplusplus)
@@ -2610,7 +2610,7 @@
2610
2610
  "kind": "StringLiteral",
2611
2611
  "offset": 7218,
2612
2612
  "length": 7,
2613
- "value": "\"5.0.1\""
2613
+ "value": "\"5.1.0\""
2614
2614
  },
2615
2615
  {
2616
2616
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/DynamicConfiguration\/DefaultConfig.swift",
@@ -5156,91 +5156,98 @@
5156
5156
  {
5157
5157
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5158
5158
  "kind": "BooleanLiteral",
5159
- "offset": 7037,
5159
+ "offset": 6707,
5160
5160
  "length": 5,
5161
5161
  "value": "false"
5162
5162
  },
5163
5163
  {
5164
5164
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5165
5165
  "kind": "Dictionary",
5166
- "offset": 7052,
5166
+ "offset": 6722,
5167
5167
  "length": 3,
5168
5168
  "value": "[]"
5169
5169
  },
5170
5170
  {
5171
5171
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5172
5172
  "kind": "BooleanLiteral",
5173
- "offset": 7396,
5173
+ "offset": 7066,
5174
5174
  "length": 5,
5175
5175
  "value": "false"
5176
5176
  },
5177
5177
  {
5178
5178
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5179
5179
  "kind": "Dictionary",
5180
- "offset": 7411,
5180
+ "offset": 7081,
5181
5181
  "length": 3,
5182
5182
  "value": "[]"
5183
5183
  },
5184
5184
  {
5185
5185
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5186
5186
  "kind": "BooleanLiteral",
5187
- "offset": 8292,
5187
+ "offset": 7962,
5188
5188
  "length": 5,
5189
5189
  "value": "false"
5190
5190
  },
5191
5191
  {
5192
5192
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5193
5193
  "kind": "Dictionary",
5194
- "offset": 8307,
5194
+ "offset": 7977,
5195
5195
  "length": 3,
5196
5196
  "value": "[]"
5197
5197
  },
5198
5198
  {
5199
5199
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5200
5200
  "kind": "BooleanLiteral",
5201
- "offset": 9294,
5201
+ "offset": 8964,
5202
5202
  "length": 4,
5203
5203
  "value": "true"
5204
5204
  },
5205
5205
  {
5206
5206
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5207
5207
  "kind": "BooleanLiteral",
5208
- "offset": 9892,
5208
+ "offset": 9562,
5209
5209
  "length": 5,
5210
5210
  "value": "false"
5211
5211
  },
5212
5212
  {
5213
5213
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5214
5214
  "kind": "BooleanLiteral",
5215
- "offset": 9932,
5215
+ "offset": 9602,
5216
5216
  "length": 5,
5217
5217
  "value": "false"
5218
5218
  },
5219
5219
  {
5220
5220
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5221
5221
  "kind": "BooleanLiteral",
5222
- "offset": 10007,
5222
+ "offset": 9677,
5223
5223
  "length": 4,
5224
5224
  "value": "true"
5225
5225
  },
5226
5226
  {
5227
5227
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5228
5228
  "kind": "BooleanLiteral",
5229
- "offset": 10098,
5229
+ "offset": 9768,
5230
5230
  "length": 4,
5231
5231
  "value": "true"
5232
5232
  },
5233
5233
  {
5234
5234
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5235
5235
  "kind": "BooleanLiteral",
5236
- "offset": 10139,
5236
+ "offset": 9809,
5237
5237
  "length": 4,
5238
5238
  "value": "true"
5239
5239
  },
5240
+ {
5241
+ "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5242
+ "kind": "StringLiteral",
5243
+ "offset": 11416,
5244
+ "length": 2,
5245
+ "value": "\"\""
5246
+ },
5240
5247
  {
5241
5248
  "filePath": "\/Users\/testing\/builds\/82aA3BrM\/0\/ahe_security_lib\/Talsec_iOS_Security_Library\/Talsec\/TalsecRuntime\/Classes\/Runtime\/TalsecRuntime.swift",
5242
5249
  "kind": "BooleanLiteral",
5243
- "offset": 11086,
5250
+ "offset": 11530,
5244
5251
  "length": 4,
5245
5252
  "value": "true"
5246
5253
  }
@@ -16,7 +16,7 @@
16
16
  #include <unistd.h>
17
17
  #include <string.h>
18
18
 
19
- struct rELTKeUlNBtW {
19
+ struct MRBKHkNLymuB {
20
20
  char *memory;
21
21
  size_t size;
22
22
  CURLcode ret;
@@ -281,7 +281,7 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
281
281
 
282
282
  #if defined(__OBJC__)
283
283
 
284
- SWIFT_EXTERN void __vOXbpNRhpnChjnGnjZhWdRZ(void);
284
+ SWIFT_EXTERN void __gEpMdsSyQvqeuMjBPsfuvPt(void);
285
285
 
286
286
  #endif
287
287
  #if defined(__cplusplus)
@@ -574,7 +574,7 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
574
574
 
575
575
  #if defined(__OBJC__)
576
576
 
577
- SWIFT_EXTERN void __vOXbpNRhpnChjnGnjZhWdRZ(void);
577
+ SWIFT_EXTERN void __gEpMdsSyQvqeuMjBPsfuvPt(void);
578
578
 
579
579
  #endif
580
580
  #if defined(__cplusplus)