@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 +11 -0
- package/README.md +10 -7
- package/RNPinVault.podspec +1 -1
- package/android/build.gradle +1 -1
- package/package.json +1 -1
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.
|
|
33
|
-
uses `io.github.umutcansu:pinvault:2.8.
|
|
34
|
-
package at tag `v2.8.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
package/RNPinVault.podspec
CHANGED
|
@@ -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.
|
|
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"
|
package/android/build.gradle
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umutcansu/react-native-pinvault",
|
|
3
|
-
"version": "2.8.
|
|
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",
|