mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 21:48:04 -05:00
[INJIMOB-3193]add preauth and credential offer support (#1949)
[INJIMOB-3058]temp commit2 [INJIMOB-3058]temp commit2 [INJIMOB-3058] add support for pre-auth flow by credential-offer [INJIMOB-3187] animo working chcekpoint Signed-off-by: Abhishek Paul <paul.apaul.abhishek.ap@gmail.com>
This commit is contained in:
@@ -10,17 +10,13 @@
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
1E55C2072DB12044009DF38B /* IntentData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E55C2062DB12044009DF38B /* IntentData.swift */; };
|
||||
1E55C20B2DB120C2009DF38B /* RNDeepLinkIntentModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E55C20A2DB120C2009DF38B /* RNDeepLinkIntentModule.swift */; };
|
||||
1E55C20D2DB120E7009DF38B /* RNDeepLinkIntentModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E55C20C2DB120E7009DF38B /* RNDeepLinkIntentModule.m */; };
|
||||
1E6875E92CA554E80086D870 /* OpenID4VP in Frameworks */ = {isa = PBXBuildFile; productRef = 1E6875E82CA554E80086D870 /* OpenID4VP */; };
|
||||
1E6875EB2CA554FD0086D870 /* RNOpenID4VPModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E6875EA2CA554FD0086D870 /* RNOpenID4VPModule.m */; };
|
||||
1E6875ED2CA5550F0086D870 /* RNOpenID4VPModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E6875EC2CA5550F0086D870 /* RNOpenID4VPModule.swift */; };
|
||||
1EED69F92DA913D30042EAFC /* IntentData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EED69F82DA913D30042EAFC /* IntentData.swift */; };
|
||||
1EED69FB2DA914130042EAFC /* RNDeepLinkIntentModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EED69FA2DA914130042EAFC /* RNDeepLinkIntentModule.swift */; };
|
||||
1EED69FD2DA914D00042EAFC /* RNDeepLinkIntentModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EED69FC2DA914D00042EAFC /* RNDeepLinkIntentModule.m */; };
|
||||
34873E472CD8DAF3004DE734 /* VCIClient in Frameworks */ = {isa = PBXBuildFile; productRef = 34873E462CD8DAF3004DE734 /* VCIClient */; };
|
||||
34873E4D2CD8DD11004DE734 /* pixelpass in Frameworks */ = {isa = PBXBuildFile; productRef = 34873E4C2CD8DD11004DE734 /* pixelpass */; };
|
||||
3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; };
|
||||
717E6FEC33D6D8A2F9B01CBC /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 1D23B9CD47CFD7F3C87D202F /* PrivacyInfo.xcprivacy */; };
|
||||
73295844242A4AD3AA52D0BE /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = D98B96A488E54CBDB286B26F /* noop-file.swift */; };
|
||||
@@ -38,6 +34,8 @@
|
||||
9C7CDF3E2C7CBEDE00243A9A /* RNSecureKeystoreModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C7CDF3D2C7CBEDE00243A9A /* RNSecureKeystoreModule.swift */; };
|
||||
9C7CDF432C7CC13500243A9A /* RNSecureKeystoreModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7CDF422C7CC13500243A9A /* RNSecureKeystoreModule.m */; };
|
||||
9CCCA19E2CF87A8400D5A461 /* securekeystore in Frameworks */ = {isa = PBXBuildFile; productRef = 9CCCA19D2CF87A8400D5A461 /* securekeystore */; };
|
||||
9CFB37492DDDC9A000C199A8 /* pixelpass in Frameworks */ = {isa = PBXBuildFile; productRef = 9CFB37482DDDC9A000C199A8 /* pixelpass */; };
|
||||
9CFB374C2DDDC9B500C199A8 /* VCIClient in Frameworks */ = {isa = PBXBuildFile; productRef = 9CFB374B2DDDC9B500C199A8 /* VCIClient */; };
|
||||
B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; };
|
||||
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
|
||||
E86208152C0335C5007C3E24 /* RNVCIClientModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = E86208142C0335C5007C3E24 /* RNVCIClientModule.swift */; };
|
||||
@@ -72,9 +70,7 @@
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Inji/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Inji/main.m; sourceTree = "<group>"; };
|
||||
1D23B9CD47CFD7F3C87D202F /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Inji/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
|
||||
1E55C2062DB12044009DF38B /* IntentData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentData.swift; sourceTree = "<group>"; };
|
||||
1E55C20A2DB120C2009DF38B /* RNDeepLinkIntentModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNDeepLinkIntentModule.swift; sourceTree = "<group>"; };
|
||||
1E55C20C2DB120E7009DF38B /* RNDeepLinkIntentModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNDeepLinkIntentModule.m; sourceTree = "<group>"; };
|
||||
1E6875EA2CA554FD0086D870 /* RNOpenID4VPModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNOpenID4VPModule.m; sourceTree = "<group>"; };
|
||||
1E6875EC2CA5550F0086D870 /* RNOpenID4VPModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNOpenID4VPModule.swift; sourceTree = "<group>"; };
|
||||
1EED69F82DA913D30042EAFC /* IntentData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntentData.swift; sourceTree = "<group>"; };
|
||||
@@ -127,11 +123,11 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
34873E472CD8DAF3004DE734 /* VCIClient in Frameworks */,
|
||||
9CFB374C2DDDC9B500C199A8 /* VCIClient in Frameworks */,
|
||||
9C4850432C3E5873002ECBD5 /* ios-tuvali-library in Frameworks */,
|
||||
1E6875E92CA554E80086D870 /* OpenID4VP in Frameworks */,
|
||||
9CCCA19E2CF87A8400D5A461 /* securekeystore in Frameworks */,
|
||||
34873E4D2CD8DD11004DE734 /* pixelpass in Frameworks */,
|
||||
9CFB37492DDDC9A000C199A8 /* pixelpass in Frameworks */,
|
||||
96905EF65AED1B983A6B3ABC /* libPods-Inji.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -208,6 +204,7 @@
|
||||
D65327D7A22EEC0BE12398D9 /* Pods */,
|
||||
D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */,
|
||||
462CE07025BF40E9952DCDA0 /* Resources */,
|
||||
9CFB37462DDDC83900C199A8 /* Recovered References */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
@@ -230,6 +227,14 @@
|
||||
name = Inji;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CFB37462DDDC83900C199A8 /* Recovered References */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E55C20A2DB120C2009DF38B /* RNDeepLinkIntentModule.swift */,
|
||||
);
|
||||
name = "Recovered References";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BB2F792B24A3F905000567C9 /* Supporting */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -309,9 +314,9 @@
|
||||
packageProductDependencies = (
|
||||
9C4850422C3E5873002ECBD5 /* ios-tuvali-library */,
|
||||
1E6875E82CA554E80086D870 /* OpenID4VP */,
|
||||
34873E462CD8DAF3004DE734 /* VCIClient */,
|
||||
34873E4C2CD8DD11004DE734 /* pixelpass */,
|
||||
9CCCA19D2CF87A8400D5A461 /* securekeystore */,
|
||||
9CFB37482DDDC9A000C199A8 /* pixelpass */,
|
||||
9CFB374B2DDDC9B500C199A8 /* VCIClient */,
|
||||
);
|
||||
productName = Inji;
|
||||
productReference = 13B07F961A680F5B00A75B9A /* Inji.app */;
|
||||
@@ -340,11 +345,11 @@
|
||||
);
|
||||
mainGroup = 83CBB9F61A601CBA00E9B192;
|
||||
packageReferences = (
|
||||
34873E4B2CD8DD11004DE734 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */,
|
||||
34873E452CD8DAF3004DE734 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */,
|
||||
9C4850412C3E5873002ECBD5 /* XCRemoteSwiftPackageReference "tuvali-ios-swift" */,
|
||||
1E6875E72CA554E80086D870 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */,
|
||||
9CCCA19C2CF87A8400D5A461 /* XCRemoteSwiftPackageReference "secure-keystore-ios-swift" */,
|
||||
9CFB37472DDDC99F00C199A8 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */,
|
||||
9CFB374A2DDDC9B500C199A8 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */,
|
||||
);
|
||||
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
||||
projectDirPath = "";
|
||||
@@ -592,12 +597,11 @@
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_ENTITLEMENTS = Inji/Inji.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Distribution";
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = V2ABX7953Z;
|
||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = V2ABX7953Z;
|
||||
ENABLE_BITCODE = NO;
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
@@ -829,22 +833,6 @@
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
34873E452CD8DAF3004DE734 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/mosip/inji-vci-client-ios-swift";
|
||||
requirement = {
|
||||
branch = develop;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
34873E4B2CD8DD11004DE734 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/mosip/pixelpass-ios-swift";
|
||||
requirement = {
|
||||
branch = develop;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
9C4850412C3E5873002ECBD5 /* XCRemoteSwiftPackageReference "tuvali-ios-swift" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/mosip/tuvali-ios-swift/";
|
||||
@@ -861,6 +849,22 @@
|
||||
version = 0.3.0;
|
||||
};
|
||||
};
|
||||
9CFB37472DDDC99F00C199A8 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/mosip/pixelpass-ios-swift/";
|
||||
requirement = {
|
||||
branch = develop;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
9CFB374A2DDDC9B500C199A8 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/mosip/inji-vci-client-ios-swift";
|
||||
requirement = {
|
||||
branch = develop;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
@@ -869,16 +873,6 @@
|
||||
package = 1E6875E72CA554E80086D870 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */;
|
||||
productName = OpenID4VP;
|
||||
};
|
||||
34873E462CD8DAF3004DE734 /* VCIClient */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 34873E452CD8DAF3004DE734 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */;
|
||||
productName = VCIClient;
|
||||
};
|
||||
34873E4C2CD8DD11004DE734 /* pixelpass */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 34873E4B2CD8DD11004DE734 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */;
|
||||
productName = pixelpass;
|
||||
};
|
||||
9C4850422C3E5873002ECBD5 /* ios-tuvali-library */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 9C4850412C3E5873002ECBD5 /* XCRemoteSwiftPackageReference "tuvali-ios-swift" */;
|
||||
@@ -889,6 +883,16 @@
|
||||
package = 9CCCA19C2CF87A8400D5A461 /* XCRemoteSwiftPackageReference "secure-keystore-ios-swift" */;
|
||||
productName = securekeystore;
|
||||
};
|
||||
9CFB37482DDDC9A000C199A8 /* pixelpass */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 9CFB37472DDDC99F00C199A8 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */;
|
||||
productName = pixelpass;
|
||||
};
|
||||
9CFB374B2DDDC9B500C199A8 /* VCIClient */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 9CFB374A2DDDC9B500C199A8 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */;
|
||||
productName = VCIClient;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
};
|
||||
rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"originHash" : "178f6c7c607eeb08b99a4966015d08339500de64791888a2e79d6b7afae53659",
|
||||
"originHash" : "2d4bd4f2ff41823478f56a65a061c28a141105b8447f22a9d1cef51048d33e76",
|
||||
"pins" : [
|
||||
{
|
||||
"identity" : "alamofire",
|
||||
@@ -51,8 +51,8 @@
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/mosip/inji-openid4vp-ios-swift",
|
||||
"state" : {
|
||||
"branch" : "release-0.3.x",
|
||||
"revision" : "58ac61a84fdef03b7a1cc9e6f4ba3c4bfd57fe61"
|
||||
"branch" : "develop",
|
||||
"revision" : "c83527449f97c07e6f0a0bec239f9afe477bf216"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -60,8 +60,8 @@
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/mosip/inji-vci-client-ios-swift",
|
||||
"state" : {
|
||||
"branch" : "release-0.3.x",
|
||||
"revision" : "02f367bd2527f249145393a533f5175918c1fc8a"
|
||||
"branch" : "develop",
|
||||
"revision" : "8a39bbf7805af4c615904090a027fa472e5f4534"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -76,10 +76,10 @@
|
||||
{
|
||||
"identity" : "pixelpass-ios-swift",
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/mosip/pixelpass-ios-swift",
|
||||
"location" : "https://github.com/mosip/pixelpass-ios-swift/",
|
||||
"state" : {
|
||||
"branch" : "develop",
|
||||
"revision" : "760438e38e01bd9deb170585f37d7c05c5c1785a"
|
||||
"revision" : "78a8b507f5bd0046e273e3ba962696b44aea0e33"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -128,5 +128,5 @@
|
||||
}
|
||||
}
|
||||
],
|
||||
"version" : 2
|
||||
"version" : 3
|
||||
}
|
||||
|
||||
203
ios/Podfile.lock
203
ios/Podfile.lock
@@ -1189,6 +1189,27 @@ PODS:
|
||||
- React-Core
|
||||
- react-native-spinkit (1.4.1):
|
||||
- React
|
||||
- react-native-webview (13.13.5):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- hermes-engine
|
||||
- RCT-Folly (= 2024.01.01.00)
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
- React-Codegen
|
||||
- React-Core
|
||||
- React-debug
|
||||
- React-Fabric
|
||||
- React-featureflags
|
||||
- React-graphics
|
||||
- React-ImageManager
|
||||
- React-NativeModulesApple
|
||||
- React-RCTFabric
|
||||
- React-rendererdebug
|
||||
- React-utils
|
||||
- ReactCommon/turbomodule/bridging
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- React-nativeconfig (0.74.5)
|
||||
- React-NativeModulesApple (0.74.5):
|
||||
- glog
|
||||
@@ -1587,6 +1608,7 @@ DEPENDENCIES:
|
||||
- react-native-rsa-native (from `../node_modules/react-native-rsa-native`)
|
||||
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
|
||||
- react-native-spinkit (from `../node_modules/react-native-spinkit`)
|
||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||
- React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
|
||||
- React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
|
||||
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
|
||||
@@ -1798,6 +1820,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-safe-area-context"
|
||||
react-native-spinkit:
|
||||
:path: "../node_modules/react-native-spinkit"
|
||||
react-native-webview:
|
||||
:path: "../node_modules/react-native-webview"
|
||||
React-nativeconfig:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
React-NativeModulesApple:
|
||||
@@ -1881,33 +1905,33 @@ EXTERNAL SOURCES:
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
|
||||
biometric-sdk-react-native: 11925e3af28eecd733efc43670c5d8b4f014cddc
|
||||
biometric-sdk-react-native: d2a3a1279013cc4a7514a1b43fe557eb76e4e4c1
|
||||
BiometricSdk: 303e7329404ea4d922dc14108449d10d21574f77
|
||||
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
|
||||
BVLinearGradient: cb006ba232a1f3e4f341bb62c42d1098c284da70
|
||||
BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
|
||||
CatCrypto: a477899b6be4954e75be4897e732da098cc0a5a8
|
||||
DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
|
||||
EASClient: 95592393d6d1e60609f0afb373191d918c687b98
|
||||
EXApplication: ec862905fdab3a15bf6bd8ca1a99df7fc02d7762
|
||||
EXConstants: 89d35611505a8ce02550e64e43cd05565da35f9a
|
||||
EXFaceDetector: 917b279228541801bfa8ee22d867594ef84e31de
|
||||
EASClient: 1509a9a6b48b932ec61667644634daf2562983b8
|
||||
EXApplication: c08200c34daca7af7fd76ac4b9d606077410e8ad
|
||||
EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59
|
||||
EXFaceDetector: 50810192af3c2b80a53a6778b4e67af78b8e4cd5
|
||||
EXJSONUtils: 30c17fd9cc364d722c0946a550dfbf1be92ef6a4
|
||||
EXManifests: ebb7f551c340c0d06f3ecd9ae662e418bf68417c
|
||||
Expo: ed0a748eb6be0efd2c3df7f6de3f3158a14464c9
|
||||
ExpoAdapterGoogleSignIn: 97fc4b93c6b35837b5a5f2ff8ee5403548c1a4ba
|
||||
ExpoAsset: 286fee7ba711ce66bf20b315e68106b13b8629fc
|
||||
ExpoCamera: cf49d2d121a9f883be0f98dde15a2185a1dd42be
|
||||
ExpoCrypto: c5c052d5f9f668c21975cb4caf072cec23c823fa
|
||||
ExpoFileSystem: 2988caaf68b7cb706e36d382829d99811d9d76a5
|
||||
ExpoFont: 38dddf823e32740c2a9f37c926a33aeca736b5c4
|
||||
ExpoKeepAwake: dd02e65d49f1cfd9194640028ae2857e536eb1c9
|
||||
ExpoLocalAuthentication: b94db59f55df95350223200c746b4ddf0cb7cfc0
|
||||
ExpoLocalization: 1b4195ed48148c7f52ce790d3965cc19483fcbf2
|
||||
ExpoModulesCore: 9ac73e2f60e0ea1d30137ca96cfc8c2aa34ef2b2
|
||||
ExpoWebBrowser: cf10afe886891ab495877dada977fe6c269614a4
|
||||
EXManifests: c1fab4c3237675e7b0299ea8df0bcb14baca4f42
|
||||
Expo: 8c995afb875c15bf8439af0b20bcb9ed8f90d0bd
|
||||
ExpoAdapterGoogleSignIn: 6c55782832b7fbdc2c27dac05ef00445c103b8f3
|
||||
ExpoAsset: 323700f291684f110fb55f0d4022a3362ea9f875
|
||||
ExpoCamera: 929be541d1c1319fcf32f9f5d9df8b97804346b5
|
||||
ExpoCrypto: 156078f266bf28f80ecf5e2a9c3a0d6ffce07a1c
|
||||
ExpoFileSystem: 80bfe850b1f9922c16905822ecbf97acd711dc51
|
||||
ExpoFont: 00756e6c796d8f7ee8d211e29c8b619e75cbf238
|
||||
ExpoKeepAwake: 3b8815d9dd1d419ee474df004021c69fdd316d08
|
||||
ExpoLocalAuthentication: 9e02a56a4cf9868f0052656a93d4c94101a42ed7
|
||||
ExpoLocalization: f04eeec2e35bed01ab61c72ee1768ec04d093d01
|
||||
ExpoModulesCore: 831ece8311a489418746925820bbffdda587d6f4
|
||||
ExpoWebBrowser: 7595ccac6938eb65b076385fd23d035db9ecdc8e
|
||||
EXStructuredHeaders: cb8d1f698e144f4c5547b4c4963e1552f5d2b457
|
||||
EXUpdates: bb1b0790e3b2adfbb193ad6a51c567a4bd2adf9f
|
||||
EXUpdatesInterface: c3a9494c2173db6442c7d5ad4e5b984972760fd3
|
||||
EXUpdates: 52c797a4b71b25315353041c29571cd65ecc7141
|
||||
EXUpdatesInterface: 996527fd7d1a5d271eb523258d603f8f92038f24
|
||||
FBLazyVector: ac12dc084d1c8ec4cc4d7b3cf1b0ebda6dab85af
|
||||
fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
|
||||
glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f
|
||||
@@ -1920,7 +1944,7 @@ SPEC CHECKSUMS:
|
||||
GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae
|
||||
GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba
|
||||
hermes-engine: 8c1577f3fdb849cbe7729c2e7b5abc4b845e88f8
|
||||
ImageColors: 869f48b27ca2afb347fd0bada3257a5f698ee55e
|
||||
ImageColors: 88be684570585c07ae2750bff34eb7b78bfc53b4
|
||||
MLImage: a454f9f8ecfd537783a12f9488f5be1a68820829
|
||||
MLKitCommon: 3bc17c6f7d25ce3660f030350b46ae7ec9ebca6e
|
||||
MLKitFaceDetection: 617cb847441868a8bfd4b48d751c9b33c1104948
|
||||
@@ -1928,87 +1952,88 @@ SPEC CHECKSUMS:
|
||||
MMKV: aac95d817a100479445633f2b3ed8961b4ac5043
|
||||
MMKVCore: 9cfef4c48c6c46f66226fc2e4634d78490206a48
|
||||
nanopb: 438bc412db1928dac798aa6fd75726007be04262
|
||||
Permission-BluetoothPeripheral: aa44bde6f52530eb00c0128ee2575b68fe8abdfe
|
||||
Permission-Camera: 78301f2241e8297a80089d2452adbef2add8fe56
|
||||
Permission-LocationAccuracy: 7ee13967dc5272e08172f5afa40c408bf83b6196
|
||||
Permission-LocationWhenInUse: 59523bb3d8b95b267baa172ecbf1f31bc672795a
|
||||
Permission-BluetoothPeripheral: 2b88a131074edafd8a46a5cda4ba610ec986d2fb
|
||||
Permission-Camera: 7ec9ee99704766ff9b90198183387a7f5d82b0c1
|
||||
Permission-LocationAccuracy: a38ddb5c5d0b8e656f3c86e4a500f9bb88bc099d
|
||||
Permission-LocationWhenInUse: 24d97eeb25d8ff9f2232e070f792eeb1360ccaf0
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
Protobuf: 0c5a9e64f38aed73b5d1ff88a20112ce195cf909
|
||||
RCT-Folly: 5dc73daec3476616d19e8a53f0156176f7b55461
|
||||
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
|
||||
RCTDeprecation: 3afceddffa65aee666dafd6f0116f1d975db1584
|
||||
RCTRequired: ec1239bc9d8bf63e10fb92bd8b26171a9258e0c1
|
||||
RCTTypeSafety: f5ecbc86c5c5fa163c05acb7a1c5012e15b5f994
|
||||
ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
|
||||
React: fc9fa7258eff606f44d58c5b233a82dc9cf09018
|
||||
React-callinvoker: e3fab14d69607fb7e8e3a57e5a415aed863d3599
|
||||
React-Codegen: 3963186cb6a4ef21b5e67dcf7badf359867ff6df
|
||||
React-Core: c3f589f104983dec3c3eeec5e70d61aa811bc236
|
||||
React-CoreModules: 864932ddae3ead5af5bfb05f9bbc2cedcb958b39
|
||||
React-cxxreact: bd9146108c44e6dbb99bba4568ce7af0304a2419
|
||||
React-Codegen: 6fa87b7c6b8efcd0cef4bfeaec8c8bc8a6abe75a
|
||||
React-Core: 3a5fd9e781cecf87803e5b091496a606a3df774a
|
||||
React-CoreModules: cbf4707dafab8f9f826ac0c63a07d0bf5d01e256
|
||||
React-cxxreact: 7b188556271e3c7fdf22a04819f6a6225045b9dd
|
||||
React-debug: d30893c49ae1bce4037ea5cd8bb2511d2a38d057
|
||||
React-Fabric: a171830e52baf8ec2b175c6a3791e01bbb92f1fb
|
||||
React-FabricImage: ad154af0067f4b5dc5a41f607e48ee343641e903
|
||||
React-Fabric: 826729dd2304fda9b89ff0a579f60ba2a470bc26
|
||||
React-FabricImage: 2ad1fb8ffa5778eda9ed204a7b3cdd70bc333ce7
|
||||
React-featureflags: 4ae83e72d9a92452793601ac9ac7d2280e486089
|
||||
React-graphics: ed7d57965140168de86835946e8f1210c72c65dc
|
||||
React-hermes: 177b1efdf3b8f10f4ca12b624b83fb4d4ccb2884
|
||||
React-ImageManager: 3a50d0ee0bf81b1a6f23a0c5b30388293bcd6004
|
||||
React-jserrorhandler: dcd62f5ca1c724c19637595ef7f45b78018e758f
|
||||
React-jsi: 0abe1b0881b67caf8d8df6a57778dd0d3bb9d9a5
|
||||
React-jsiexecutor: f6ca8c04f19f6a3acaa9610f7fb728f39d6e3248
|
||||
React-jsinspector: db98771eae84e6f86f0ca5d9dcc572baadbfefc0
|
||||
React-jsitracing: f8367edacc50bb3f9f056a5aeafb8cee5849fafb
|
||||
React-logger: 780b9ee9cec7d44eabc4093de90107c379078cb6
|
||||
React-Mapbuffer: f544f00b98dbdd8cbae96dd2bdb8b47f719976e0
|
||||
react-native-app-auth: 5bf64c0d0e7cbea8ff6ea0b90e4397c8dcfc656a
|
||||
react-native-cloud-storage: ddc959e7ddb08ff18ce9389787aa7254d7f45ee3
|
||||
react-native-get-random-values: d16467cf726c618e9c7a8c3c39c31faa2244bbba
|
||||
react-native-image-editor: 29a86ccb509072a429c56abf73c35d63288108e5
|
||||
react-native-location: 70e6bdfe4a98a80ebda57fd5b30994e48d082e99
|
||||
react-native-mmkv-storage: 45287ac5851a967d15f6c59b4a8aee6331bec034
|
||||
react-native-netinfo: 2e3c27627db7d49ba412bfab25834e679db41e21
|
||||
react-native-restart: df7caae89026a8ab2ecdd82839978f657701f51d
|
||||
react-native-rsa-native: a7931cdda1f73a8576a46d7f431378c5550f0c38
|
||||
react-native-safe-area-context: df9763c5de6fa38883028e243a0b60123acb8858
|
||||
react-native-spinkit: 96a74c3519fab0eded2ab8c285f774aa3f4b7944
|
||||
React-graphics: 61a026e1c1e7e20d20ac9fec6f6de631732b233d
|
||||
React-hermes: a7054fbcbda3957e3c5eaad06ef9bf79998d535a
|
||||
React-ImageManager: 2bbd6eb2e696bc680f76f84563e4b87d241614e1
|
||||
React-jserrorhandler: 56fa04d49bfbe54ddfece7916673a73ebfea286b
|
||||
React-jsi: f3ce1dd2e950b6ad12b65ea3ef89168f1b94c584
|
||||
React-jsiexecutor: b4df3a27973d82f9abf3c4bd0f88e042cda25f16
|
||||
React-jsinspector: 97ea746c023687de7313ee289817d6991d596c7d
|
||||
React-jsitracing: 3b6060bbf5317663667e1dd93560c7943ab86ccc
|
||||
React-logger: 257858bd55f3a4e1bc0cf07ddc8fb9faba6f8c7c
|
||||
React-Mapbuffer: 6c1cacdbf40b531f549eba249e531a7d0bfd8e7f
|
||||
react-native-app-auth: 63fa4e58c5bd29aeb974d3a06a23c5858322d533
|
||||
react-native-cloud-storage: 15f24d9b9f175ce07473c3af86b6add72a727c95
|
||||
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
|
||||
react-native-image-editor: b09448ba9171308ff5ac6c9f66f49ad4cbfaee06
|
||||
react-native-location: 5a40ec1cc6abf2f6d94df979f98ec76c3a415681
|
||||
react-native-mmkv-storage: cfb6854594cfdc5f7383a9e464bb025417d1721c
|
||||
react-native-netinfo: bdb108d340cdb41875c9ced535977cac6d2ff321
|
||||
react-native-restart: 45c8dca02491980f2958595333cbccd6877cb57e
|
||||
react-native-rsa-native: 12132eb627797529fdb1f0d22fd0f8f9678df64a
|
||||
react-native-safe-area-context: a240ad4b683349e48b1d51fed1611138d1bdad97
|
||||
react-native-spinkit: da294fd828216ad211fe36a5c14c1e09f09e62db
|
||||
react-native-webview: db97533d0b7534225f48ad4e0c313b83cfae8a20
|
||||
React-nativeconfig: ba9a2e54e2f0882cf7882698825052793ed4c851
|
||||
React-NativeModulesApple: 84aaad2b0e546d7b839837ca537f6e72804a4cad
|
||||
React-NativeModulesApple: 8d11ff8955181540585c944cf48e9e7236952697
|
||||
React-perflogger: ed4e0c65781521e0424f2e5e40b40cc7879d737e
|
||||
React-RCTActionSheet: 49d53ff03bb5688ca4606c55859053a0cd129ea5
|
||||
React-RCTAnimation: 3075449f26cb98a52bcbf51cccd0c7954e2a71db
|
||||
React-RCTAppDelegate: 9a419c4dda9dd039ad851411546dd297b930c454
|
||||
React-RCTBlob: e81ab773a8fc1e9dceed953e889f936a7b7b3aa6
|
||||
React-RCTFabric: 47a87a3e3fa751674f7e64d0bcd58976b8c57db9
|
||||
React-RCTImage: d570531201c6dce7b5b63878fa8ecec0cc311c4c
|
||||
React-RCTLinking: af888972b925d2811633d47853c479e88c35eb4d
|
||||
React-RCTNetwork: 5728a06ff595003eca628f43f112a804f4a9a970
|
||||
React-RCTSettings: ba3665b0569714a8aaceee5c7d23b943e333fa55
|
||||
React-RCTText: b733fa984f0336b072e47512898ba91214f66ddb
|
||||
React-RCTVibration: 0cbcbbd8781b6f6123671bae9ee5dd20d621af6c
|
||||
React-rendererdebug: 9fc8f7d0bd19f2a3fe3791982af550b5e1535ff7
|
||||
React-RCTAnimation: 07b4923885c52c397c4ec103924bf6e53b42c73e
|
||||
React-RCTAppDelegate: 316e295076734baf9bdf1bfac7d92ab647aed930
|
||||
React-RCTBlob: 85c57b0d5e667ff8a472163ba3af0628171a64bb
|
||||
React-RCTFabric: 97c1465ded4dc92841f5376a39e43e1b2c455f40
|
||||
React-RCTImage: b965c85bec820e2a9c154b1fb00a2ecdd59a9c92
|
||||
React-RCTLinking: 75f04a5f27c26c4e73a39c50df470820d219df79
|
||||
React-RCTNetwork: c1a9143f4d5778efc92da40d83969d03912ccc24
|
||||
React-RCTSettings: c6800f91c0ecd48868cd5db754b0b0a7f5ffe039
|
||||
React-RCTText: b923e24f9b7250bc4f7ab154c4168ad9f8d8fc9d
|
||||
React-RCTVibration: 08c4f0c917c435b3619386c25a94ee5d64c250f0
|
||||
React-rendererdebug: 3cda04217d9df67b94397ee0ead8ef3d8b7e427b
|
||||
React-rncore: 4013508a2f3fcf46c961919bbbd4bfdda198977e
|
||||
React-RuntimeApple: a852a6e06ab20711658873f39cb10b0033bea19d
|
||||
React-RuntimeCore: 12e5e176c0cb09926f3e6f37403a84d2e0f203a7
|
||||
React-RuntimeApple: 447844a2bdb0a03ffd24e5b4a4b96cfc50325b88
|
||||
React-RuntimeCore: 9b5bffdaccee9b707b1c2694c9044e13ff0bb087
|
||||
React-runtimeexecutor: 0e688aefc14c6bc8601f4968d8d01c3fb6446844
|
||||
React-RuntimeHermes: 80c03a5215520c9733764ba11cbe535053c9746d
|
||||
React-runtimescheduler: 2cbd0f3625b30bba08e8768776107f6f0203159b
|
||||
React-utils: 9fa4e5d0b5e6c6c85c958f19d6ef854337886417
|
||||
ReactCommon: 9f285823dbe955099978d9bff65a7653ca029256
|
||||
RNAppleAuthentication: 445222cf501db405f0b3713593a6d0fecc87fd05
|
||||
RNArgon2: 708e188b7a4d4ec8baf62463927c47abef453a94
|
||||
RNBluetoothStateManager: 221894bb59b22ec8be372740178545d0bbdb1ab6
|
||||
RNCClipboard: efe1b27ad1ea378c60c8c8aabfd130961bbeb474
|
||||
RNCPicker: 15ad063c72ecba748be9edea62a5bdce53090aa6
|
||||
RNDeviceInfo: 98bb51ba1519cd3f19f14e7236b5bb1c312c780f
|
||||
RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8
|
||||
RNGestureHandler: 326e35460fb6c8c64a435d5d739bea90d7ed4e49
|
||||
RNGoogleSignin: bee4a648cf7bfe848b3674b5d487504831a115dd
|
||||
RNLocalize: d024afa9204c13885e61dc88b8190651bcaabac9
|
||||
RNPermissions: 1e3fb35b2ac79aaad28788302ead31ca8230d611
|
||||
RNScreens: a2d8a2555b4653d7a19706eb172f855657ac30d7
|
||||
RNSecureRandom: b64d263529492a6897e236a22a2c4249aa1b53dc
|
||||
RNShare: 694e19d7f74ac4c04de3a8af0649e9ccc03bd8b1
|
||||
RNSVG: 0e7deccab0678200815104223aadd5ca734dd41d
|
||||
RNZipArchive: 2b0d34cfe303447f5b55ae5658ec62f1ebce4ab5
|
||||
React-RuntimeHermes: 4d6ef6bb0f2b0b40d59143317f6b99c82764c959
|
||||
React-runtimescheduler: cfbe85c3510c541ec6dc815c7729b41304b67961
|
||||
React-utils: f242eb7e7889419d979ca0e1c02ccc0ea6e43b29
|
||||
ReactCommon: f7da14a8827b72704169a48c929bcde802698361
|
||||
RNAppleAuthentication: e99eaf3c4c01ad8ecb6125dd6f0cfd98871685b5
|
||||
RNArgon2: 1481820722fd4af1575c09f7fc9ad67c00ee8a42
|
||||
RNBluetoothStateManager: ae6a26260cbdf1827b58bd3bcc563527d61e6488
|
||||
RNCClipboard: 3f0451a8100393908bea5c5c5b16f96d45f30bfc
|
||||
RNCPicker: 3e2c37a8328f368ce14da050cdc8231deb5fc9f9
|
||||
RNDeviceInfo: 59344c19152c4b2b32283005f9737c5c64b42fba
|
||||
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
|
||||
RNGestureHandler: 2282cfbcf86c360d29f44ace393203afd5c6cff7
|
||||
RNGoogleSignin: aac5c1ec73422109dec1da770247a1e410dcc620
|
||||
RNLocalize: 298e85ce16540a11de40c1a588ead39fc5e9a072
|
||||
RNPermissions: f1b49dd05fa9b83993cd05a9ee115247944d8f1a
|
||||
RNScreens: b32a9ff15bea7fcdbe5dff6477bc503f792b1208
|
||||
RNSecureRandom: 07efbdf2cd99efe13497433668e54acd7df49fef
|
||||
RNShare: 0fad69ae2d71de9d1f7b9a43acf876886a6cb99c
|
||||
RNSVG: 43b64ed39c14ce830d840903774154ca0c1f27ec
|
||||
RNZipArchive: ef9451b849c45a29509bf44e65b788829ab07801
|
||||
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
|
||||
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
|
||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||
@@ -2017,6 +2042,6 @@ SPEC CHECKSUMS:
|
||||
Yoga: 950bbfd7e6f04790fdb51149ed51df41f329fcc8
|
||||
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
|
||||
|
||||
PODFILE CHECKSUM: 4d2ee2cbf5f1553030d56659748bb7baece24998
|
||||
PODFILE CHECKSUM: a555e3bf20e7a7fbd521747ca919066410e3af18
|
||||
|
||||
COCOAPODS: 1.16.2
|
||||
|
||||
@@ -3,14 +3,34 @@
|
||||
|
||||
@interface RCT_EXTERN_MODULE(InjiVciClient, NSObject)
|
||||
|
||||
RCT_EXTERN_METHOD(init:(NSString *)appId)
|
||||
// Initializes the VCIClient with a traceability ID
|
||||
RCT_EXTERN_METHOD(init:(NSString *)traceabilityId)
|
||||
|
||||
RCT_EXTERN_METHOD(requestCredential:(id)issuerMeta
|
||||
proof:(NSString *)proof
|
||||
accessToken:(NSString *)accessToken
|
||||
// Requests a credential using a credential offer string and client metadata (both as JSON strings)
|
||||
RCT_EXTERN_METHOD(requestCredentialByOffer:(NSString *)credentialOffer
|
||||
clientMetadata:(NSString *)clientMetadata
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject);
|
||||
rejecter:(RCTPromiseRejectBlock)reject)
|
||||
|
||||
RCT_EXTERN_METHOD(requiresMainQueueSetup:(BOOL))
|
||||
// Requests a credential from a trusted issuer using issuer metadata and client metadata (both as JSON strings)
|
||||
RCT_EXTERN_METHOD(requestCredentialFromTrustedIssuer:(NSString *)issuerMetadata
|
||||
clientMetadata:(NSString *)clientMetadata
|
||||
resolver:(RCTPromiseResolveBlock)resolve
|
||||
rejecter:(RCTPromiseRejectBlock)reject)
|
||||
|
||||
// Sends proof JWT back to native side (in response to onRequestProof)
|
||||
RCT_EXTERN_METHOD(sendProofFromJS:(NSString *)jwtProof)
|
||||
|
||||
// Sends authorization code back to native side (in response to onRequestAuthCode)
|
||||
RCT_EXTERN_METHOD(sendAuthCodeFromJS:(NSString *)authCode)
|
||||
|
||||
// Sends tx_code back to native side (in response to onRequestTxCode)
|
||||
RCT_EXTERN_METHOD(sendTxCodeFromJS:(NSString *)txCode)
|
||||
|
||||
// Sends issuer trust decision (true/false) back to native side (in response to onCheckIssuerTrust)
|
||||
RCT_EXTERN_METHOD(sendIssuerTrustResponseFromJS:(BOOL)isTrusted)
|
||||
|
||||
// Required by React Native
|
||||
RCT_EXTERN_METHOD(requiresMainQueueSetup:(BOOL)isRequired)
|
||||
|
||||
@end
|
||||
|
||||
@@ -1,86 +1,222 @@
|
||||
import Foundation
|
||||
import VCIClient
|
||||
import React
|
||||
import VCIClient
|
||||
|
||||
@objc(InjiVciClient)
|
||||
class RNVCIClientModule: NSObject, RCTBridgeModule {
|
||||
private var vciClient: VCIClient?
|
||||
private var pendingProofContinuation: ((String) -> Void)?
|
||||
private var pendingAuthCodeContinuation: ((String) -> Void)?
|
||||
private var pendingTxCodeContinuation: ((String) -> Void)?
|
||||
private var pendingIssuerTrustDecision: ((Bool) -> Void)?
|
||||
|
||||
private var vciClient: VCIClient?
|
||||
|
||||
static func moduleName() -> String {
|
||||
return "InjiVciClient"
|
||||
}
|
||||
|
||||
@objc
|
||||
func `init`(_ traceabilityId: String) {
|
||||
vciClient = VCIClient(traceabilityId: traceabilityId)
|
||||
static func moduleName() -> String {
|
||||
return "InjiVciClient"
|
||||
}
|
||||
|
||||
@objc
|
||||
func requestCredential(_ issuerMeta: AnyObject, proof: String, accessToken: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
||||
Task {
|
||||
do {
|
||||
guard let issuerMetaDict = issuerMeta as? [String: Any] else {
|
||||
reject(nil, "Invalid issuerMeta format", nil)
|
||||
return
|
||||
}
|
||||
@objc
|
||||
func `init`(_ traceabilityId: String) {
|
||||
vciClient = VCIClient(traceabilityId: traceabilityId)
|
||||
}
|
||||
|
||||
@objc
|
||||
func requestCredentialByOffer(
|
||||
_ credentialOffer: String,
|
||||
clientMetadata: String,
|
||||
resolver resolve: @escaping RCTPromiseResolveBlock,
|
||||
rejecter reject: @escaping RCTPromiseRejectBlock
|
||||
) {
|
||||
Task {
|
||||
do {
|
||||
guard let vciClient = vciClient else {
|
||||
reject(nil, "VCIClient not initialized", nil)
|
||||
return
|
||||
}
|
||||
|
||||
guard let credentialAudience = issuerMetaDict["credentialAudience"] as? String,
|
||||
let credentialEndpoint = issuerMetaDict["credentialEndpoint"] as? String,
|
||||
let downloadTimeoutInMilliseconds = issuerMetaDict["downloadTimeoutInMilliSeconds"] as? Int,
|
||||
let credentialFormatString = issuerMetaDict["credentialFormat"] as? String,
|
||||
let credentialFormat = CredentialFormat(rawValue: credentialFormatString) else {
|
||||
reject(nil, "Invalid issuerMeta format", nil)
|
||||
return
|
||||
}
|
||||
let clientMeta = try parseClientMetadata(from: clientMetadata)
|
||||
|
||||
var issuerMetaObject : IssuerMeta
|
||||
let response = try await vciClient.requestCredentialByCredentialOffer(
|
||||
credentialOffer: credentialOffer,
|
||||
clientMetadata: clientMeta,
|
||||
getTxCode: { inputMode, description, length in
|
||||
try await self.getTxCodeHook(
|
||||
inputMode: inputMode,
|
||||
description: description,
|
||||
length: length
|
||||
)
|
||||
},
|
||||
getProofJwt: { accessToken, cNonce, issuerMetadata, credentialConfigId in
|
||||
try await self.getProofContinuationHook(
|
||||
accessToken: accessToken,
|
||||
cNonce: cNonce,
|
||||
issuerMetadata: issuerMetadata,
|
||||
credentialConfigId: credentialConfigId
|
||||
)
|
||||
},
|
||||
getAuthCode: { authUrl in
|
||||
try await self.getAuthCodeContinuationHook(authUrl: authUrl)
|
||||
},
|
||||
onCheckIssuerTrust: { issuerMetadata in
|
||||
try await self.getIssuerTrustDecisionHook(issuerMetadata: issuerMetadata)
|
||||
}
|
||||
)
|
||||
|
||||
switch credentialFormat {
|
||||
case .ldp_vc:
|
||||
guard let credentialType = issuerMetaDict["credentialType"] as? [String] else {
|
||||
reject(nil, "Invalid issuerMeta format", nil)
|
||||
return
|
||||
}
|
||||
issuerMetaObject = IssuerMeta(
|
||||
credentialAudience: credentialAudience,
|
||||
credentialEndpoint: credentialEndpoint,
|
||||
downloadTimeoutInMilliseconds: downloadTimeoutInMilliseconds,
|
||||
credentialType: credentialType,
|
||||
credentialFormat: credentialFormat
|
||||
)
|
||||
|
||||
case .mso_mdoc:
|
||||
guard let doctype = issuerMetaDict["doctype"] as? String,
|
||||
let claims = issuerMetaDict["claims"] as? [String:Any] else {
|
||||
reject(nil, "Invalid issuerMeta format", nil)
|
||||
return
|
||||
}
|
||||
issuerMetaObject = IssuerMeta(
|
||||
credentialAudience: credentialAudience,
|
||||
credentialEndpoint: credentialEndpoint,
|
||||
downloadTimeoutInMilliseconds: downloadTimeoutInMilliseconds,
|
||||
credentialFormat: .mso_mdoc,
|
||||
docType: doctype,
|
||||
claims: claims
|
||||
)
|
||||
resolve(try response?.toJsonString())
|
||||
} catch {
|
||||
reject(nil, error.localizedDescription, nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
func requestCredentialFromTrustedIssuer(
|
||||
_ issuerMetadata: String,
|
||||
clientMetadata: String,
|
||||
resolver resolve: @escaping RCTPromiseResolveBlock,
|
||||
rejecter reject: @escaping RCTPromiseRejectBlock
|
||||
) {
|
||||
Task {
|
||||
do {
|
||||
guard let vciClient = vciClient else {
|
||||
reject(nil, "VCIClient not initialized", nil)
|
||||
return
|
||||
}
|
||||
|
||||
let issuer = try parseIssuerMeta(from: issuerMetadata)
|
||||
let clientMeta = try parseClientMetadata(from: clientMetadata)
|
||||
|
||||
let response = try await vciClient.requestCredentialFromTrustedIssuer(
|
||||
issuerMetadata: issuer,
|
||||
clientMetadata: clientMeta,
|
||||
getProofJwt: { accessToken, cNonce, issuerMetadata, credentialConfigId in
|
||||
try await self.getProofContinuationHook(
|
||||
accessToken: accessToken,
|
||||
cNonce: cNonce,
|
||||
issuerMetadata: issuerMetadata,
|
||||
credentialConfigId: credentialConfigId
|
||||
)
|
||||
},
|
||||
getAuthCode: { authUrl in
|
||||
try await self.getAuthCodeContinuationHook(authUrl: authUrl)
|
||||
}
|
||||
)
|
||||
|
||||
let response = try await vciClient!.requestCredential(issuerMeta: issuerMetaObject, proof: JWTProof(jwt: proof), accessToken: accessToken)!
|
||||
let responseString = try response.toJsonString()
|
||||
resolve(responseString)
|
||||
} catch {
|
||||
reject(nil,error.localizedDescription, nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
resolve(try response?.toJsonString())
|
||||
} catch {
|
||||
reject(nil, error.localizedDescription, nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@objc
|
||||
static func requiresMainQueueSetup() -> Bool {
|
||||
return true
|
||||
}
|
||||
private func getProofContinuationHook(
|
||||
accessToken: String,
|
||||
cNonce: String?,
|
||||
issuerMetadata: [String: Any]?,
|
||||
credentialConfigId: String?
|
||||
) async throws -> String {
|
||||
var issuerMetadataJson: String = ""
|
||||
|
||||
if let issuerMetadata = issuerMetadata {
|
||||
if let data = try? JSONSerialization.data(withJSONObject: issuerMetadata, options: []),
|
||||
let jsonString = String(data: data, encoding: .utf8) {
|
||||
issuerMetadataJson = jsonString
|
||||
}
|
||||
}
|
||||
|
||||
if let bridge = RCTBridge.current() {
|
||||
let payload: [String: Any] = [
|
||||
"accessToken": accessToken,
|
||||
"cNonce": cNonce ?? NSNull(),
|
||||
"issuerMetadata": issuerMetadataJson,
|
||||
"credentialConfigurationId": credentialConfigId ?? NSNull(),
|
||||
]
|
||||
bridge.eventDispatcher().sendAppEvent(withName: "onRequestProof", body: payload)
|
||||
}
|
||||
|
||||
return try await withCheckedThrowingContinuation { continuation in
|
||||
self.pendingProofContinuation = { jwt in continuation.resume(returning: jwt) }
|
||||
}
|
||||
}
|
||||
|
||||
private func getAuthCodeContinuationHook(authUrl: String) async throws -> String {
|
||||
if let bridge = RCTBridge.current() {
|
||||
bridge.eventDispatcher().sendAppEvent(withName: "onRequestAuthCode", body: ["authorizationEndpoint": authUrl])
|
||||
}
|
||||
|
||||
return try await withCheckedThrowingContinuation { continuation in
|
||||
self.pendingAuthCodeContinuation = { code in continuation.resume(returning: code) }
|
||||
}
|
||||
}
|
||||
|
||||
private func getTxCodeHook(inputMode: String?, description: String?, length: Int? ) async throws -> String {
|
||||
if let bridge = RCTBridge.current() {
|
||||
bridge.eventDispatcher().sendAppEvent(withName: "onRequestTxCode", body: [
|
||||
"inputMode": inputMode,
|
||||
"description": description,
|
||||
"length": length
|
||||
])
|
||||
}
|
||||
|
||||
return try await withCheckedThrowingContinuation { continuation in
|
||||
self.pendingTxCodeContinuation = { code in continuation.resume(returning: code) }
|
||||
}
|
||||
}
|
||||
|
||||
private func getIssuerTrustDecisionHook(issuerMetadata: [String: Any]) async throws -> Bool {
|
||||
var metadataJson = ""
|
||||
if let data = try? JSONSerialization.data(withJSONObject: issuerMetadata, options: []),
|
||||
let string = String(data: data, encoding: .utf8) {
|
||||
metadataJson = string
|
||||
}
|
||||
|
||||
if let bridge = RCTBridge.current() {
|
||||
bridge.eventDispatcher().sendAppEvent(withName: "onCheckIssuerTrust", body: ["issuerMetadata": metadataJson])
|
||||
}
|
||||
|
||||
return try await withCheckedThrowingContinuation { continuation in
|
||||
self.pendingIssuerTrustDecision = { decision in continuation.resume(returning: decision) }
|
||||
}
|
||||
}
|
||||
|
||||
@objc(sendProofFromJS:)
|
||||
func sendProofFromJS(_ jwt: String) {
|
||||
pendingProofContinuation?(jwt)
|
||||
pendingProofContinuation = nil
|
||||
}
|
||||
|
||||
@objc(sendAuthCodeFromJS:)
|
||||
func sendAuthCodeFromJS(_ code: String) {
|
||||
pendingAuthCodeContinuation?(code)
|
||||
pendingAuthCodeContinuation = nil
|
||||
}
|
||||
|
||||
@objc(sendTxCodeFromJS:)
|
||||
func sendTxCodeFromJS(_ code: String) {
|
||||
pendingTxCodeContinuation?(code)
|
||||
pendingTxCodeContinuation = nil
|
||||
}
|
||||
|
||||
@objc(sendIssuerTrustResponseFromJS:)
|
||||
func sendIssuerTrustResponseFromJS(_ trusted: Bool) {
|
||||
pendingIssuerTrustDecision?(trusted)
|
||||
pendingIssuerTrustDecision = nil
|
||||
}
|
||||
|
||||
private func parseClientMetadata(from jsonString: String) throws -> ClientMetaData {
|
||||
guard let data = jsonString.data(using: .utf8) else {
|
||||
throw NSError(domain: "Invalid JSON string for clientMetadata", code: 0)
|
||||
}
|
||||
return try JSONDecoder().decode(ClientMetaData.self, from: data)
|
||||
}
|
||||
|
||||
private func parseIssuerMeta(from jsonString: String) throws -> IssuerMetadata {
|
||||
guard let data = jsonString.data(using: .utf8) else {
|
||||
throw NSError(domain: "Invalid JSON string for issuerMetadata", code: 0)
|
||||
}
|
||||
return try JSONDecoder().decode(IssuerMetadata.self, from: data)
|
||||
}
|
||||
|
||||
@objc static func requiresMainQueueSetup() -> Bool {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user