diff --git a/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart b/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart index 32ed7d35c..1d825e110 100644 --- a/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart +++ b/lib/dashboard/qr_code/qr_code_scan/cubit/qr_code_scan_cubit.dart @@ -532,9 +532,10 @@ class QRCodeScanCubit extends Cubit { ); } - final registration = state.uri!.queryParameters['registration']; final bool isSecurityHigh = profileCubit.state.model.enableSecurity; + final registration = state.uri!.queryParameters['registration']; + if (registration != null) { final registrationMap = jsonDecode(registration) as Map; final data = @@ -551,6 +552,24 @@ class QRCodeScanCubit extends Cubit { } } + final clientMetadata = state.uri!.queryParameters['client_metadata']; + if (clientMetadata != null) { + final clientMetadataMap = + jsonDecode(clientMetadata) as Map; + final data = + clientMetadataMap['subject_syntax_types_supported'] as List; + if (!data.contains('did:key')) { + if (isSecurityHigh) { + throw ResponseMessage( + data: { + 'error': 'unsupported_response_type', + 'error_description': 'The subject syntax type is not supported.', + }, + ); + } + } + } + final redirectUri = state.uri!.queryParameters['redirect_uri']; final clientId = state.uri!.queryParameters['client_id']; final isClientIdUrl = isURL(clientId.toString());