[INJIMOB-3242]: Release 0.17.x sync to develop (#1960)

* [INJIMOB-3242]: update logic to create detached JWS for OVP flow

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3242]: update authenticateVerifier parameters to match the lbrary parameters

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3242]: Release 0.17.x sync to develop

Signed-off-by: Abhishek Paul <paul.apaul.abhishek.ap@gmail.com>

---------

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>
Signed-off-by: Abhishek Paul <paul.apaul.abhishek.ap@gmail.com>
Co-authored-by: Alka Prasad <prasadalka1998@gmail.com>
This commit is contained in:
abhip2565
2025-06-16 23:11:57 +05:30
committed by GitHub
parent 0927c23e9b
commit f6bd61c3b4
13 changed files with 728 additions and 236 deletions

View File

@@ -11,7 +11,6 @@
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
1E55C20B2DB120C2009DF38B /* RNDeepLinkIntentModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E55C20A2DB120C2009DF38B /* RNDeepLinkIntentModule.swift */; };
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 */; };
@@ -34,8 +33,9 @@
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 */; };
9CD470CE2DFFF86600C207F9 /* OpenID4VP in Frameworks */ = {isa = PBXBuildFile; productRef = 9CD470CD2DFFF86600C207F9 /* OpenID4VP */; };
9CD470D12DFFF89C00C207F9 /* VCIClient in Frameworks */ = {isa = PBXBuildFile; productRef = 9CD470D02DFFF89C00C207F9 /* VCIClient */; };
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 */; };
@@ -123,11 +123,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
9CFB374C2DDDC9B500C199A8 /* VCIClient in Frameworks */,
9CD470D12DFFF89C00C207F9 /* VCIClient in Frameworks */,
9C4850432C3E5873002ECBD5 /* ios-tuvali-library in Frameworks */,
1E6875E92CA554E80086D870 /* OpenID4VP in Frameworks */,
9CCCA19E2CF87A8400D5A461 /* securekeystore in Frameworks */,
9CFB37492DDDC9A000C199A8 /* pixelpass in Frameworks */,
9CD470CE2DFFF86600C207F9 /* OpenID4VP in Frameworks */,
96905EF65AED1B983A6B3ABC /* libPods-Inji.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -313,10 +313,10 @@
name = Inji;
packageProductDependencies = (
9C4850422C3E5873002ECBD5 /* ios-tuvali-library */,
1E6875E82CA554E80086D870 /* OpenID4VP */,
9CCCA19D2CF87A8400D5A461 /* securekeystore */,
9CFB37482DDDC9A000C199A8 /* pixelpass */,
9CFB374B2DDDC9B500C199A8 /* VCIClient */,
9CD470CD2DFFF86600C207F9 /* OpenID4VP */,
9CD470D02DFFF89C00C207F9 /* VCIClient */,
);
productName = Inji;
productReference = 13B07F961A680F5B00A75B9A /* Inji.app */;
@@ -346,10 +346,10 @@
mainGroup = 83CBB9F61A601CBA00E9B192;
packageReferences = (
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" */,
9CD470CC2DFFF86600C207F9 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */,
9CD470CF2DFFF89C00C207F9 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */,
);
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
projectDirPath = "";
@@ -825,14 +825,6 @@
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
1E6875E72CA554E80086D870 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/inji-openid4vp-ios-swift";
requirement = {
branch = develop;
kind = branch;
};
};
9C4850412C3E5873002ECBD5 /* XCRemoteSwiftPackageReference "tuvali-ios-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/tuvali-ios-swift/";
@@ -849,6 +841,22 @@
version = 0.3.0;
};
};
9CD470CC2DFFF86600C207F9 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/inji-openid4vp-ios-swift";
requirement = {
branch = develop;
kind = branch;
};
};
9CD470CF2DFFF89C00C207F9 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/inji-vci-client-ios-swift/";
requirement = {
branch = develop;
kind = branch;
};
};
9CFB37472DDDC99F00C199A8 /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/pixelpass-ios-swift/";
@@ -857,22 +865,9 @@
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 */
1E6875E82CA554E80086D870 /* OpenID4VP */ = {
isa = XCSwiftPackageProductDependency;
package = 1E6875E72CA554E80086D870 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */;
productName = OpenID4VP;
};
9C4850422C3E5873002ECBD5 /* ios-tuvali-library */ = {
isa = XCSwiftPackageProductDependency;
package = 9C4850412C3E5873002ECBD5 /* XCRemoteSwiftPackageReference "tuvali-ios-swift" */;
@@ -883,16 +878,21 @@
package = 9CCCA19C2CF87A8400D5A461 /* XCRemoteSwiftPackageReference "secure-keystore-ios-swift" */;
productName = securekeystore;
};
9CD470CD2DFFF86600C207F9 /* OpenID4VP */ = {
isa = XCSwiftPackageProductDependency;
package = 9CD470CC2DFFF86600C207F9 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */;
productName = OpenID4VP;
};
9CD470D02DFFF89C00C207F9 /* VCIClient */ = {
isa = XCSwiftPackageProductDependency;
package = 9CD470CF2DFFF89C00C207F9 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */;
productName = VCIClient;
};
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 */;

View File

@@ -1,5 +1,5 @@
{
"originHash" : "2d4bd4f2ff41823478f56a65a061c28a141105b8447f22a9d1cef51048d33e76",
"originHash" : "161c6a286884aae25ee061305af96695aa9e894caaf9bc77c25908725ec6520d",
"pins" : [
{
"identity" : "alamofire",
@@ -52,13 +52,13 @@
"location" : "https://github.com/mosip/inji-openid4vp-ios-swift",
"state" : {
"branch" : "develop",
"revision" : "c83527449f97c07e6f0a0bec239f9afe477bf216"
"revision" : "87cbc23f3a868461814247cb97283d17a3db0f7b"
}
},
{
"identity" : "inji-vci-client-ios-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mosip/inji-vci-client-ios-swift",
"location" : "https://github.com/mosip/inji-vci-client-ios-swift/",
"state" : {
"branch" : "develop",
"revision" : "8a39bbf7805af4c615904090a027fa472e5f4534"
@@ -128,5 +128,5 @@
}
}
],
"version" : 3
"version" : 2
}

View File

@@ -1906,15 +1906,21 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73
biometric-sdk-react-native: d2a3a1279013cc4a7514a1b43fe557eb76e4e4c1
biometric-sdk-react-native: d2a3a1279013cc4a7514a1b43fe557eb76e4e4c1
BiometricSdk: 303e7329404ea4d922dc14108449d10d21574f77
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
BVLinearGradient: 880f91a7854faff2df62518f0281afb1c60d49a3
CatCrypto: a477899b6be4954e75be4897e732da098cc0a5a8
DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
EASClient: 1509a9a6b48b932ec61667644634daf2562983b8
EXApplication: c08200c34daca7af7fd76ac4b9d606077410e8ad
EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59
EXFaceDetector: 50810192af3c2b80a53a6778b4e67af78b8e4cd5
EASClient: 1509a9a6b48b932ec61667644634daf2562983b8
EXApplication: c08200c34daca7af7fd76ac4b9d606077410e8ad
EXConstants: 409690fbfd5afea964e5e9d6c4eb2c2b59222c59
EXFaceDetector: 50810192af3c2b80a53a6778b4e67af78b8e4cd5
EXJSONUtils: 30c17fd9cc364d722c0946a550dfbf1be92ef6a4
EXManifests: c1fab4c3237675e7b0299ea8df0bcb14baca4f42
Expo: 8c995afb875c15bf8439af0b20bcb9ed8f90d0bd
@@ -1929,9 +1935,24 @@ SPEC CHECKSUMS:
ExpoLocalization: f04eeec2e35bed01ab61c72ee1768ec04d093d01
ExpoModulesCore: 831ece8311a489418746925820bbffdda587d6f4
ExpoWebBrowser: 7595ccac6938eb65b076385fd23d035db9ecdc8e
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: 52c797a4b71b25315353041c29571cd65ecc7141
EXUpdatesInterface: 996527fd7d1a5d271eb523258d603f8f92038f24
EXUpdates: 52c797a4b71b25315353041c29571cd65ecc7141
EXUpdatesInterface: 996527fd7d1a5d271eb523258d603f8f92038f24
FBLazyVector: ac12dc084d1c8ec4cc4d7b3cf1b0ebda6dab85af
fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f
@@ -1945,6 +1966,7 @@ SPEC CHECKSUMS:
GTMSessionFetcher: 5595ec75acf5be50814f81e9189490412bad82ba
hermes-engine: 8c1577f3fdb849cbe7729c2e7b5abc4b845e88f8
ImageColors: 88be684570585c07ae2750bff34eb7b78bfc53b4
ImageColors: 88be684570585c07ae2750bff34eb7b78bfc53b4
MLImage: a454f9f8ecfd537783a12f9488f5be1a68820829
MLKitCommon: 3bc17c6f7d25ce3660f030350b46ae7ec9ebca6e
MLKitFaceDetection: 617cb847441868a8bfd4b48d751c9b33c1104948
@@ -1956,9 +1978,14 @@ SPEC CHECKSUMS:
Permission-Camera: 7ec9ee99704766ff9b90198183387a7f5d82b0c1
Permission-LocationAccuracy: a38ddb5c5d0b8e656f3c86e4a500f9bb88bc099d
Permission-LocationWhenInUse: 24d97eeb25d8ff9f2232e070f792eeb1360ccaf0
Permission-BluetoothPeripheral: 2b88a131074edafd8a46a5cda4ba610ec986d2fb
Permission-Camera: 7ec9ee99704766ff9b90198183387a7f5d82b0c1
Permission-LocationAccuracy: a38ddb5c5d0b8e656f3c86e4a500f9bb88bc099d
Permission-LocationWhenInUse: 24d97eeb25d8ff9f2232e070f792eeb1360ccaf0
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
Protobuf: 0c5a9e64f38aed73b5d1ff88a20112ce195cf909
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
RCTDeprecation: 3afceddffa65aee666dafd6f0116f1d975db1584
RCTRequired: ec1239bc9d8bf63e10fb92bd8b26171a9258e0c1
RCTTypeSafety: f5ecbc86c5c5fa163c05acb7a1c5012e15b5f994
@@ -1969,9 +1996,15 @@ SPEC CHECKSUMS:
React-Core: 3a5fd9e781cecf87803e5b091496a606a3df774a
React-CoreModules: cbf4707dafab8f9f826ac0c63a07d0bf5d01e256
React-cxxreact: 7b188556271e3c7fdf22a04819f6a6225045b9dd
React-Codegen: 6fa87b7c6b8efcd0cef4bfeaec8c8bc8a6abe75a
React-Core: 3a5fd9e781cecf87803e5b091496a606a3df774a
React-CoreModules: cbf4707dafab8f9f826ac0c63a07d0bf5d01e256
React-cxxreact: 7b188556271e3c7fdf22a04819f6a6225045b9dd
React-debug: d30893c49ae1bce4037ea5cd8bb2511d2a38d057
React-Fabric: 826729dd2304fda9b89ff0a579f60ba2a470bc26
React-FabricImage: 2ad1fb8ffa5778eda9ed204a7b3cdd70bc333ce7
React-Fabric: 826729dd2304fda9b89ff0a579f60ba2a470bc26
React-FabricImage: 2ad1fb8ffa5778eda9ed204a7b3cdd70bc333ce7
React-featureflags: 4ae83e72d9a92452793601ac9ac7d2280e486089
React-graphics: 61a026e1c1e7e20d20ac9fec6f6de631732b233d
React-hermes: a7054fbcbda3957e3c5eaad06ef9bf79998d535a
@@ -1997,6 +2030,7 @@ SPEC CHECKSUMS:
react-native-webview: db97533d0b7534225f48ad4e0c313b83cfae8a20
React-nativeconfig: ba9a2e54e2f0882cf7882698825052793ed4c851
React-NativeModulesApple: 8d11ff8955181540585c944cf48e9e7236952697
React-NativeModulesApple: 8d11ff8955181540585c944cf48e9e7236952697
React-perflogger: ed4e0c65781521e0424f2e5e40b40cc7879d737e
React-RCTActionSheet: 49d53ff03bb5688ca4606c55859053a0cd129ea5
React-RCTAnimation: 07b4923885c52c397c4ec103924bf6e53b42c73e
@@ -2010,9 +2044,22 @@ SPEC CHECKSUMS:
React-RCTText: b923e24f9b7250bc4f7ab154c4168ad9f8d8fc9d
React-RCTVibration: 08c4f0c917c435b3619386c25a94ee5d64c250f0
React-rendererdebug: 3cda04217d9df67b94397ee0ead8ef3d8b7e427b
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: 447844a2bdb0a03ffd24e5b4a4b96cfc50325b88
React-RuntimeCore: 9b5bffdaccee9b707b1c2694c9044e13ff0bb087
React-RuntimeApple: 447844a2bdb0a03ffd24e5b4a4b96cfc50325b88
React-RuntimeCore: 9b5bffdaccee9b707b1c2694c9044e13ff0bb087
React-runtimeexecutor: 0e688aefc14c6bc8601f4968d8d01c3fb6446844
React-RuntimeHermes: 4d6ef6bb0f2b0b40d59143317f6b99c82764c959
React-runtimescheduler: cfbe85c3510c541ec6dc815c7729b41304b67961
@@ -2034,6 +2081,26 @@ SPEC CHECKSUMS:
RNShare: 0fad69ae2d71de9d1f7b9a43acf876886a6cb99c
RNSVG: 43b64ed39c14ce830d840903774154ca0c1f27ec
RNZipArchive: ef9451b849c45a29509bf44e65b788829ab07801
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
@@ -2043,5 +2110,6 @@ SPEC CHECKSUMS:
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
PODFILE CHECKSUM: a555e3bf20e7a7fbd521747ca919066410e3af18
PODFILE CHECKSUM: a555e3bf20e7a7fbd521747ca919066410e3af18
COCOAPODS: 1.16.2

View File

@@ -13,6 +13,8 @@ RCT_EXTERN_METHOD(authenticateVerifier:(NSString *)urlEncodedAuthorizationReques
rejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(constructUnsignedVPToken:(id)credentialsMap
holderId:(NSString *)holderId
signatureSuite:(NSString *)signatureSuite
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject)

View File

@@ -15,7 +15,7 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
func `init`(_ appId: String) {
openID4VP = OpenID4VP(traceabilityId: appId)
}
@objc
func authenticateVerifier(_ urlEncodedAuthorizationRequest: String,
trustedVerifierJSON: AnyObject,
@@ -29,7 +29,7 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
reject("OPENID4VP", "Invalid verifier meta format", nil)
return
}
let trustedVerifiersList: [Verifier] = try verifierMeta.map { verifierDict in
guard let clientId = verifierDict["client_id"] as? String,
let responseUris = verifierDict["response_uris"] as? [String] else {
@@ -37,16 +37,15 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
}
return Verifier(clientId: clientId, responseUris: responseUris)
}
let walletMetadataObject = try getWalletMetadataFromDict(walletMetadata as Any, reject: reject)
let authenticationResponse: AuthorizationRequest = try await openID4VP!.authenticateVerifier(
urlEncodedAuthorizationRequest: urlEncodedAuthorizationRequest,
trustedVerifierJSON: trustedVerifiersList,
walletMetadata: walletMetadataObject,
shouldValidateClient: shouldValidateClient
shouldValidateClient: shouldValidateClient, walletMetadata: walletMetadataObject
)
let response = try toJsonString(jsonObject: authenticationResponse)
resolve(response)
} catch {
@@ -54,74 +53,76 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
}
}
}
@objc
func constructUnsignedVPToken(_ credentialsMap: AnyObject, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
func constructUnsignedVPToken(_ credentialsMap: AnyObject,
holderId: String,
signatureSuite: String,
resolver resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping RCTPromiseRejectBlock) {
Task {
do {
guard let credentialsMap = credentialsMap as? [String: [String: Array<Any>]] else {
guard let credentialsMap = credentialsMap as? [String: [String: [Any]]] else {
reject("OPENID4VP", "Invalid credentials map format", nil)
return
}
let formattedCredentialsMap = credentialsMap.mapValues { selectedVcsFormatMap -> [FormatType: [Any]] in
selectedVcsFormatMap.reduce(into: [:]) { result, entry in
let (credentialFormat, credentialsArray) = entry
switch FormatType(rawValue: credentialFormat) {
case .ldp_vc:
result[.ldp_vc] = credentialsArray
case .mso_mdoc:
result[.mso_mdoc] = credentialsArray
default:
reject("OPENID4VP", "Credential format is not supported for OVP", nil)
let formattedCredentialsMap: [String: [FormatType: [AnyCodable]]] = credentialsMap.mapValues { selectedVcsFormatMap -> [FormatType: [AnyCodable]] in
selectedVcsFormatMap.reduce(into: [:]) { result, entry in
let (credentialFormat, credentialsArray) = entry
switch FormatType(rawValue: credentialFormat) {
case .ldp_vc:
result[.ldp_vc] = credentialsArray.map { AnyCodable($0) }
case .mso_mdoc:
result[.mso_mdoc] = credentialsArray.map { AnyCodable($0) }
default:
break
}
}
}
}
let response = try await openID4VP?.constructUnsignedVPToken(credentialsMap: formattedCredentialsMap)
let encodableDict = response?.mapKeys { $0.rawValue }
.mapValues { EncodableWrapper($0) }
do {
let jsonData = try JSONEncoder().encode(encodableDict) // Convert Enum to String
if let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] {
resolve(jsonObject)
} else {
reject("ERROR", "Failed to serialize JSON", nil)
}
} catch {
reject("ENCODING_ERROR", error.localizedDescription, nil)
let response = try await openID4VP?.constructUnsignedVPToken(
verifiableCredentials: formattedCredentialsMap,
holderId: holderId,
signatureSuite: signatureSuite
)
let encodableDict = response?.mapKeys { $0.rawValue }.mapValues { EncodableWrapper($0) }
let jsonData = try JSONEncoder().encode(encodableDict)
if let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] {
resolve(jsonObject)
} else {
reject("ERROR", "Failed to serialize JSON", nil)
}
} catch {
reject("OPENID4VP", error.localizedDescription, error)
}
}
}
@objc
func shareVerifiablePresentation(_ vpTokenSigningResults: [String: Any], resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
func shareVerifiablePresentation(_ vpTokenSigningResults: [String: Any],
resolver resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping RCTPromiseRejectBlock) {
Task {
do {
var formattedVPTokenSigningResults: [FormatType: VPTokenSigningResult] = [:]
for (credentialFormat, vpTokenSigningResult) in vpTokenSigningResults {
switch credentialFormat {
case FormatType.ldp_vc.rawValue:
guard let vpResponse = vpTokenSigningResult as? [String:Any] else {
reject("OPENID4VP", "Invalid VP token signing result format", nil)
return
}
guard let jws = vpResponse["jws"] as! String?,
let signatureAlgorithm = vpResponse["signatureAlgorithm"] as! String?,
let publicKey = vpResponse["publicKey"] as! String?,
let domain = vpResponse["domain"] as! String?
else {
reject("OPENID4VP", "Invalid VP token signing result", nil)
return
}
formattedVPTokenSigningResults[FormatType.ldp_vc] = LdpVPTokenSigningResult(jws: jws, signatureAlgorithm: signatureAlgorithm, publicKey: publicKey, domain: domain)
guard let vpResponse = vpTokenSigningResult as? [String: Any],
let signatureAlgorithm = vpResponse["signatureAlgorithm"] as? String else {
reject("OPENID4VP", "Invalid VP token signing result for LDP_VC", nil)
return
}
let jws = vpResponse["jws"] as? String
let proofValue = vpResponse["proofValue"] as? String
formattedVPTokenSigningResults[.ldp_vc] = LdpVPTokenSigningResult(jws: jws, proofValue: proofValue, signatureAlgorithm: signatureAlgorithm)
case FormatType.mso_mdoc.rawValue:
var docTypeToDeviceAuthentication : [String: DeviceAuthentication] = [:]
guard let vpResponse = vpTokenSigningResult as? [String:[String: String]] else {
@@ -134,64 +135,58 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
reject("OPENID4VP", "Invalid VP token signing result provided for mdoc format", nil)
return
}
docTypeToDeviceAuthentication[docType] = DeviceAuthentication(signature: signature, algorithm: algorithm)
}
formattedVPTokenSigningResults[.mso_mdoc] = MdocVPTokenSigningResult(docTypeToDeviceAuthentication: docTypeToDeviceAuthentication)
default:
reject("OPENID4VP", "Invalid VP response meta format", nil)
reject("OPENID4VP", "Credential format not supported", nil)
return
}
}
let response = try await openID4VP?.shareVerifiablePresentation(vpTokenSigningResults: formattedVPTokenSigningResults)
resolve(response)
} catch {
reject("OPENID4VP", error.localizedDescription, error)
}
}
}
@objc
func sendErrorToVerifier(_ error: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
func sendErrorToVerifier(_ error: String,
resolver resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping RCTPromiseRejectBlock) {
Task {
enum VerifierError: Error {
case customError(String)
}
await openID4VP?.sendErrorToVerifier(error: VerifierError.customError(error))
resolve(true)
}
}
func toJsonString(jsonObject: AuthorizationRequest) throws -> String {
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
let jsonData = try encoder.encode(jsonObject)
if let jsonString = String(data: jsonData, encoding: .utf8) {
return jsonString
} else {
throw NSError(domain: "Error converting JSON data to String", code: 0, userInfo: nil)
guard let jsonString = String(data: jsonData, encoding: .utf8) else {
throw NSError(domain: "OPENID4VP", code: -1, userInfo: [NSLocalizedDescriptionKey: "Unable to encode JSON"])
}
return jsonString
}
@objc
static func requiresMainQueueSetup() -> Bool {
return true
}
}
struct EncodableWrapper: Encodable {
private let value: Encodable
init(_ value: Encodable) {
self.value = value
}
func encode(to encoder: Encoder) throws {
try value.encode(to: encoder)
}
@@ -203,27 +198,22 @@ extension Dictionary {
}
}
func getWalletMetadataFromDict(
_ walletMetadata: Any,
reject: RCTPromiseRejectBlock
) throws -> WalletMetadata {
func getWalletMetadataFromDict(_ walletMetadata: Any,
reject: RCTPromiseRejectBlock) throws -> WalletMetadata {
guard let metadata = walletMetadata as? [String: Any] else {
reject("OPENID4VP", "Invalid wallet metadata format", nil)
throw NSError(domain: "", code: -1, userInfo: [NSLocalizedDescriptionKey: "Invalid Wallet Metadata data"])
throw NSError(domain: "", code: -1, userInfo: [NSLocalizedDescriptionKey: "Invalid Wallet Metadata"])
}
var vpFormatsSupported: [String: VPFormatSupported] = [:]
if
let vpFormatsSupportedDict = metadata["vp_formats_supported"] as? [String: Any],
let ldpVcDict = vpFormatsSupportedDict["ldp_vc"] as? [String: Any]
{
if let vpFormatsSupportedDict = metadata["vp_formats_supported"] as? [String: Any],
let ldpVcDict = vpFormatsSupportedDict["ldp_vc"] as? [String: Any] {
let algValuesSupported = ldpVcDict["alg_values_supported"] as? [String]
vpFormatsSupported["ldp_vc"] = VPFormatSupported(algValuesSupported: algValuesSupported)
} else {
vpFormatsSupported["ldp_vc"] = VPFormatSupported(algValuesSupported: nil)
}
let walletMetadataObject = try WalletMetadata(
presentationDefinitionURISupported: metadata["presentation_definition_uri_supported"] as? Bool,
vpFormatsSupported: vpFormatsSupported,
@@ -232,7 +222,5 @@ func getWalletMetadataFromDict(
authorizationEncryptionAlgValuesSupported: metadata["authorization_encryption_alg_values_supported"] as? [String],
authorizationEncryptionEncValuesSupported: metadata["authorization_encryption_enc_values_supported"] as? [String]
)
return walletMetadataObject
}