@au10tixorg/secureme-sdk 4.7.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 (37) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +479 -0
  3. package/android/build.gradle +156 -0
  4. package/android/gradle.properties +4 -0
  5. package/android/src/main/AndroidManifest.xml +6 -0
  6. package/android/src/main/java/com/securemesdk/SecuremeSdkModule.kt +59 -0
  7. package/android/src/main/java/com/securemesdk/SecuremeSdkPackage.kt +17 -0
  8. package/android/src/main/java/com/securemesdk/helpers/ReadableMapExt.kt +51 -0
  9. package/android/src/main/java/com/securemesdk/helpers/SessionParser.kt +21 -0
  10. package/android/src/main/java/com/securemesdk/models/SDKError.kt +24 -0
  11. package/android/src/main/java/com/securemesdk/secureme/SecureMeBottomSheet.kt +308 -0
  12. package/ios/Extensions/DictionaryExtensions.swift +90 -0
  13. package/ios/Extensions/SecureMeExtensions.swift +82 -0
  14. package/ios/Models/SDKError.swift +36 -0
  15. package/ios/Secureme/SecuremeService.swift +261 -0
  16. package/ios/SecuremeSdk-Bridging-Header.h +2 -0
  17. package/ios/SecuremeSdk.m +14 -0
  18. package/ios/SecuremeSdk.swift +102 -0
  19. package/ios/SecuremeSdk.xcodeproj/project.pbxproj +317 -0
  20. package/ios/SecuremeSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  21. package/lib/commonjs/index.js +103 -0
  22. package/lib/commonjs/index.js.map +1 -0
  23. package/lib/commonjs/package.json +1 -0
  24. package/lib/commonjs/types.js +2 -0
  25. package/lib/commonjs/types.js.map +1 -0
  26. package/lib/module/index.js +85 -0
  27. package/lib/module/index.js.map +1 -0
  28. package/lib/module/types.js +2 -0
  29. package/lib/module/types.js.map +1 -0
  30. package/lib/typescript/index.d.ts +32 -0
  31. package/lib/typescript/index.d.ts.map +1 -0
  32. package/lib/typescript/types.d.ts +95 -0
  33. package/lib/typescript/types.d.ts.map +1 -0
  34. package/package.json +164 -0
  35. package/secureme-sdk.podspec +27 -0
  36. package/src/index.tsx +119 -0
  37. package/src/types.ts +113 -0
@@ -0,0 +1,261 @@
1
+ //
2
+ // SecuremeService.swift
3
+ // SecuremeSdk
4
+ //
5
+ // Created by Ihor Konfedrat on 12.12.2025.
6
+ // Copyright © 2025 Facebook. All rights reserved.
7
+ //
8
+
9
+ import UIKit
10
+ import AVFoundation
11
+
12
+ import Au10tixCore
13
+ import Au10tixBaseUI
14
+ import Au10tixSecureMeKit
15
+ import Au10tixSmartDocumentCaptureKit
16
+ import Au10tixPassiveFaceLivenessKit
17
+ import Au10tixProofOfAddressUI
18
+ import Au10tixSmartDocumentCaptureUI
19
+ import Au10tixPassiveFaceLivenessUI
20
+ import Au10tixNFCPassportUI
21
+ import Au10tixNFCPassportKit
22
+ import Au10tixVoiceConsentUI
23
+ import Au10tixLocalDataInferenceKit
24
+
25
+ class SecuremeService: SecureMeKitDelegate {
26
+
27
+ var secureMeKit: SecureMeKit? = nil
28
+ var securemeVC: UIViewController? = nil
29
+ var flowDictionary: NSDictionary? = nil
30
+ var configDictionary: NSDictionary? = nil
31
+
32
+ func secureMeKit(_ kit: Au10tixSecureMeKit.SecureMeKit, hasUpdate update: Au10tixSecureMeKit.SecureMeKitUpdate) {
33
+ logger.debug("SecureMeKit Updated")
34
+ }
35
+
36
+ func secureMeKit(_ kit: Au10tixSecureMeKit.SecureMeKit, didCompleteWith result: Au10tixSecureMeKit.SecureMeKitResult) {
37
+ logger.debug("SecureMeKit Complete")
38
+
39
+ pendingCompletion?(.success(true))
40
+ pendingCompletion = nil
41
+ securemeVC?.dismiss(animated: true, completion: nil)
42
+ }
43
+
44
+ func secureMeKit(_ kit: Au10tixSecureMeKit.SecureMeKit, didFailWith error: Au10tixSecureMeKit.SecureMeKitError) {
45
+ logger.debug("SecureMeKit Error: \(error)")
46
+
47
+ let sdkError = SDKError.secureMeFailure(error.localizedDescription)
48
+ pendingCompletion?(.failure(sdkError))
49
+ pendingCompletion = nil
50
+ securemeVC?.dismiss(animated: true, completion: nil)
51
+ }
52
+
53
+ func secureMeKit(_ kit: Au10tixSecureMeKit.SecureMeKit, didClose viewController: UIViewController) {
54
+ logger.debug("SecureMeKit Close")
55
+ securemeVC?.dismiss(animated: true, completion: nil)
56
+ }
57
+
58
+ typealias SessionCompletion = (Result<Bool, SDKError>) -> Void
59
+
60
+ private var pendingCompletion: SessionCompletion?
61
+
62
+ static let shared = SecuremeService()
63
+
64
+ private init() {
65
+ logger.debug("SecureService initialized")
66
+ }
67
+
68
+ private var sdkBundle: Bundle {
69
+ return Bundle(for: SecuremeService.self)
70
+ }
71
+
72
+ private func createViewController(completion: @escaping (Result<UIViewController, Error>) -> Void) {
73
+
74
+ let sdkBundle = Bundle(for: SecuremeService.self)
75
+ let animationImageAsset = DynamicUIImage(
76
+ name: "frame",
77
+ source: .bundle(sdkBundle),
78
+ animativeUIImageInfo: DynamicAnimativeUIImageInfo(duration: 0.03)
79
+ )
80
+
81
+ Au10tix.shared.prepare { _ in
82
+ let secureMeKit = SecureMeKit(animationImageAsset: animationImageAsset)
83
+ let setClassificationTypeSelector = NSSelectorFromString("setClassificationTypeWithIsLocal:")
84
+ if secureMeKit.responds(to: setClassificationTypeSelector) {
85
+ secureMeKit.perform(setClassificationTypeSelector, with: NSNumber(booleanLiteral: false))
86
+ }
87
+ secureMeKit.prepare { [weak self] error in
88
+ DispatchQueue.main.async { [weak self] in
89
+ guard let self = self else { return }
90
+ if let error = error {
91
+ completion(
92
+ .failure(
93
+ SDKError
94
+ .secureMeFailure(error.localizedDescription)
95
+ )
96
+ )
97
+ } else {
98
+
99
+ let enableConsentPageSelector = NSSelectorFromString("setConsentPageWithEnabled:")
100
+ if secureMeKit.responds(to: enableConsentPageSelector) {
101
+ secureMeKit.perform(enableConsentPageSelector, with: NSNumber(booleanLiteral: true))
102
+ }
103
+
104
+ // Pass nil config to let SDK use OCS configuration when configDictionary or flowDictionary is empty
105
+ let config: SecureMeConfig?
106
+ if let flowDict = flowDictionary, flowDict.count > 0,
107
+ let configDict = configDictionary, configDict.count > 0 {
108
+ let flows = createFlow(flowDictionary: flowDict)
109
+ let smConfig = createConfig(configDictionary: configDict)
110
+ config = SecureMeConfig(flows: flows, smConfig: smConfig)
111
+ } else {
112
+ config = nil
113
+ }
114
+
115
+ if let vc = try? secureMeKit.createUI(config: config, delegate: self) {
116
+ self.secureMeKit = secureMeKit
117
+ self.securemeVC = vc
118
+ completion(.success(vc))
119
+ } else {
120
+ completion(.failure(SDKError.secureMeFailure("SecureMeKit create UI returned nil")))
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ func checkCameraStatus() -> AVAuthorizationStatus {
129
+ return AVCaptureDevice.authorizationStatus(for: .video)
130
+ }
131
+
132
+ func requestCameraAccess(completion: @escaping (Bool) -> Void) {
133
+ AVCaptureDevice.requestAccess(for: .video, completionHandler: completion)
134
+ }
135
+
136
+ func startSession(
137
+ workFlowResponse: String,
138
+ flowDictionary: NSDictionary,
139
+ configDictionary: NSDictionary,
140
+ completion: @escaping (Result<Bool, SDKError>) -> Void
141
+ ) {
142
+
143
+ guard let data = workFlowResponse.data(using: .utf8) else {
144
+ completion(.failure(SDKError.secureMeFailure("Failed to convert string to UTF8 data")))
145
+ return
146
+ }
147
+
148
+ self.flowDictionary = flowDictionary
149
+ self.configDictionary = configDictionary
150
+
151
+ do {
152
+ let responseDecoded = try JSONDecoder().decode(Au10tixWorkflow.self, from: data)
153
+
154
+ Au10tix.shared.updateWorkflowWrapper(responseDecoded)
155
+
156
+ Au10tix.shared.prepare { result in
157
+ switch result {
158
+ case .success(let sessionID):
159
+ logger.debug("Session initialized successfully: \(sessionID)")
160
+ completion(.success(true))
161
+
162
+ case .failure(let error):
163
+ logger.error("Core preparation failed: \(error)")
164
+ completion(.failure(SDKError.secureMeFailure("Core preparation failed: \(error)")))
165
+ }
166
+ }
167
+ } catch {
168
+ completion(.failure(SDKError.jsonParse("Failed to decode workflow: \(error.localizedDescription)")))
169
+ }
170
+ }
171
+
172
+ func startSecureMeKit(completion: @escaping SessionCompletion) {
173
+
174
+ DispatchQueue.main.async {
175
+
176
+ guard Au10tix.shared.workflowWrapper?.accessToken?.jwt != nil else {
177
+ completion(.failure(SDKError.secureMeFailure("Missing AccessToken.")))
178
+ return
179
+ }
180
+
181
+ self.pendingCompletion = completion
182
+
183
+ SecuremeService.shared.createViewController { result in
184
+
185
+ switch result {
186
+ case .success(let vc):
187
+ guard let keyWindow = UIApplication.shared.windows.first(where: { $0.isKeyWindow }),
188
+ let rootVC = keyWindow.rootViewController
189
+ else {
190
+ completion(.failure(SDKError.secureMeFailure("Root Controller Not Found.")))
191
+ return
192
+ }
193
+
194
+ var topController = rootVC
195
+ while let presented = topController.presentedViewController {
196
+ topController = presented
197
+ }
198
+
199
+ topController.present(vc, animated: true)
200
+
201
+ case .failure(let error):
202
+ if let sdkError = error as? SDKError {
203
+ completion(.failure(SDKError.secureMeFailure(sdkError.localizedDescription)))
204
+ } else {
205
+ let nsError = error as NSError
206
+ completion(.failure(SDKError.secureMeFailure(nsError.localizedDescription)))
207
+ }
208
+ }
209
+ }
210
+ }
211
+ }
212
+
213
+ private func createFlow(flowDictionary: NSDictionary) -> [SecureMeFlow] {
214
+ var flows: [SecureMeFlow] = []
215
+
216
+ func getParams(_ key: String) -> SecureMeFlowConfig? {
217
+ guard let dict = flowDictionary[key] as? NSDictionary else {
218
+ return nil
219
+ }
220
+ return SecureMeFlowConfig(dict: dict)
221
+ }
222
+
223
+ if let params = getParams("sdcFront") {
224
+ flows.append(.sdcFront(params))
225
+ }
226
+
227
+ if let params = getParams("sdcBack") {
228
+ flows.append(.sdcBack(params))
229
+ }
230
+
231
+ if let params = getParams("pfl") {
232
+ flows.append(.pfl(params))
233
+ }
234
+
235
+ if let params = getParams("vc") {
236
+ flows.append(.vc(params))
237
+ }
238
+
239
+ if let params = getParams("vs") {
240
+ flows.append(.vs(params))
241
+ }
242
+
243
+ if let params = getParams("poa") {
244
+ flows.append(.poa(params))
245
+ }
246
+
247
+ if let params = getParams("sdcOcr") {
248
+ flows.append(.sdcOcr(params))
249
+ }
250
+
251
+ return flows
252
+ }
253
+
254
+ private func createConfig(configDictionary: NSDictionary?) -> SecureMeFeaturesConfig {
255
+ guard let dict = configDictionary else {
256
+ return SecureMeFeaturesConfig(dict: [:])
257
+ }
258
+
259
+ return SecureMeFeaturesConfig(dict: dict)
260
+ }
261
+ }
@@ -0,0 +1,2 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
@@ -0,0 +1,14 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(SecuremeSdk, NSObject)
4
+
5
+ RCT_EXTERN_METHOD(requestCameraPermission:(RCTPromiseResolveBlock)resolve
6
+ withRejecter:(RCTPromiseRejectBlock)reject)
7
+
8
+ RCT_EXTERN_METHOD(start:(NSString *)workFlowResponse
9
+ flowMap:(NSDictionary *)flowMap
10
+ configMap:(NSDictionary *)configMap
11
+ resolve:(RCTPromiseResolveBlock)resolve
12
+ reject:(RCTPromiseRejectBlock)reject)
13
+
14
+ @end
@@ -0,0 +1,102 @@
1
+ import AVFoundation
2
+ import os.log
3
+
4
+ import Au10tixCore
5
+ import Au10tixBaseUI
6
+ import Au10tixSecureMeKit
7
+
8
+ let logger = Logger(subsystem: "com.au10tix.securemesdk", category: "SecuremeSdk")
9
+
10
+ @objc(SecuremeSdk)
11
+ class SecuremeSdk: NSObject {
12
+
13
+ override init() {
14
+ super.init()
15
+ Au10Mirror.perform(
16
+ shared: Au10tix.shared,
17
+ selector: "setAu10tixHostWithHost:",
18
+ with: "reactNative"
19
+ )
20
+ logger.debug("Au10tix host set to reactNative")
21
+ }
22
+
23
+ @objc static func moduleName() -> String {
24
+ return "SecuremeSDK"
25
+ }
26
+
27
+ @objc static func requiresMainQueueSetup() -> Bool {
28
+ return true
29
+ }
30
+
31
+ @objc(requestCameraPermission:withRejecter:)
32
+ func requestCameraPermission(resolve: @escaping RCTPromiseResolveBlock,
33
+ reject: @escaping RCTPromiseRejectBlock) {
34
+
35
+ let authStatus = SecuremeService.shared.checkCameraStatus()
36
+
37
+ switch authStatus {
38
+ case .notDetermined:
39
+ SecuremeService.shared.requestCameraAccess() { granted in
40
+ resolve(granted)
41
+ }
42
+
43
+ case .authorized:
44
+ resolve(true)
45
+
46
+ case .denied, .restricted:
47
+ resolve(false)
48
+
49
+ @unknown default:
50
+ resolve(false)
51
+ }
52
+ }
53
+
54
+ @objc(start:flowMap:configMap:resolve:reject:)
55
+ func start(
56
+ workFlowResponse: String,
57
+ flowMap: NSDictionary,
58
+ configMap: NSDictionary,
59
+ resolve: @escaping RCTPromiseResolveBlock,
60
+ reject: @escaping RCTPromiseRejectBlock
61
+ ) {
62
+
63
+ let authStatus = SecuremeService.shared.checkCameraStatus()
64
+
65
+ switch authStatus {
66
+ case .authorized:
67
+ logger.debug("Camera authorized.")
68
+ SecuremeService.shared.startSession(workFlowResponse: workFlowResponse, flowDictionary: flowMap, configDictionary: configMap) { result in
69
+
70
+ switch result {
71
+ case .success(_):
72
+ SecuremeService.shared.startSecureMeKit { result in
73
+ switch result {
74
+
75
+ case .success(let success):
76
+ resolve(success)
77
+ case .failure(let error):
78
+ let error = SDKError.secureMeFailure(error.localizedDescription)
79
+ reject(error.code, error.localizedDescription, error)
80
+ }
81
+ }
82
+
83
+ case .failure(let error):
84
+ let error = SDKError.secureMeFailure(error.localizedDescription)
85
+ reject(error.code, error.localizedDescription, error)
86
+ }
87
+ }
88
+
89
+ case .notDetermined:
90
+ let error = SDKError.secureMeFailure("Camera permission not determined. Please request permission in the app before calling initSession.")
91
+ reject(error.code, error.localizedDescription, error)
92
+
93
+ case .denied, .restricted:
94
+ let error = SDKError.secureMeFailure("Camera permission denied. User needs to enable it in Settings.")
95
+ reject(error.code, error.localizedDescription, error)
96
+
97
+ @unknown default:
98
+ let error = SDKError.secureMeFailure("Unknown camera permission status.")
99
+ reject(error.code, error.localizedDescription, error)
100
+ }
101
+ }
102
+ }
@@ -0,0 +1,317 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 46;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 85377A292F01B23000BAA233 /* SecuremeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85377A272F01B23000BAA233 /* SecuremeService.swift */; };
11
+ 85377A2C2F01B5BA00BAA233 /* DictionaryExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85377A2B2F01B5BA00BAA233 /* DictionaryExtensions.swift */; };
12
+ 85377A2E2F02888200BAA233 /* SecureMeExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85377A2D2F02888200BAA233 /* SecureMeExtensions.swift */; };
13
+ 85398EBC2EECBB8100007D17 /* SDKError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85398EBB2EECBB8100007D17 /* SDKError.swift */; };
14
+ /* End PBXBuildFile section */
15
+
16
+ /* Begin PBXCopyFilesBuildPhase section */
17
+ 58B511D91A9E6C8500147676 /* CopyFiles */ = {
18
+ isa = PBXCopyFilesBuildPhase;
19
+ buildActionMask = 2147483647;
20
+ dstPath = "include/$(PRODUCT_NAME)";
21
+ dstSubfolderSpec = 16;
22
+ files = (
23
+ );
24
+ runOnlyForDeploymentPostprocessing = 0;
25
+ };
26
+ /* End PBXCopyFilesBuildPhase section */
27
+
28
+ /* Begin PBXFileReference section */
29
+ 134814201AA4EA6300B7C361 /* libSecuremeSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSecuremeSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
30
+ 85377A272F01B23000BAA233 /* SecuremeService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecuremeService.swift; sourceTree = "<group>"; };
31
+ 85377A2B2F01B5BA00BAA233 /* DictionaryExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DictionaryExtensions.swift; sourceTree = "<group>"; };
32
+ 85377A2D2F02888200BAA233 /* SecureMeExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureMeExtensions.swift; sourceTree = "<group>"; };
33
+ 85398EBB2EECBB8100007D17 /* SDKError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDKError.swift; sourceTree = "<group>"; };
34
+ 85398EBD2EED65D200007D17 /* SecuremeSdk.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SecuremeSdk.m; sourceTree = "<group>"; };
35
+ 85398EBE2EED65D200007D17 /* SecuremeSdk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecuremeSdk.swift; sourceTree = "<group>"; };
36
+ 85398EBF2EED689E00007D17 /* SecuremeSdk-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SecuremeSdk-Bridging-Header.h"; sourceTree = "<group>"; };
37
+ /* End PBXFileReference section */
38
+
39
+ /* Begin PBXFrameworksBuildPhase section */
40
+ 58B511D81A9E6C8500147676 /* Frameworks */ = {
41
+ isa = PBXFrameworksBuildPhase;
42
+ buildActionMask = 2147483647;
43
+ files = (
44
+ );
45
+ runOnlyForDeploymentPostprocessing = 0;
46
+ };
47
+ /* End PBXFrameworksBuildPhase section */
48
+
49
+ /* Begin PBXGroup section */
50
+ 134814211AA4EA7D00B7C361 /* Products */ = {
51
+ isa = PBXGroup;
52
+ children = (
53
+ 134814201AA4EA6300B7C361 /* libSecuremeSdk.a */,
54
+ );
55
+ name = Products;
56
+ sourceTree = "<group>";
57
+ };
58
+ 58B511D21A9E6C8500147676 = {
59
+ isa = PBXGroup;
60
+ children = (
61
+ 85377A2A2F01B59700BAA233 /* Extensions */,
62
+ 85377A282F01B23000BAA233 /* Secureme */,
63
+ 85398EC32EEE18D500007D17 /* Models */,
64
+ 85398EBF2EED689E00007D17 /* SecuremeSdk-Bridging-Header.h */,
65
+ 134814211AA4EA7D00B7C361 /* Products */,
66
+ 85398EBD2EED65D200007D17 /* SecuremeSdk.m */,
67
+ 85398EBE2EED65D200007D17 /* SecuremeSdk.swift */,
68
+ );
69
+ sourceTree = "<group>";
70
+ };
71
+ 85377A282F01B23000BAA233 /* Secureme */ = {
72
+ isa = PBXGroup;
73
+ children = (
74
+ 85377A272F01B23000BAA233 /* SecuremeService.swift */,
75
+ );
76
+ path = Secureme;
77
+ sourceTree = "<group>";
78
+ };
79
+ 85377A2A2F01B59700BAA233 /* Extensions */ = {
80
+ isa = PBXGroup;
81
+ children = (
82
+ 85377A2B2F01B5BA00BAA233 /* DictionaryExtensions.swift */,
83
+ 85377A2D2F02888200BAA233 /* SecureMeExtensions.swift */,
84
+ );
85
+ path = Extensions;
86
+ sourceTree = "<group>";
87
+ };
88
+ 85398EC32EEE18D500007D17 /* Models */ = {
89
+ isa = PBXGroup;
90
+ children = (
91
+ 85398EBB2EECBB8100007D17 /* SDKError.swift */,
92
+ );
93
+ path = Models;
94
+ sourceTree = "<group>";
95
+ };
96
+ /* End PBXGroup section */
97
+
98
+ /* Begin PBXNativeTarget section */
99
+ 58B511DA1A9E6C8500147676 /* SecuremeSdk */ = {
100
+ isa = PBXNativeTarget;
101
+ buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "SecuremeSdk" */;
102
+ buildPhases = (
103
+ 58B511D71A9E6C8500147676 /* Sources */,
104
+ 58B511D81A9E6C8500147676 /* Frameworks */,
105
+ 58B511D91A9E6C8500147676 /* CopyFiles */,
106
+ );
107
+ buildRules = (
108
+ );
109
+ dependencies = (
110
+ );
111
+ name = SecuremeSdk;
112
+ productName = RCTDataManager;
113
+ productReference = 134814201AA4EA6300B7C361 /* libSecuremeSdk.a */;
114
+ productType = "com.apple.product-type.library.static";
115
+ };
116
+ /* End PBXNativeTarget section */
117
+
118
+ /* Begin PBXProject section */
119
+ 58B511D31A9E6C8500147676 /* Project object */ = {
120
+ isa = PBXProject;
121
+ attributes = {
122
+ LastUpgradeCheck = 0920;
123
+ ORGANIZATIONNAME = Facebook;
124
+ TargetAttributes = {
125
+ 58B511DA1A9E6C8500147676 = {
126
+ CreatedOnToolsVersion = 6.1.1;
127
+ };
128
+ };
129
+ };
130
+ buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "SecuremeSdk" */;
131
+ compatibilityVersion = "Xcode 3.2";
132
+ developmentRegion = English;
133
+ hasScannedForEncodings = 0;
134
+ knownRegions = (
135
+ English,
136
+ en,
137
+ );
138
+ mainGroup = 58B511D21A9E6C8500147676;
139
+ productRefGroup = 58B511D21A9E6C8500147676;
140
+ projectDirPath = "";
141
+ projectRoot = "";
142
+ targets = (
143
+ 58B511DA1A9E6C8500147676 /* SecuremeSdk */,
144
+ );
145
+ };
146
+ /* End PBXProject section */
147
+
148
+ /* Begin PBXSourcesBuildPhase section */
149
+ 58B511D71A9E6C8500147676 /* Sources */ = {
150
+ isa = PBXSourcesBuildPhase;
151
+ buildActionMask = 2147483647;
152
+ files = (
153
+ 85377A2E2F02888200BAA233 /* SecureMeExtensions.swift in Sources */,
154
+ 85377A292F01B23000BAA233 /* SecuremeService.swift in Sources */,
155
+ 85398EBC2EECBB8100007D17 /* SDKError.swift in Sources */,
156
+ 85377A2C2F01B5BA00BAA233 /* DictionaryExtensions.swift in Sources */,
157
+ );
158
+ runOnlyForDeploymentPostprocessing = 0;
159
+ };
160
+ /* End PBXSourcesBuildPhase section */
161
+
162
+ /* Begin XCBuildConfiguration section */
163
+ 58B511ED1A9E6C8500147676 /* Debug */ = {
164
+ isa = XCBuildConfiguration;
165
+ buildSettings = {
166
+ ALWAYS_SEARCH_USER_PATHS = NO;
167
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
168
+ CLANG_CXX_LIBRARY = "libc++";
169
+ CLANG_ENABLE_MODULES = YES;
170
+ CLANG_ENABLE_OBJC_ARC = YES;
171
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
172
+ CLANG_WARN_BOOL_CONVERSION = YES;
173
+ CLANG_WARN_COMMA = YES;
174
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
175
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
176
+ CLANG_WARN_EMPTY_BODY = YES;
177
+ CLANG_WARN_ENUM_CONVERSION = YES;
178
+ CLANG_WARN_INFINITE_RECURSION = YES;
179
+ CLANG_WARN_INT_CONVERSION = YES;
180
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
181
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
182
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
183
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
184
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
185
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
186
+ CLANG_WARN_UNREACHABLE_CODE = YES;
187
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
188
+ COPY_PHASE_STRIP = NO;
189
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
190
+ ENABLE_TESTABILITY = YES;
191
+ GCC_C_LANGUAGE_STANDARD = gnu99;
192
+ GCC_DYNAMIC_NO_PIC = NO;
193
+ GCC_NO_COMMON_BLOCKS = YES;
194
+ GCC_OPTIMIZATION_LEVEL = 0;
195
+ GCC_PREPROCESSOR_DEFINITIONS = (
196
+ "DEBUG=1",
197
+ "$(inherited)",
198
+ );
199
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
200
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
201
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
202
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
203
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
204
+ GCC_WARN_UNUSED_FUNCTION = YES;
205
+ GCC_WARN_UNUSED_VARIABLE = YES;
206
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
207
+ MTL_ENABLE_DEBUG_INFO = YES;
208
+ ONLY_ACTIVE_ARCH = YES;
209
+ SDKROOT = iphoneos;
210
+ };
211
+ name = Debug;
212
+ };
213
+ 58B511EE1A9E6C8500147676 /* Release */ = {
214
+ isa = XCBuildConfiguration;
215
+ buildSettings = {
216
+ ALWAYS_SEARCH_USER_PATHS = NO;
217
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
218
+ CLANG_CXX_LIBRARY = "libc++";
219
+ CLANG_ENABLE_MODULES = YES;
220
+ CLANG_ENABLE_OBJC_ARC = YES;
221
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
222
+ CLANG_WARN_BOOL_CONVERSION = YES;
223
+ CLANG_WARN_COMMA = YES;
224
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
225
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
226
+ CLANG_WARN_EMPTY_BODY = YES;
227
+ CLANG_WARN_ENUM_CONVERSION = YES;
228
+ CLANG_WARN_INFINITE_RECURSION = YES;
229
+ CLANG_WARN_INT_CONVERSION = YES;
230
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
231
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
232
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
233
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
234
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
235
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
236
+ CLANG_WARN_UNREACHABLE_CODE = YES;
237
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
238
+ COPY_PHASE_STRIP = YES;
239
+ ENABLE_NS_ASSERTIONS = NO;
240
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
241
+ GCC_C_LANGUAGE_STANDARD = gnu99;
242
+ GCC_NO_COMMON_BLOCKS = YES;
243
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
244
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
245
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
246
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
247
+ GCC_WARN_UNUSED_FUNCTION = YES;
248
+ GCC_WARN_UNUSED_VARIABLE = YES;
249
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
250
+ MTL_ENABLE_DEBUG_INFO = NO;
251
+ SDKROOT = iphoneos;
252
+ VALIDATE_PRODUCT = YES;
253
+ };
254
+ name = Release;
255
+ };
256
+ 58B511F01A9E6C8500147676 /* Debug */ = {
257
+ isa = XCBuildConfiguration;
258
+ buildSettings = {
259
+ HEADER_SEARCH_PATHS = (
260
+ "$(inherited)",
261
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
262
+ "$(SRCROOT)/../../../React/**",
263
+ "$(SRCROOT)/../../react-native/React/**",
264
+ );
265
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
266
+ OTHER_LDFLAGS = "-ObjC";
267
+ PRODUCT_NAME = SecuremeSdk;
268
+ SKIP_INSTALL = YES;
269
+ SWIFT_OBJC_BRIDGING_HEADER = "SecuremeSdk-Bridging-Header.h";
270
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
271
+ SWIFT_VERSION = 5.0;
272
+ };
273
+ name = Debug;
274
+ };
275
+ 58B511F11A9E6C8500147676 /* Release */ = {
276
+ isa = XCBuildConfiguration;
277
+ buildSettings = {
278
+ HEADER_SEARCH_PATHS = (
279
+ "$(inherited)",
280
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
281
+ "$(SRCROOT)/../../../React/**",
282
+ "$(SRCROOT)/../../react-native/React/**",
283
+ );
284
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
285
+ OTHER_LDFLAGS = "-ObjC";
286
+ PRODUCT_NAME = SecuremeSdk;
287
+ SKIP_INSTALL = YES;
288
+ SWIFT_OBJC_BRIDGING_HEADER = "SecuremeSdk-Bridging-Header.h";
289
+ SWIFT_VERSION = 5.0;
290
+ };
291
+ name = Release;
292
+ };
293
+ /* End XCBuildConfiguration section */
294
+
295
+ /* Begin XCConfigurationList section */
296
+ 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "SecuremeSdk" */ = {
297
+ isa = XCConfigurationList;
298
+ buildConfigurations = (
299
+ 58B511ED1A9E6C8500147676 /* Debug */,
300
+ 58B511EE1A9E6C8500147676 /* Release */,
301
+ );
302
+ defaultConfigurationIsVisible = 0;
303
+ defaultConfigurationName = Release;
304
+ };
305
+ 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "SecuremeSdk" */ = {
306
+ isa = XCConfigurationList;
307
+ buildConfigurations = (
308
+ 58B511F01A9E6C8500147676 /* Debug */,
309
+ 58B511F11A9E6C8500147676 /* Release */,
310
+ );
311
+ defaultConfigurationIsVisible = 0;
312
+ defaultConfigurationName = Release;
313
+ };
314
+ /* End XCConfigurationList section */
315
+ };
316
+ rootObject = 58B511D31A9E6C8500147676 /* Project object */;
317
+ }