@umutcansu/react-native-pinvault 2.3.2 → 2.4.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 +69 -0
- package/README.md +116 -36
- package/RNPinVault.podspec +1 -1
- package/android/build.gradle +1 -1
- package/android/consumer-rules.pro +3 -0
- package/android/src/main/java/io/github/umutcansu/pinvault/reactnative/ConfigParser.kt +150 -29
- package/android/src/main/java/io/github/umutcansu/pinvault/reactnative/NativeSecurity.kt +134 -5
- package/android/src/main/java/io/github/umutcansu/pinvault/reactnative/PinVaultModule.kt +12 -3
- package/android/src/main/java/io/github/umutcansu/pinvault/reactnative/PinVaultNetworking.kt +116 -16
- package/ios/Core/ConfigParser.swift +216 -32
- package/ios/Core/NativeSecurity.swift +127 -6
- package/ios/PinVaultBridge.swift +24 -7
- package/ios/PinVaultReactNetworking.swift +16 -0
- package/ios/RNPinVault.mm +6 -0
- package/ios/RNPinVaultWebSocketPinning.h +21 -0
- package/ios/RNPinVaultWebSocketPinning.mm +170 -0
- package/lib/module/index.js +21 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +14 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +15 -2
- package/src/types.ts +14 -3
|
@@ -7,13 +7,31 @@
|
|
|
7
7
|
// { "configApis": [{ "id", "bootstrapPins", "signaturePublicKeys", "requiredSignatures",
|
|
8
8
|
// "recoveryPublicKeys", "requiredRecoverySignatures", "serverScope",
|
|
9
9
|
// "clientCaPins", "allowUnsigned", "allowUnpinnedConfigApi",
|
|
10
|
-
// "allowServerGeneratedKey"
|
|
11
|
-
//
|
|
10
|
+
// "allowServerGeneratedKey", "url", "attestation", "tokenHosts", "proofOfPossession",
|
|
11
|
+
// "clientCertHosts",
|
|
12
|
+
// "enrollmentUrl", "renewalUrl" }],
|
|
13
|
+
// "staticPins": { "pins": [...], "version": 1 },
|
|
14
|
+
// "require": { "requireUnlockedDevice", "requireHardwareBackedKeys",
|
|
15
|
+
// "requirePinnedReactNativeNetworking", "managedTrustRoots",
|
|
16
|
+
// "wipeVaultFilesOnRevocation", "requireCaTrust", "expectedBundleIds",
|
|
17
|
+
// "expectedTeamIds", "userAuthStrength", "expiredConfigGraceSeconds",
|
|
18
|
+
// "vaultFileMaxOfflineAgeSeconds", "expectedSignerSha256" (Android's, read for the shape) },
|
|
19
|
+
// "vaultFiles": [{ "key", "signaturePublicKey", "encryption", "userAuth", "maxOfflineAgeSeconds" }] }
|
|
12
20
|
//
|
|
13
21
|
// When the file is there: every JS Config API (and JS `staticPins`) must be
|
|
14
22
|
// declared in it; a declared field is the value (JS may omit or repeat it, a
|
|
15
|
-
// different value is refused); the three relaxations need the file's consent
|
|
16
|
-
//
|
|
23
|
+
// different value is refused); the three relaxations need the file's consent;
|
|
24
|
+
// `attestation: true` and `proofOfPossession: true` cannot be switched off; `require` only tightens (its
|
|
25
|
+
// protections stay on, its `requireCaTrust` hosts are added to JS's, its
|
|
26
|
+
// expected ids are fixed, its grace is the most JS may ask for); `vaultFiles`
|
|
27
|
+
// fixes those files' signature key, encryption and lock, and a JS vault file
|
|
28
|
+
// it does not name is refused.
|
|
29
|
+
//
|
|
30
|
+
// Without it, a release build refuses a config with Config APIs or static
|
|
31
|
+
// pins — the trust anchors would come from JS alone — unless the app's
|
|
32
|
+
// Info.plist says `PinVaultAllowNoNativeSecurityFile` = YES; the three
|
|
33
|
+
// relaxations stay refused from JS then. A release build caps
|
|
34
|
+
// `expiredConfigGrace` at 7 days whatever the file says.
|
|
17
35
|
import Foundation
|
|
18
36
|
import PinVault
|
|
19
37
|
|
|
@@ -32,12 +50,61 @@ public struct NativeSecurity {
|
|
|
32
50
|
let allowUnsigned: Bool
|
|
33
51
|
let allowUnpinnedConfigApi: Bool
|
|
34
52
|
let allowServerGeneratedKey: Bool
|
|
53
|
+
var url: String? = nil
|
|
54
|
+
var attestation = false
|
|
55
|
+
var tokenHosts: [String]? = nil
|
|
56
|
+
var proofOfPossession = false
|
|
57
|
+
var clientCertHosts: [String]? = nil
|
|
58
|
+
var enrollmentUrl: String? = nil
|
|
59
|
+
var renewalUrl: String? = nil
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// The `require` section: protections JS cannot switch off.
|
|
63
|
+
public struct Require {
|
|
64
|
+
var requireUnlockedDevice = false
|
|
65
|
+
var requireHardwareBackedKeys = false
|
|
66
|
+
/// Pins `requirePinnedReactNativeNetworking`: JS cannot set it false (RN-3).
|
|
67
|
+
var requirePinnedReactNativeNetworking = false
|
|
68
|
+
var managedTrustRoots = false
|
|
69
|
+
var wipeVaultFilesOnRevocation = false
|
|
70
|
+
var requireCaTrust: [String]? = nil
|
|
71
|
+
var expectedBundleIds: [String]? = nil
|
|
72
|
+
var expectedTeamIds: [String]? = nil
|
|
73
|
+
/// The most `expiredConfigGrace` JS may set; nil = only the release cap.
|
|
74
|
+
var expiredConfigGraceMs: Int64? = nil
|
|
75
|
+
/// The most `vaultFileMaxOfflineAge` JS may set (and the value when JS sets none).
|
|
76
|
+
var vaultFileMaxOfflineAgeMs: Int64? = nil
|
|
77
|
+
/// `ios.userAuthStrength`, fixed.
|
|
78
|
+
var userAuthStrength: UserAuthStrength? = nil
|
|
35
79
|
}
|
|
36
80
|
|
|
81
|
+
/// One `vaultFiles` entry: what JS cannot change about that file.
|
|
82
|
+
struct VaultFilePolicy {
|
|
83
|
+
let signaturePublicKey: String?
|
|
84
|
+
let encryption: VaultFileEncryption?
|
|
85
|
+
let userAuth: UserAuth?
|
|
86
|
+
/// The most `maxOfflineAge` JS may give this file (and the value when JS gives none).
|
|
87
|
+
var maxOfflineAgeMs: Int64? = nil
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/// The Info.plist key with which an app accepts a release start without the file.
|
|
91
|
+
public static let noFileInfoKey = "PinVaultAllowNoNativeSecurityFile"
|
|
92
|
+
/// The longest `expiredConfigGrace` a release build takes.
|
|
93
|
+
public static let maxReleaseGraceMs: Int64 = 7 * 24 * 3600 * 1000
|
|
94
|
+
static let maxOfflineAgeS: Int64 = 10 * 365 * 24 * 3600
|
|
95
|
+
|
|
37
96
|
/// Where the file came from, for messages.
|
|
38
97
|
public let source: String
|
|
39
98
|
let blocks: [String: Block]
|
|
40
99
|
let staticPins: CertificateConfig?
|
|
100
|
+
var require = Require()
|
|
101
|
+
/// Nil when the file has no `vaultFiles` section.
|
|
102
|
+
var vaultFiles: [String: VaultFilePolicy]? = nil
|
|
103
|
+
|
|
104
|
+
/// True when the app's Info.plist accepts a release start without the file.
|
|
105
|
+
public static func noFileAllowed(_ bundle: Bundle = .main) -> Bool {
|
|
106
|
+
(bundle.object(forInfoDictionaryKey: noFileInfoKey) as? Bool) == true
|
|
107
|
+
}
|
|
41
108
|
|
|
42
109
|
/// The file from `bundle`; nil when the app ships none. A broken file throws `BridgeInputError`.
|
|
43
110
|
public static func load(from bundle: Bundle = .main) throws -> NativeSecurity? {
|
|
@@ -69,16 +136,59 @@ public struct NativeSecurity {
|
|
|
69
136
|
clientCaPins: try b.stringList("clientCaPins", maxItems: 16, maxLength: 128),
|
|
70
137
|
allowUnsigned: try b.bool("allowUnsigned") == true,
|
|
71
138
|
allowUnpinnedConfigApi: try b.bool("allowUnpinnedConfigApi") == true,
|
|
72
|
-
allowServerGeneratedKey: try b.bool("allowServerGeneratedKey") == true
|
|
139
|
+
allowServerGeneratedKey: try b.bool("allowServerGeneratedKey") == true,
|
|
140
|
+
url: try ConfigParser.httpsUrl(b, "url"),
|
|
141
|
+
attestation: try b.bool("attestation") == true,
|
|
142
|
+
tokenHosts: try b.stringList("tokenHosts", maxItems: 64, maxLength: 255),
|
|
143
|
+
proofOfPossession: try b.bool("proofOfPossession") == true,
|
|
144
|
+
clientCertHosts: try b.stringList("clientCertHosts", maxItems: 64, maxLength: 2048),
|
|
145
|
+
enrollmentUrl: try ConfigParser.httpsUrl(b, "enrollmentUrl"),
|
|
146
|
+
renewalUrl: try ConfigParser.httpsUrl(b, "renewalUrl")
|
|
73
147
|
)
|
|
74
148
|
try b.finish()
|
|
75
149
|
}
|
|
76
150
|
let staticPins = try root.object("staticPins").map(ConfigParser.staticPins)
|
|
151
|
+
var require = Require()
|
|
152
|
+
if let r = try root.object("require") {
|
|
153
|
+
require.requireUnlockedDevice = try r.bool("requireUnlockedDevice") == true
|
|
154
|
+
require.requireHardwareBackedKeys = try r.bool("requireHardwareBackedKeys") == true
|
|
155
|
+
require.requirePinnedReactNativeNetworking = try r.bool("requirePinnedReactNativeNetworking") == true
|
|
156
|
+
require.managedTrustRoots = try r.bool("managedTrustRoots") == true
|
|
157
|
+
require.wipeVaultFilesOnRevocation = try r.bool("wipeVaultFilesOnRevocation") == true
|
|
158
|
+
require.requireCaTrust = try r.stringList("requireCaTrust", maxItems: 64, maxLength: 255)
|
|
159
|
+
require.expectedBundleIds = try r.stringList("expectedBundleIds", maxItems: 16, maxLength: 255)
|
|
160
|
+
require.expectedTeamIds = try r.stringList("expectedTeamIds", maxItems: 16, maxLength: 32)
|
|
161
|
+
require.expiredConfigGraceMs = try r.int64("expiredConfigGraceSeconds", min: 0, max: maxReleaseGraceMs / 1000).map { $0 * 1000 }
|
|
162
|
+
require.vaultFileMaxOfflineAgeMs = try r.int64("vaultFileMaxOfflineAgeSeconds", min: 1, max: maxOfflineAgeS).map { $0 * 1000 }
|
|
163
|
+
require.userAuthStrength = try r.enumValue("userAuthStrength", UserAuthStrength.self)
|
|
164
|
+
// Android-only (signer digests): read for the shape, used by the Android side.
|
|
165
|
+
_ = try r.stringList("expectedSignerSha256", maxItems: 16, maxLength: 128)
|
|
166
|
+
try r.finish()
|
|
167
|
+
}
|
|
168
|
+
var vaultFiles: [String: VaultFilePolicy]?
|
|
169
|
+
if let list = try root.objectList("vaultFiles", maxItems: ConfigParser.maxVaultFiles) {
|
|
170
|
+
var map: [String: VaultFilePolicy] = [:]
|
|
171
|
+
for f in list {
|
|
172
|
+
let key = try f.requireString("key", maxLength: 128)
|
|
173
|
+
if map[key] != nil { throw BridgeInputError("\(f.path).key: '\(key)' is declared twice") }
|
|
174
|
+
map[key] = VaultFilePolicy(
|
|
175
|
+
signaturePublicKey: try f.string("signaturePublicKey", maxLength: ConfigParser.keyLength, multiline: true),
|
|
176
|
+
encryption: try f.enumValue("encryption", VaultFileEncryption.self),
|
|
177
|
+
userAuth: try f.enumValue("userAuth", UserAuth.self),
|
|
178
|
+
maxOfflineAgeMs: try f.int64("maxOfflineAgeSeconds", min: 1, max: maxOfflineAgeS).map { $0 * 1000 }
|
|
179
|
+
)
|
|
180
|
+
try f.finish()
|
|
181
|
+
}
|
|
182
|
+
vaultFiles = map
|
|
183
|
+
}
|
|
77
184
|
try root.finish()
|
|
78
185
|
if blocks.isEmpty && staticPins == nil {
|
|
79
186
|
throw BridgeInputError("\(source): declares neither configApis nor staticPins")
|
|
80
187
|
}
|
|
81
|
-
|
|
188
|
+
var native = NativeSecurity(source: source, blocks: blocks, staticPins: staticPins)
|
|
189
|
+
native.require = require
|
|
190
|
+
native.vaultFiles = vaultFiles
|
|
191
|
+
return native
|
|
82
192
|
} catch let e as BridgeInputError {
|
|
83
193
|
throw e.message.hasPrefix("native security file") ? e : BridgeInputError("native security file \(e.message)")
|
|
84
194
|
} catch {
|
|
@@ -149,6 +259,17 @@ enum SecurityPolicy {
|
|
|
149
259
|
try relaxation("allowUnpinnedConfigApi", js.allowUnpinned, block.allowUnpinnedConfigApi)
|
|
150
260
|
try relaxation("allowServerGeneratedKey", js.allowServerKey, block.allowServerGeneratedKey)
|
|
151
261
|
|
|
262
|
+
// A release build's trust anchors come from the file, so a declared block
|
|
263
|
+
// must carry them: a bare `{"id": …}` would hand pins and keys to the bundle.
|
|
264
|
+
if release {
|
|
265
|
+
func anchor(_ key: String, _ relaxation: String) -> BridgeInputError {
|
|
266
|
+
BridgeInputError("\(path).\(key): a release build takes it only from the app's native security file (\(native.source)); "
|
|
267
|
+
+ "declare \(key) for Config API '\(id)' there (or \(relaxation))")
|
|
268
|
+
}
|
|
269
|
+
if block.bootstrapPins == nil && !block.allowUnpinnedConfigApi { throw anchor("bootstrapPins", "allowUnpinnedConfigApi") }
|
|
270
|
+
if block.signaturePublicKeys == nil && !block.allowUnsigned { throw anchor("signaturePublicKeys", "allowUnsigned") }
|
|
271
|
+
}
|
|
272
|
+
|
|
152
273
|
var out = js
|
|
153
274
|
if let n = block.bootstrapPins {
|
|
154
275
|
if let j = js.bootstrapPins, !NativeSecurity.samePins(j, n) { throw fixed("bootstrapPins") }
|
package/ios/PinVaultBridge.swift
CHANGED
|
@@ -29,6 +29,9 @@ public final class PinVaultBridge: NSObject {
|
|
|
29
29
|
/// RNPinVault.mm: whether RCTNetworking hands an https request to
|
|
30
30
|
/// RNPinVaultURLRequestHandler (true), to another handler (false), or nil = unknown.
|
|
31
31
|
@objc public var reactNetworkingIsPinned: (() -> NSNumber?)?
|
|
32
|
+
/// RNPinVault.mm: whether SocketRocket hands every wss socket to PinVault
|
|
33
|
+
/// (RNPinVaultWebSocketPinning); nil = treated as not pinned.
|
|
34
|
+
@objc public var reactWebSocketIsPinned: (() -> Bool)?
|
|
32
35
|
|
|
33
36
|
/// `PinVault.shared.registerBackgroundTask()` for the app's AppDelegate (before launch ends):
|
|
34
37
|
/// the app target does not link the PinVault package itself.
|
|
@@ -92,8 +95,15 @@ public final class PinVaultBridge: NSObject {
|
|
|
92
95
|
return ["exceptionName": mapped["name"] ?? "Error", "exceptionMessage": mapped["message"] ?? NSNull()]
|
|
93
96
|
}
|
|
94
97
|
|
|
98
|
+
/// A vault file key: the library's rule (it names the stored copy's file).
|
|
95
99
|
private static func checkKey(_ key: String) throws {
|
|
96
|
-
|
|
100
|
+
let allowed = key.utf8.allSatisfy { byte in
|
|
101
|
+
(byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x5A) || (byte >= 0x61 && byte <= 0x7A) ||
|
|
102
|
+
byte == 0x2E || byte == 0x5F || byte == 0x2D
|
|
103
|
+
}
|
|
104
|
+
if key.isEmpty || key.utf8.count > 64 || !allowed || key.allSatisfy({ $0 == "." }) {
|
|
105
|
+
throw BridgeInputError("key: must match [A-Za-z0-9._-]{1,64} and not be only dots")
|
|
106
|
+
}
|
|
97
107
|
}
|
|
98
108
|
|
|
99
109
|
private static func checkToken(_ token: String?) throws {
|
|
@@ -129,7 +139,9 @@ public final class PinVaultBridge: NSObject {
|
|
|
129
139
|
bridge.emitConnectionEvent?(bridge.mapper.event(event))
|
|
130
140
|
},
|
|
131
141
|
native: try NativeSecurity.load(),
|
|
132
|
-
release: release
|
|
142
|
+
release: release,
|
|
143
|
+
noFileAllowed: NativeSecurity.noFileAllowed(),
|
|
144
|
+
reactNetworkingEnabled: PinVaultReactNetworking.enabled
|
|
133
145
|
)
|
|
134
146
|
} catch let e as BridgeInputError {
|
|
135
147
|
// The guard of the running config stays: a refused config changes nothing.
|
|
@@ -141,12 +153,14 @@ public final class PinVaultBridge: NSObject {
|
|
|
141
153
|
return
|
|
142
154
|
}
|
|
143
155
|
let pinned = self.reactNetworkingIsPinned?()?.boolValue
|
|
144
|
-
|
|
156
|
+
let socketPinned = self.reactWebSocketIsPinned?() ?? false
|
|
157
|
+
if pinned != true || !socketPinned {
|
|
145
158
|
let why = !PinVaultReactNetworking.enabled
|
|
146
159
|
? "Info.plist PinVaultPinReactNativeNetworking is NO"
|
|
147
160
|
: pinned == nil ? "RCTNetworking's handler could not be checked"
|
|
148
|
-
: "RCTNetworking hands https to another RCTURLRequestHandler"
|
|
149
|
-
|
|
161
|
+
: pinned == false ? "RCTNetworking hands https to another RCTURLRequestHandler"
|
|
162
|
+
: "SocketRocket's WebSocket initializer is not PinVault's (wss is not pinned)"
|
|
163
|
+
NSLog("PinVault: React Native's own fetch / XMLHttpRequest / images / WebSocket may NOT be pinned (\(why)); README, \"Networking\"")
|
|
150
164
|
if parsed.requirePinnedReactNativeNetworking {
|
|
151
165
|
reject("E_NETWORKING_NOT_PINNED", "requirePinnedReactNativeNetworking: \(why)", nil)
|
|
152
166
|
return
|
|
@@ -162,7 +176,10 @@ public final class PinVaultBridge: NSObject {
|
|
|
162
176
|
// INIT, and ENROLL for a pending enrollment the start picks up.
|
|
163
177
|
let result = await Self.guarded([.start, .enroll]) { await PinVault.shared.start(config: parsed.config) }
|
|
164
178
|
Self.locked { Self.startedInProcess = true }
|
|
165
|
-
|
|
179
|
+
// Says whether the anchors came from the native security file (README "Native security file").
|
|
180
|
+
var answer = self.mapper.initResult(result)
|
|
181
|
+
answer["nativeSecurityApplied"] = parsed.nativeSecurityApplied
|
|
182
|
+
resolve(answer)
|
|
166
183
|
}
|
|
167
184
|
}
|
|
168
185
|
}
|
|
@@ -335,7 +352,7 @@ public final class PinVaultBridge: NSObject {
|
|
|
335
352
|
run(resolve, reject) {
|
|
336
353
|
try Self.checkKey(key)
|
|
337
354
|
let enc = try ResultMapper.checkEncoding(encoding)
|
|
338
|
-
return PinVault.shared.loadFile(key).map { ResultMapper.encode($0, enc) }
|
|
355
|
+
return await Self.guarded([.loadFile]) { PinVault.shared.loadFile(key) }.map { ResultMapper.encode($0, enc) }
|
|
339
356
|
}
|
|
340
357
|
}
|
|
341
358
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// requests (fetch, XMLHttpRequest, <Image>) through PinVault's pinned session.
|
|
3
3
|
// The rules live in Core/ReactNetworking.swift.
|
|
4
4
|
import Foundation
|
|
5
|
+
import Security
|
|
5
6
|
import PinVault
|
|
6
7
|
|
|
7
8
|
@objc(RNPinVaultReactNetworking)
|
|
@@ -17,6 +18,21 @@ public final class PinVaultReactNetworking: NSObject {
|
|
|
17
18
|
enabled && ReactNetworking.handles(request)
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
/// The server-trust check of a `wss` WebSocket (RNPinVaultWebSocketPinning.mm):
|
|
22
|
+
/// the decision of every PinVault session for the host and port the socket
|
|
23
|
+
/// was opened for. Fail-closed: before `start`, after a failed one, or
|
|
24
|
+
/// while a restart resets the library, every handshake is refused.
|
|
25
|
+
@objc public static func acceptsWebSocketTrust(_ trust: SecTrust, host: String, port: Int) -> Bool {
|
|
26
|
+
do {
|
|
27
|
+
try PinVault.shared.evaluateServerTrust(trust, host: host, port: port)
|
|
28
|
+
return true
|
|
29
|
+
} catch {
|
|
30
|
+
let (name, message) = PinVaultBridge.describe(error)
|
|
31
|
+
NSLog("PinVault: WebSocket to %@:%ld refused (%@: %@)", host, port, name, message)
|
|
32
|
+
return false
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
20
36
|
/// The request token for RN; nothing reaches the blocks before `resume()`.
|
|
21
37
|
@objc public static func prepare(
|
|
22
38
|
_ request: URLRequest,
|
package/ios/RNPinVault.mm
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
#import <objc/message.h>
|
|
4
4
|
#import <React/RCTBridgeModule.h>
|
|
5
5
|
|
|
6
|
+
#import "RNPinVaultWebSocketPinning.h"
|
|
7
|
+
|
|
6
8
|
#if __has_include(<RNPinVault/RNPinVault-Swift.h>)
|
|
7
9
|
#import <RNPinVault/RNPinVault-Swift.h>
|
|
8
10
|
#else
|
|
@@ -51,6 +53,10 @@
|
|
|
51
53
|
id handler = ((id(*)(id, SEL, NSURLRequest *))objc_msgSend)(networking, selector, probe);
|
|
52
54
|
return @([handler isKindOfClass:ours]);
|
|
53
55
|
};
|
|
56
|
+
// Whether SocketRocket's initializer still hands every wss socket to PinVault.
|
|
57
|
+
_bridge.reactWebSocketIsPinned = ^BOOL {
|
|
58
|
+
return [RNPinVaultWebSocketPinning isPinned];
|
|
59
|
+
};
|
|
54
60
|
}
|
|
55
61
|
return self;
|
|
56
62
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// RNPinVaultWebSocketPinning — React Native's WebSocket (SocketRocket) through
|
|
2
|
+
// PinVault's pins on iOS. See RNPinVaultWebSocketPinning.mm.
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
|
|
5
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
6
|
+
|
|
7
|
+
@interface RNPinVaultWebSocketPinning : NSObject
|
|
8
|
+
|
|
9
|
+
/// Installs the hook when it is not in place yet (it is installed at load;
|
|
10
|
+
/// this covers a SocketRocket image loaded later). NO when it cannot be:
|
|
11
|
+
/// Info.plist opt-out, no SocketRocket initializer of the known shape.
|
|
12
|
+
+ (BOOL)install;
|
|
13
|
+
|
|
14
|
+
/// Whether every SocketRocket socket to a `wss` / `https` URL is judged by
|
|
15
|
+
/// PinVault right now: the hook is installed and still the initializer's
|
|
16
|
+
/// implementation (nothing replaced it since). YES without SocketRocket in the app.
|
|
17
|
+
+ (BOOL)isPinned;
|
|
18
|
+
|
|
19
|
+
@end
|
|
20
|
+
|
|
21
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// RNPinVaultWebSocketPinning — React Native's WebSocket through PinVault's
|
|
2
|
+
// pins on iOS.
|
|
3
|
+
//
|
|
4
|
+
// RCTWebSocketModule opens every socket with SocketRocket (SRWebSocket on
|
|
5
|
+
// CFStream), outside URLSession, so the URLRequestHandler never sees it. Every
|
|
6
|
+
// SRWebSocket initializer ends in -initWithURLRequest:protocols:securityPolicy:
|
|
7
|
+
// (SocketRocket 0.7.x, SRWebSocket.m). This file replaces that method at load:
|
|
8
|
+
// a socket to a wss / https URL (SocketRocket's SRURLRequiresSSL) always gets a
|
|
9
|
+
// policy that asks PinVault, whatever policy its creator passed.
|
|
10
|
+
//
|
|
11
|
+
// RCTSetCustomSRWebSocketProvider is not used: its block gets only the
|
|
12
|
+
// request, so the subprotocols RN hands the initializer (graphql-ws, MQTT,
|
|
13
|
+
// STOMP) would be lost, and a provider set later by another library would
|
|
14
|
+
// replace ours without a trace.
|
|
15
|
+
//
|
|
16
|
+
// SocketRocket checks the server trust in -stream:handleEvent: before it
|
|
17
|
+
// writes the upgrade request: a refused chain sends no header and no cookie.
|
|
18
|
+
//
|
|
19
|
+
// The policy is a runtime subclass of SRSecurityPolicy, so the plugin needs
|
|
20
|
+
// neither SocketRocket's headers nor a link to it: no chain validation in the
|
|
21
|
+
// stream (pins replace CA trust, as in every PinVault session), the TLS 1.2
|
|
22
|
+
// floor of SocketRocket's default, and -evaluateServerTrust:forDomain: →
|
|
23
|
+
// PinVault for the host and port of the socket's own URL.
|
|
24
|
+
#import "RNPinVaultWebSocketPinning.h"
|
|
25
|
+
|
|
26
|
+
#import <Security/Security.h>
|
|
27
|
+
#import <objc/runtime.h>
|
|
28
|
+
#import <os/lock.h>
|
|
29
|
+
|
|
30
|
+
#if __has_include(<RNPinVault/RNPinVault-Swift.h>)
|
|
31
|
+
#import <RNPinVault/RNPinVault-Swift.h>
|
|
32
|
+
#else
|
|
33
|
+
#import "RNPinVault-Swift.h"
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
typedef id (*RNPVSocketInit)(id, SEL, NSURLRequest *, NSArray *, id);
|
|
37
|
+
|
|
38
|
+
static os_unfair_lock gLock = OS_UNFAIR_LOCK_INIT;
|
|
39
|
+
static RNPVSocketInit gOriginalInit = NULL;
|
|
40
|
+
static Class gPolicyClass = Nil;
|
|
41
|
+
static char kHostKey;
|
|
42
|
+
static char kPortKey;
|
|
43
|
+
|
|
44
|
+
static NSString *const kSocketClass = @"SRWebSocket";
|
|
45
|
+
static NSString *const kPolicyClass = @"SRSecurityPolicy";
|
|
46
|
+
static NSString *const kInitSelector = @"initWithURLRequest:protocols:securityPolicy:";
|
|
47
|
+
static NSString *const kUpdateSelector = @"updateSecurityOptionsInStream:";
|
|
48
|
+
static NSString *const kEvaluateSelector = @"evaluateServerTrust:forDomain:";
|
|
49
|
+
|
|
50
|
+
// SocketRocket's SRURLRequiresSSL.
|
|
51
|
+
static BOOL RequiresTLS(NSURL *url)
|
|
52
|
+
{
|
|
53
|
+
NSString *scheme = url.scheme.lowercaseString;
|
|
54
|
+
return [scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static void PinnedUpdateSecurityOptions(id self, SEL _cmd, NSStream *stream)
|
|
58
|
+
{
|
|
59
|
+
[stream setProperty:(__bridge id)CFSTR("kCFStreamSocketSecurityLevelTLSv1_2")
|
|
60
|
+
forKey:(__bridge NSString *)kCFStreamPropertySocketSecurityLevel];
|
|
61
|
+
[stream setProperty:@{(__bridge NSString *)kCFStreamSSLValidatesCertificateChain : @NO}
|
|
62
|
+
forKey:(__bridge NSString *)kCFStreamPropertySSLSettings];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static BOOL PinnedEvaluateServerTrust(id self, SEL _cmd, SecTrustRef trust, NSString *domain)
|
|
66
|
+
{
|
|
67
|
+
NSString *host = objc_getAssociatedObject(self, &kHostKey);
|
|
68
|
+
NSNumber *port = objc_getAssociatedObject(self, &kPortKey);
|
|
69
|
+
if (trust == NULL || host.length == 0 || port == nil) {
|
|
70
|
+
return NO;
|
|
71
|
+
}
|
|
72
|
+
return [RNPinVaultReactNetworking acceptsWebSocketTrust:trust host:host port:port.integerValue];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// The policy class, made once; Nil when SocketRocket's is missing or has another shape.
|
|
76
|
+
static Class PolicyClass(void)
|
|
77
|
+
{
|
|
78
|
+
static dispatch_once_t once;
|
|
79
|
+
dispatch_once(&once, ^{
|
|
80
|
+
Class base = NSClassFromString(kPolicyClass);
|
|
81
|
+
SEL update = NSSelectorFromString(kUpdateSelector);
|
|
82
|
+
SEL evaluate = NSSelectorFromString(kEvaluateSelector);
|
|
83
|
+
Method baseUpdate = base ? class_getInstanceMethod(base, update) : NULL;
|
|
84
|
+
Method baseEvaluate = base ? class_getInstanceMethod(base, evaluate) : NULL;
|
|
85
|
+
if (baseUpdate == NULL || baseEvaluate == NULL) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
Class sub = objc_allocateClassPair(base, "RNPinVaultSRSecurityPolicy", 0);
|
|
89
|
+
if (sub == Nil) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
class_addMethod(sub, update, (IMP)PinnedUpdateSecurityOptions, method_getTypeEncoding(baseUpdate));
|
|
93
|
+
class_addMethod(sub, evaluate, (IMP)PinnedEvaluateServerTrust, method_getTypeEncoding(baseEvaluate));
|
|
94
|
+
objc_registerClassPair(sub);
|
|
95
|
+
gPolicyClass = sub;
|
|
96
|
+
});
|
|
97
|
+
return gPolicyClass;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// A policy for one socket: the host and port SocketRocket connects to (port 0 → 443, as SRProxyConnect).
|
|
101
|
+
static id PolicyFor(NSURL *url)
|
|
102
|
+
{
|
|
103
|
+
Class cls = PolicyClass();
|
|
104
|
+
if (cls == Nil) {
|
|
105
|
+
return nil; // SocketRocket asks nil, which answers NO: refused.
|
|
106
|
+
}
|
|
107
|
+
id policy = [[cls alloc] init];
|
|
108
|
+
NSUInteger port = url.port.unsignedIntValue;
|
|
109
|
+
objc_setAssociatedObject(policy, &kHostKey, url.host, OBJC_ASSOCIATION_COPY_NONATOMIC);
|
|
110
|
+
objc_setAssociatedObject(policy, &kPortKey, @(port == 0 ? 443 : port), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
|
|
111
|
+
return policy;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
static id PinnedInit(id self, SEL _cmd, NSURLRequest *request, NSArray *protocols, id securityPolicy)
|
|
115
|
+
{
|
|
116
|
+
if (RequiresTLS(request.URL)) {
|
|
117
|
+
securityPolicy = PolicyFor(request.URL);
|
|
118
|
+
}
|
|
119
|
+
return gOriginalInit(self, _cmd, request, protocols, securityPolicy);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static Method SocketInit(void)
|
|
123
|
+
{
|
|
124
|
+
Class socket = NSClassFromString(kSocketClass);
|
|
125
|
+
return socket ? class_getInstanceMethod(socket, NSSelectorFromString(kInitSelector)) : NULL;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Info.plist PinVaultPinReactNativeNetworking = NO: the native opt-out of the https handler covers this too.
|
|
129
|
+
static BOOL Enabled(void)
|
|
130
|
+
{
|
|
131
|
+
id value = [NSBundle.mainBundle objectForInfoDictionaryKey:@"PinVaultPinReactNativeNetworking"];
|
|
132
|
+
return ![value respondsToSelector:@selector(boolValue)] || [value boolValue];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@implementation RNPinVaultWebSocketPinning
|
|
136
|
+
|
|
137
|
+
+ (void)load
|
|
138
|
+
{
|
|
139
|
+
[self install];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
+ (BOOL)install
|
|
143
|
+
{
|
|
144
|
+
if (!Enabled()) {
|
|
145
|
+
return NO;
|
|
146
|
+
}
|
|
147
|
+
os_unfair_lock_lock(&gLock);
|
|
148
|
+
BOOL installed = NO;
|
|
149
|
+
Method method = SocketInit();
|
|
150
|
+
if (method != NULL && gOriginalInit != NULL) {
|
|
151
|
+
installed = method_getImplementation(method) == (IMP)PinnedInit;
|
|
152
|
+
} else if (method != NULL && PolicyClass() != Nil &&
|
|
153
|
+
strcmp(method_getTypeEncoding(method) ?: "", "@40@0:8@16@24@32") == 0) {
|
|
154
|
+
gOriginalInit = (RNPVSocketInit)method_getImplementation(method);
|
|
155
|
+
method_setImplementation(method, (IMP)PinnedInit);
|
|
156
|
+
installed = YES;
|
|
157
|
+
}
|
|
158
|
+
os_unfair_lock_unlock(&gLock);
|
|
159
|
+
return installed;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
+ (BOOL)isPinned
|
|
163
|
+
{
|
|
164
|
+
if (NSClassFromString(kSocketClass) == Nil) {
|
|
165
|
+
return YES; // No SocketRocket: React Native has no WebSocket to pin.
|
|
166
|
+
}
|
|
167
|
+
return [self install];
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@end
|
package/lib/module/index.js
CHANGED
|
@@ -110,7 +110,13 @@ export async function evaluateGuard(guard, operation, timeoutMs) {
|
|
|
110
110
|
if (timer !== undefined) clearTimeout(timer);
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
-
const GUARDED_OPERATIONS = new Set(['INIT', 'ENROLL', 'FETCH_FILE', 'UNLOCK_FILE']);
|
|
113
|
+
const GUARDED_OPERATIONS = new Set(['INIT', 'ENROLL', 'FETCH_FILE', 'UNLOCK_FILE', 'LOAD_FILE']);
|
|
114
|
+
|
|
115
|
+
/** The guard of the running config, put back when a new config is refused. */
|
|
116
|
+
let activeGuard = {
|
|
117
|
+
guard: undefined,
|
|
118
|
+
timeoutMs: DEFAULT_GUARD_TIMEOUT_MS
|
|
119
|
+
};
|
|
114
120
|
function installGuard(guard, timeoutMs) {
|
|
115
121
|
guardSubscription?.remove();
|
|
116
122
|
guardSubscription = null;
|
|
@@ -157,8 +163,21 @@ export async function start(config) {
|
|
|
157
163
|
timeoutMs
|
|
158
164
|
};
|
|
159
165
|
const json = strictJson(nativeConfig, 'config', 'E_INVALID_CONFIG');
|
|
166
|
+
// The new guard answers during start (INIT is asked then). A config the
|
|
167
|
+
// native side refuses changes nothing, so the running config's guard comes back.
|
|
168
|
+
const previous = activeGuard;
|
|
160
169
|
installGuard(environmentGuard, timeoutMs);
|
|
161
|
-
|
|
170
|
+
try {
|
|
171
|
+
const result = await call(NativePinVault.start(json));
|
|
172
|
+
activeGuard = {
|
|
173
|
+
guard: environmentGuard,
|
|
174
|
+
timeoutMs
|
|
175
|
+
};
|
|
176
|
+
return result;
|
|
177
|
+
} catch (error) {
|
|
178
|
+
installGuard(previous.guard, previous.timeoutMs);
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
162
181
|
}
|
|
163
182
|
export const updateNow = () => call(NativePinVault.updateNow());
|
|
164
183
|
export const currentVersion = () => call(NativePinVault.currentVersion());
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativePinVault","PinVaultError","Error","constructor","code","message","exception","name","KNOWN_CODES","Set","toPinVaultError","error","e","has","info","userInfo","exceptionName","exceptionMessage","call","promise","MAX_DEPTH","assertPlainData","value","path","depth","Number","isFinite","Array","isArray","forEach","item","i","undefined","proto","Object","getPrototypeOf","prototype","k","v","entries","strictJson","JSON","stringify","DEFAULT_GUARD_TIMEOUT_MS","guardSubscription","evaluateGuard","guard","operation","timeoutMs","timer","verdict","Promise","race","resolve","then","setTimeout","__DEV__","console","warn","clearTimeout","GUARDED_OPERATIONS","installGuard","remove","jsTimeout","Math","max","onGuardRequest","request","answerGuard","requestId","allowed","start","config","environmentGuard","environmentGuardTimeoutMs","rest","isInteger","nativeConfig","json","updateNow","currentVersion","hostPinVersions","pinsForHost","hostname","result","pins","signingStatus","configApiId","isForceUpdate","reset","schedulePeriodicUpdates","intervalHours","cancelPeriodicUpdates","enableDebugLogging","fetch","url","init","response","ok","status","deviceId","enrollForResult","token","label","autoEnrollForResult","checkPendingEnrollment","isEnrolled","isEnrollmentPending","enrollmentVerificationCode","enrolledClientCN","enrolledClientNotAfter","unenroll","options","wipeVaultFiles","identityKeySecurityLevel","setVaultToken","key","clearVaultTokens","fetchFile","loadFile","encoding","fileStatus","unlockFile","prompt","isFileLocked","hasFile","fileVersion","clearFile","syncAllFiles","attestNow","fetchAttestationToken","host","attestationStatus","attestationHeaderName","addConnectionListener","listener","onConnectionEvent","event","PinVault"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["NativePinVault","PinVaultError","Error","constructor","code","message","exception","name","KNOWN_CODES","Set","toPinVaultError","error","e","has","info","userInfo","exceptionName","exceptionMessage","call","promise","MAX_DEPTH","assertPlainData","value","path","depth","Number","isFinite","Array","isArray","forEach","item","i","undefined","proto","Object","getPrototypeOf","prototype","k","v","entries","strictJson","JSON","stringify","DEFAULT_GUARD_TIMEOUT_MS","guardSubscription","evaluateGuard","guard","operation","timeoutMs","timer","verdict","Promise","race","resolve","then","setTimeout","__DEV__","console","warn","clearTimeout","GUARDED_OPERATIONS","activeGuard","installGuard","remove","jsTimeout","Math","max","onGuardRequest","request","answerGuard","requestId","allowed","start","config","environmentGuard","environmentGuardTimeoutMs","rest","isInteger","nativeConfig","json","previous","result","updateNow","currentVersion","hostPinVersions","pinsForHost","hostname","pins","signingStatus","configApiId","isForceUpdate","reset","schedulePeriodicUpdates","intervalHours","cancelPeriodicUpdates","enableDebugLogging","fetch","url","init","response","ok","status","deviceId","enrollForResult","token","label","autoEnrollForResult","checkPendingEnrollment","isEnrolled","isEnrollmentPending","enrollmentVerificationCode","enrolledClientCN","enrolledClientNotAfter","unenroll","options","wipeVaultFiles","identityKeySecurityLevel","setVaultToken","key","clearVaultTokens","fetchFile","loadFile","encoding","fileStatus","unlockFile","prompt","isFileLocked","hasFile","fileVersion","clearFile","syncAllFiles","attestNow","fetchAttestationToken","host","attestationStatus","attestationHeaderName","addConnectionListener","listener","onConnectionEvent","event","PinVault"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,YAAS,CAAC;AAEjB,cAAc,YAAS,CAAC;AAExB,wCAAwC;AACxC,MAAM,MAAM,iBAAiB;AAC3B,2FAA2F;AACzF,kBAAkB,GAClB,oBAAoB;AACtB,+CAA+C;GAC7C,eAAe;AACjB,kFAAkF;GAChF,SAAS,GACT,eAAe,GACf,UAAU;AACZ,yFAAyF;GACvF,yBAAyB,CAAC;AAE9B,4FAA4F;AAC5F,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;gBAExD,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,aAAa,CAAC,WAAW,CAAQ;CAMnG;AAqFD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAI7C;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAgBlB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|