Skip to content

Commit 1b140ef

Browse files
Sync Improve WalletConfig and VPTokenSigningResult / UnsignedVPToken changes in library (#2504)
* refactor: udpate wallet config and signing results Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com> * add: id to UnsignedVPToken and VPTokenSigningResult Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com> * refactor: simplify wallet config construction Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com> * chore: update ovp lib version Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com> --------- Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>
1 parent e4e5e2a commit 1b140ef

11 files changed

Lines changed: 90 additions & 99 deletions

File tree

android/app/src/main/java/io/mosip/residentapp/InjiOpenID4VPModule.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.mosip.residentapp;
22

3+
import static io.mosip.residentapp.utils.OpenId4VPUtils.parseUnsignedVPTokens;
34
import static io.mosip.residentapp.utils.OpenId4VPUtils.parseVPTokenSigningResults;
45
import static io.mosip.residentapp.utils.OpenId4VPUtils.parseWalletConfig;
56

@@ -23,6 +24,7 @@
2324
import com.google.gson.GsonBuilder;
2425

2526
import org.json.JSONArray;
27+
import org.json.JSONException;
2628
import org.json.JSONObject;
2729

2830
import java.util.List;
@@ -97,26 +99,17 @@ public void authenticateVerifier(String urlEncodedAuthorizationRequest,
9799

98100
@ReactMethod
99101
public void constructUnsignedVPToken(ReadableMap selectedVCs, Promise promise) {
100-
try {
101-
Map<String, List<Credential>> selectedCredentials = OpenId4VPUtils.parseSelectedVCs(selectedVCs);
102-
List<UnsignedVPToken> vpTokens = openID4VP.constructUnsignedVPToken(selectedCredentials);
103-
104-
JSONArray jsonArray = new JSONArray();
105-
for (UnsignedVPToken token : vpTokens) {
106-
JSONObject obj = new JSONObject();
107-
obj.put("format", token.getFormat().getValue());
108-
obj.put("holderKeyReference", token.getHolderKeyReference());
109-
obj.put("signatureAlgorithm", token.getSignatureAlgorithm());
110-
obj.put("dataToSign", Base64.encodeToString(token.getDataToSign(), Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING));
111-
jsonArray.put(obj);
112-
}
113-
promise.resolve(jsonArray.toString());
114-
} catch (Exception e) {
115-
rejectWithOpenID4VPExceptions(e, promise);
116-
}
102+
try {
103+
Map<String, List<Credential>> selectedCredentials = OpenId4VPUtils.parseSelectedVCs(selectedVCs);
104+
List<UnsignedVPToken> vpTokens = openID4VP.constructUnsignedVPToken(selectedCredentials);
105+
106+
promise.resolve(parseUnsignedVPTokens(vpTokens));
107+
} catch (Exception e) {
108+
rejectWithOpenID4VPExceptions(e, promise);
109+
}
117110
}
118111

119-
@ReactMethod
112+
@ReactMethod
120113
public void getMatchingCredentials(ReadableMap vpRequest, ReadableArray availableWalletCredentials,
121114
Promise promise) {
122115
try {
@@ -157,12 +150,14 @@ public void shareVerifiablePresentation(ReadableArray vpTokenSigningResults, Pro
157150

158151
@ReactMethod
159152
private void rejectWithOpenID4VPExceptions(Exception e, Promise promise) {
153+
Log.e("OpenID4VPBridge", "Exception occurred. Details: "+ e.getMessage() +" | Cause: "+e.getCause());
154+
160155
if (e instanceof OpenID4VPExceptions exception) {
161156
WritableMap errorMap = Arguments.createMap();
162157
errorMap.putString("errorCode", exception.getErrorCode());
163158
errorMap.putString("message", exception.getMessage());
164159
errorMap.putString("verifierResponse", gson.toJson(exception.getVerifierResponse()));
165-
errorMap.putString("cause", gson.toJson(exception.getCause()));
160+
errorMap.putString("cause", exception.getCause() != null ? exception.getCause().getMessage() : "Source is the cause");
166161

167162
promise.reject(exception.getErrorCode(), exception.getMessage(), exception, errorMap);
168163
} else {

android/app/src/main/java/io/mosip/residentapp/InjiVCIClientCallback.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ object VCIClientCallbackBridge {
7878
payload.forEach { v ->
7979
pushMap(
8080
Arguments.createMap().apply {
81+
putString("id", v.id)
8182
putString("dataToSign",
8283
Base64.encodeToString(
8384
v.dataToSign,

android/app/src/main/java/io/mosip/residentapp/utils/OpenId4VPUtils.java

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
import io.mosip.openID4VP.authorizationRequest.Verifier;
2929
import io.mosip.openID4VP.authorizationRequest.WalletConfig;
3030
import io.mosip.openID4VP.authorizationRequest.WalletConfigDefaultsKt;
31+
import io.mosip.openID4VP.authorizationResponse.unsignedVPToken.UnsignedVPToken;
3132
import io.mosip.openID4VP.authorizationResponse.vpTokenSigningResult.VPTokenSigningResult;
3233
import io.mosip.openID4VP.common.OpenID4VPErrorCodes;
3334
import io.mosip.openID4VP.constants.ClientIdPrefix;
3435
import io.mosip.openID4VP.constants.EncryptionAlgorithm;
3536
import io.mosip.openID4VP.constants.EncryptionMethod;
3637
import io.mosip.openID4VP.constants.ProofType;
37-
import io.mosip.openID4VP.constants.RequestUriMethod;
3838
import io.mosip.openID4VP.constants.ResponseType;
3939
import io.mosip.openID4VP.constants.SignatureAlgorithm;
4040
import io.mosip.openID4VP.constants.SpecVersion;
@@ -50,6 +50,12 @@
5050
import static io.mosip.openID4VP.common.OpenID4VPErrorCodes.ACCESS_DENIED;
5151
import static io.mosip.openID4VP.common.OpenID4VPErrorCodes.INVALID_TRANSACTION_DATA;
5252

53+
import androidx.annotation.NonNull;
54+
55+
import org.json.JSONArray;
56+
import org.json.JSONException;
57+
import org.json.JSONObject;
58+
5359
public class OpenId4VPUtils {
5460
public static WalletConfig parseWalletConfig(ReadableMap walletConfigMap) {
5561
Map<VPFormatType, VPFormatSupported> vpFormatsSupportedMap = parseVpFormatsSupported(walletConfigMap);
@@ -72,13 +78,12 @@ public static WalletConfig parseWalletConfig(ReadableMap walletConfigMap) {
7278
List<ResponseType> responseTypes = convertReadableArrayToEnumList(
7379
walletConfigMap, "response_types_supported", ResponseType.Companion::fromValue);
7480

75-
Boolean presentationDefinitionUriSupported = walletConfigMap.hasKey("presentation_definition_uri_supported")
76-
? walletConfigMap.getBoolean("presentation_definition_uri_supported")
77-
: true;
81+
boolean presentationDefinitionUriSupported =
82+
getBooleanOrDefault(walletConfigMap, "presentation_definition_uri_supported", true);
7883

79-
boolean validatePreRegiseredVerifier = walletConfigMap.hasKey("validate_pre_registered_verifier") ? walletConfigMap.getBoolean("validate_pre_registered_verifier") : true;
84+
boolean validateTrustedVerifier =
85+
getBooleanOrDefault(walletConfigMap, "validate_trusted_verifier", true);
8086

81-
List<RequestUriMethod> supportedRequestUriMethods = parseSupportedRequestUriMethods(walletConfigMap);
8287

8388
List<Verifier> trustedVerifiers = parseTrustedVerifiers(walletConfigMap);
8489

@@ -90,28 +95,11 @@ public static WalletConfig parseWalletConfig(ReadableMap walletConfigMap) {
9095
encryptionEnc,
9196
responseTypes != null ? responseTypes : WalletConfigDefaultsKt.getDefaultResponseTypeSupported(),
9297
presentationDefinitionUriSupported,
93-
supportedRequestUriMethods,
9498
trustedVerifiers,
95-
validatePreRegiseredVerifier
99+
validateTrustedVerifier
96100
);
97101
}
98102

99-
100-
private static List<RequestUriMethod> parseSupportedRequestUriMethods(ReadableMap walletConfigMap) {
101-
if (!walletConfigMap.hasKey("request_uri_methods_supported")) {
102-
return List.of(RequestUriMethod.GET, RequestUriMethod.POST);
103-
}
104-
ReadableArray methodsArray = walletConfigMap.getArray("request_uri_methods_supported");
105-
List<RequestUriMethod> methods = new ArrayList<>();
106-
for (int i = 0; i < Objects.requireNonNull(methodsArray).size(); i++) {
107-
RequestUriMethod method = RequestUriMethod.Companion.fromValue(methodsArray.getString(i));
108-
if (method != null) {
109-
methods.add(method);
110-
}
111-
}
112-
return methods;
113-
}
114-
115103
private static List<Verifier> parseTrustedVerifiers(ReadableMap walletConfigMap) {
116104
if (!walletConfigMap.hasKey("trusted_verifiers")) {
117105
return new ArrayList<>();
@@ -257,15 +245,19 @@ public static List<VPTokenSigningResult> parseVPTokenSigningResults(
257245

258246
if (vpTokenSigningResultMap == null
259247
|| !vpTokenSigningResultMap.hasKey("signedData")
260-
|| vpTokenSigningResultMap.isNull("signedData")) {
248+
|| vpTokenSigningResultMap.isNull("signedData")
249+
|| !vpTokenSigningResultMap.hasKey("id")
250+
|| vpTokenSigningResultMap.isNull("id")
251+
) {
261252
continue;
262253
}
263254

264255
String signedData = vpTokenSigningResultMap.getString("signedData");
256+
String id = vpTokenSigningResultMap.getString("id");
265257
byte[] signedDataBytes = Base64.decode(signedData, Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING);
266258

267259
formattedVpTokenSigningResults.add(
268-
new VPTokenSigningResult(signedDataBytes));
260+
new VPTokenSigningResult(id,signedDataBytes));
269261
}
270262

271263
return formattedVpTokenSigningResults;
@@ -360,6 +352,21 @@ private static Object getCredentialData(FormatType formatType, ReadableMap crede
360352
}
361353
}
362354

355+
@NonNull
356+
public static String parseUnsignedVPTokens(List<UnsignedVPToken> vpTokens) throws JSONException {
357+
JSONArray jsonArray = new JSONArray();
358+
for (UnsignedVPToken token : vpTokens) {
359+
JSONObject obj = new JSONObject();
360+
obj.put("id", token.getId());
361+
obj.put("format", token.getFormat().getValue());
362+
obj.put("holderKeyReference", token.getHolderKeyReference());
363+
obj.put("signatureAlgorithm", token.getSignatureAlgorithm());
364+
obj.put("dataToSign", Base64.encodeToString(token.getDataToSign(), Base64.URL_SAFE | Base64.NO_WRAP | Base64.NO_PADDING));
365+
jsonArray.put(obj);
366+
}
367+
return jsonArray.toString();
368+
}
369+
363370
public static OpenID4VPExceptions convertToOpenID4VPException(
364371
String errorCode,
365372
String message,

components/VC/Views/VCCardViewContent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ export const VCCardViewContent: React.FC<VCItemContentProps> = ({
145145
/>
146146
)}
147147
<Text weight="semibold"
148-
color={wellknownDisplayProperty.getTextColor(Theme.Colors.plainText)}
148+
color={wellknownDisplayProperty.getTextColor(Theme.Colors.Details)}
149149
style={{marginLeft: 8}}>
150150
{formatKeyLabel(name)}
151151
</Text>

ios/Inji.xcodeproj/project.pbxproj

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,10 @@
5151
B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; };
5252
BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; };
5353
C339223B2E79A536004A01EC /* InjiVcRenderer in Frameworks */ = {isa = PBXBuildFile; productRef = C339223A2E79A536004A01EC /* InjiVcRenderer */; };
54-
C3F18B1A2E320C85007DBE73 /* OpenID4VP in Frameworks */ = {isa = PBXBuildFile; productRef = C3F18B192E320C85007DBE73 /* OpenID4VP */; };
5554
C3F6A9DD2E661896006C9904 /* RNInjiVcRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3F6A9DC2E66188D006C9904 /* RNInjiVcRenderer.swift */; };
5655
C3F6A9DF2E661903006C9904 /* RNInjiVcRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = C3F6A9DE2E6618F6006C9904 /* RNInjiVcRenderer.m */; };
57-
E6AE1F022FDC2946001AE284 /* VCIClient in Frameworks */ = {isa = PBXBuildFile; productRef = E6AE1F012FDC2946001AE284 /* VCIClient */; };
58-
E6BCD5CF2FDA9BED00C51482 /* VCIClient in Frameworks */ = {isa = PBXBuildFile; productRef = E6BCD5CE2FDA9BED00C51482 /* VCIClient */; };
56+
E641C9E62FEAE9C9002D18A7 /* VCIClient in Frameworks */ = {isa = PBXBuildFile; productRef = E641C9E52FEAE9C9002D18A7 /* VCIClient */; };
57+
E660F6FB2FF23611007D2934 /* OpenID4VP in Frameworks */ = {isa = PBXBuildFile; productRef = E660F6FA2FF23611007D2934 /* OpenID4VP */; };
5958
E6D946DA2EFAA2FE004DA688 /* CredentialsVerifierConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6D946C62EFAA2FE004DA688 /* CredentialsVerifierConstant.swift */; };
6059
E6D946DB2EFAA2FE004DA688 /* NetworkManagerClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6D946D42EFAA2FE004DA688 /* NetworkManagerClient.swift */; };
6160
E6D946DC2EFAA2FE004DA688 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6D946CF2EFAA2FE004DA688 /* Data.swift */; };
@@ -186,13 +185,12 @@
186185
isa = PBXFrameworksBuildPhase;
187186
buildActionMask = 2147483647;
188187
files = (
188+
E641C9E62FEAE9C9002D18A7 /* VCIClient in Frameworks */,
189189
9CCC57772E9D7C7000669DB7 /* ios-tuvali-library in Frameworks */,
190-
E6BCD5CF2FDA9BED00C51482 /* VCIClient in Frameworks */,
191-
E6AE1F022FDC2946001AE284 /* VCIClient in Frameworks */,
192190
C339223B2E79A536004A01EC /* InjiVcRenderer in Frameworks */,
193191
9CAE74EE2E2E38F800C2532C /* pixelpass in Frameworks */,
194192
9CCCA19E2CF87A8400D5A461 /* securekeystore in Frameworks */,
195-
C3F18B1A2E320C85007DBE73 /* OpenID4VP in Frameworks */,
193+
E660F6FB2FF23611007D2934 /* OpenID4VP in Frameworks */,
196194
61450CD968A57153077CB5A9 /* libPods-Inji.a in Frameworks */,
197195
);
198196
runOnlyForDeploymentPostprocessing = 0;
@@ -602,11 +600,10 @@
602600
packageProductDependencies = (
603601
9CCCA19D2CF87A8400D5A461 /* securekeystore */,
604602
9CAE74ED2E2E38F800C2532C /* pixelpass */,
605-
C3F18B192E320C85007DBE73 /* OpenID4VP */,
606603
C339223A2E79A536004A01EC /* InjiVcRenderer */,
607604
9CCC57762E9D7C7000669DB7 /* ios-tuvali-library */,
608-
E6BCD5CE2FDA9BED00C51482 /* VCIClient */,
609-
E6AE1F012FDC2946001AE284 /* VCIClient */,
605+
E641C9E52FEAE9C9002D18A7 /* VCIClient */,
606+
E660F6FA2FF23611007D2934 /* OpenID4VP */,
610607
);
611608
productName = Inji;
612609
productReference = 13B07F961A680F5B00A75B9A /* Inji.app */;
@@ -638,10 +635,10 @@
638635
packageReferences = (
639636
9CCCA19C2CF87A8400D5A461 /* XCRemoteSwiftPackageReference "secure-keystore-ios-swift" */,
640637
9CAE74EC2E2E38F800C2532C /* XCRemoteSwiftPackageReference "pixelpass-ios-swift" */,
641-
C3F18B182E320C85007DBE73 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */,
642638
C33922392E79A536004A01EC /* XCRemoteSwiftPackageReference "inji-vc-renderer-ios-swift" */,
643639
9CCC57752E9D7C7000669DB7 /* XCRemoteSwiftPackageReference "tuvali-ios-swift" */,
644-
E6AE1F002FDC2946001AE284 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */,
640+
E641C9E42FEAE9C9002D18A7 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */,
641+
E660F6F92FF23611007D2934 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */,
645642
);
646643
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
647644
projectDirPath = "";
@@ -1059,7 +1056,10 @@
10591056
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
10601057
MTL_ENABLE_DEBUG_INFO = YES;
10611058
ONLY_ACTIVE_ARCH = YES;
1062-
OTHER_LDFLAGS = "$(inherited) ";
1059+
OTHER_LDFLAGS = (
1060+
"$(inherited)",
1061+
" ",
1062+
);
10631063
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
10641064
SDKROOT = iphoneos;
10651065
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -1123,7 +1123,10 @@
11231123
);
11241124
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
11251125
MTL_ENABLE_DEBUG_INFO = NO;
1126-
OTHER_LDFLAGS = "$(inherited) ";
1126+
OTHER_LDFLAGS = (
1127+
"$(inherited)",
1128+
" ",
1129+
);
11271130
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
11281131
SDKROOT = iphoneos;
11291132
STRING_CATALOG_GENERATE_SYMBOLS = YES;
@@ -1189,17 +1192,17 @@
11891192
version = 0.1.0;
11901193
};
11911194
};
1192-
C3F18B182E320C85007DBE73 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */ = {
1195+
E641C9E42FEAE9C9002D18A7 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */ = {
11931196
isa = XCRemoteSwiftPackageReference;
1194-
repositoryURL = "https://github.com/inji/inji-openid4vp-ios-swift.git";
1197+
repositoryURL = "https://github.com/inji/inji-vci-client-ios-swift";
11951198
requirement = {
11961199
branch = develop;
11971200
kind = branch;
11981201
};
11991202
};
1200-
E6AE1F002FDC2946001AE284 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */ = {
1203+
E660F6F92FF23611007D2934 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */ = {
12011204
isa = XCRemoteSwiftPackageReference;
1202-
repositoryURL = "https://github.com/inji/inji-vci-client-ios-swift";
1205+
repositoryURL = "https://github.com/inji/inji-openid4vp-ios-swift";
12031206
requirement = {
12041207
branch = develop;
12051208
kind = branch;
@@ -1228,19 +1231,15 @@
12281231
package = C33922392E79A536004A01EC /* XCRemoteSwiftPackageReference "inji-vc-renderer-ios-swift" */;
12291232
productName = InjiVcRenderer;
12301233
};
1231-
C3F18B192E320C85007DBE73 /* OpenID4VP */ = {
1232-
isa = XCSwiftPackageProductDependency;
1233-
package = C3F18B182E320C85007DBE73 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */;
1234-
productName = OpenID4VP;
1235-
};
1236-
E6AE1F012FDC2946001AE284 /* VCIClient */ = {
1234+
E641C9E52FEAE9C9002D18A7 /* VCIClient */ = {
12371235
isa = XCSwiftPackageProductDependency;
1238-
package = E6AE1F002FDC2946001AE284 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */;
1236+
package = E641C9E42FEAE9C9002D18A7 /* XCRemoteSwiftPackageReference "inji-vci-client-ios-swift" */;
12391237
productName = VCIClient;
12401238
};
1241-
E6BCD5CE2FDA9BED00C51482 /* VCIClient */ = {
1239+
E660F6FA2FF23611007D2934 /* OpenID4VP */ = {
12421240
isa = XCSwiftPackageProductDependency;
1243-
productName = VCIClient;
1241+
package = E660F6F92FF23611007D2934 /* XCRemoteSwiftPackageReference "inji-openid4vp-ios-swift" */;
1242+
productName = OpenID4VP;
12441243
};
12451244
/* End XCSwiftPackageProductDependency section */
12461245
};

ios/Inji.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ios/Utils/OpenId4VPUtils.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class OpenId4VPUtils: NSObject {
2323
static func toJson(_ data: [UnsignedVPToken]?) throws -> [[String: Any]] {
2424
let encodableUnsignedVPToken : [[String: String]] = data?.map {
2525
[
26+
"id": $0.id,
2627
"dataToSign": $0.dataToSign.toBase64UrlEncoded(),
2728
"format": $0.format.rawValue,
2829
"holderKeyReference": $0.holderKeyReference,
@@ -125,8 +126,11 @@ class OpenId4VPUtils: NSObject {
125126
guard let signedData = vpTokenSigningResult["signedData"] as? String else {
126127
throw ParseError(message: "Invalid VP token signing result: missing or invalid 'signedData'")
127128
}
129+
guard let id = vpTokenSigningResult["id"] as? String else {
130+
throw ParseError(message: "Invalid VP token signing result: missing or invalid 'id'")
131+
}
128132
let decodedSignedData = try decodeBase64ToData(signedData)
129-
return VPTokenSigningResult(signedData: decodedSignedData)
133+
return VPTokenSigningResult(id: id, signedData: decodedSignedData)
130134
}
131135

132136
return vpTokenSigningResultsData

machines/openID4VP/openID4VPActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ export const openID4VPActions = (model: any) => {
229229

230230
setSendVPShareError: model.assign({
231231
error: (_, event) => {
232-
console.error('Error during send VP:', event.data.message, event.data.code);
232+
console.error('Error during send VP:', event.data.message, event.data.code, event.data.cause);
233233
return 'send vp-' + event.data.message + '-' + event.data.code;
234234
},
235235
}),

0 commit comments

Comments
 (0)