@umutcansu/react-native-pinvault 2.8.0 → 2.8.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/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.8.1 — 2026-10-15
4
+
5
+ ### Changed
6
+
7
+ - **iOS: a pinned session notices when its trust check was skipped.** The
8
+ generic certificate-validation killers answer URLSession's server-trust
9
+ challenge before the library's delegate; such a connection is now refused
10
+ (`fetch` rejects with an SSL handshake error), a `wss://` socket cancelled,
11
+ and the host reported as `hooking_framework` evidence `tls-unverified:<host>`.
12
+ Depends on PinVault 2.8.1 (Swift package tag `v2.8.1`).
13
+
3
14
  ## 2.8.0 — 2026-10-15
4
15
 
5
16
  ### Changed
package/README.md CHANGED
@@ -29,9 +29,9 @@ npm install @umutcansu/react-native-pinvault
29
29
  cd ios && pod install
30
30
  ```
31
31
 
32
- The native libraries come with it, at the package's own version: npm 2.8.0
33
- uses `io.github.umutcansu:pinvault:2.8.0` from Maven Central and the Swift
34
- package at tag `v2.8.0`. The New Architecture must stay on (React Native's
32
+ The native libraries come with it, at the package's own version: npm 2.8.1
33
+ uses `io.github.umutcansu:pinvault:2.8.1` from Maven Central and the Swift
34
+ package at tag `v2.8.1`. The New Architecture must stay on (React Native's
35
35
  default since 0.76).
36
36
 
37
37
  **iOS.** The pod depends on the PinVault Swift package through React Native's
@@ -265,7 +265,7 @@ parsed as strictly; a broken file rejects `start` with `E_INVALID_CONFIG`
265
265
  with `E_INVALID_CONFIG` naming the field;
266
266
  - in a release build a declared block must carry its anchors: `bootstrapPins`
267
267
  (or `allowUnpinnedConfigApi`), `signaturePublicKeys` (or `allowUnsigned`) and
268
- its `url` (2.7.1+: the device's token and identity go there); a block that
268
+ its `url` (2.8.0+: the device's token and identity go there); a block that
269
269
  only names itself rejects `start` — otherwise the bundle would supply them;
270
270
  - `allowUnsigned`, `allowUnpinnedConfigApi` and `allowServerGeneratedKey` from
271
271
  JS are refused unless the file allows them for that block; a release build
@@ -275,13 +275,13 @@ parsed as strictly; a broken file rejects `start` with `E_INVALID_CONFIG`
275
275
  - a block's `url`, `enrollmentUrl`, `renewalUrl`, `tokenHosts` and
276
276
  `clientCertHosts` are fixed where the file gives them (where the block talks to, and who gets its token and identity),
277
277
  and `attestation: true` / `proofOfPossession: true` there cannot be turned off from JS;
278
- in a release build JS may give `enrollmentUrl`, `renewalUrl` (2.7.1+),
278
+ in a release build JS may give `enrollmentUrl`, `renewalUrl` (2.8.0+),
279
279
  `clientCertHosts` and `tokenHosts` only where the file names them (the bundle
280
280
  cannot hand the device's identity or its `PinVault-Token` to another host; the
281
281
  library presents the identity to the block's url, enrollment and renewal
282
282
  addresses, and its default sends the token to the block's own Config API only);
283
283
  - iOS `ios.resolve` (where a pinned host's connection goes) is fixed where the
284
- file gives it, and a release build takes it only from the file (2.7.1+);
284
+ file gives it, and a release build takes it only from the file (2.8.0+);
285
285
  - `require` only tightens: a protection it turns on stays on whatever JS says,
286
286
  its `requireCaTrust` hosts are added to JS's, the expected signer / bundle /
287
287
  team ids and iOS `userAuthStrength` are fixed, and `expiredConfigGraceSeconds`
@@ -462,7 +462,10 @@ as one more signal. The decisive check is server-side attestation
462
462
  - **NETWORK** — pinned native path only; no unpinned fallback; `https` → `http`
463
463
  redirects are not followed; RN's own fetch / XHR / images / WebSocket are pinned on
464
464
  both platforms, fail closed before `start`, and a replaced
465
- hook is detected.
465
+ hook is detected. On iOS (2.8.1+) a TLS connection whose certificate never
466
+ reached the library's check (an "SSL kill switch" tweak answered it first) is
467
+ refused and reported in the attestation report (`hooking_framework`,
468
+ `tls-unverified:<host>`).
466
469
  - **Trust anchors** — release builds take the relaxations only from the native
467
470
  security file; with the file, JS cannot change pins, keys or scopes.
468
471
  - **STORAGE** — the plugin stores nothing in JS (no AsyncStorage); tokens live
@@ -4,7 +4,7 @@ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
4
 
5
5
  # PinVault for iOS is a Swift package (Package.swift at the repository root,
6
6
  # product "PinVault"). React Native's spm_dependency adds it to the Pods project:
7
- # - consumers: the git URL at the tag of this package's version (v2.8.0);
7
+ # - consumers: the git URL at the tag of this package's version (v2.8.1);
8
8
  # - development: PINVAULT_IOS_PACKAGE_PATH = a PinVault checkout (the sample's
9
9
  # Podfile sets it to this repository), the counterpart of pinvault.localPath.
10
10
  pinvault_url = "https://github.com/umutcansu/PinVault.git"
@@ -9,7 +9,7 @@ buildscript {
9
9
  kotlinVersion: "2.2.0",
10
10
  minSdkVersion: 24,
11
11
  compileSdkVersion: 36,
12
- pinvaultVersion: "2.8.0",
12
+ pinvaultVersion: "2.8.1",
13
13
  ]
14
14
  ext.pinvaultRnExt = { prop ->
15
15
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : PinVaultRN[prop]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umutcansu/react-native-pinvault",
3
- "version": "2.8.0",
3
+ "version": "2.8.1",
4
4
  "description": "PinVault for React Native: dynamic certificate pinning with signed remote configs, mTLS enrollment and signed vault files, as a thin bridge over the native PinVault libraries",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",