diff --git a/lib/app/shared/constants/secure_storage_keys.dart b/lib/app/shared/constants/secure_storage_keys.dart index 6156e40b8..ea286711d 100644 --- a/lib/app/shared/constants/secure_storage_keys.dart +++ b/lib/app/shared/constants/secure_storage_keys.dart @@ -35,6 +35,8 @@ class SecureStorageKeys { static const String enableJWKThumbprint = 'enableJWKThumbprint'; static const String enableCryptographicHolderBinding = 'enableCryptographicHolderBinding'; + static const String enableCredentialManifestSupport = + 'enableCredentialManifestSupport'; static const String enableScopeParameter = 'enableScopeParameter'; static const String useBasicClientAuthentication = 'isPreRegisteredWallet'; static const String clientId = 'clientId'; diff --git a/lib/app/shared/models/enterprise_option/enterprise_option.dart b/lib/app/shared/models/enterprise_option/enterprise_option.dart new file mode 100644 index 000000000..af905df17 --- /dev/null +++ b/lib/app/shared/models/enterprise_option/enterprise_option.dart @@ -0,0 +1,309 @@ +import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; + +part 'enterprise_option.g.dart'; + +@JsonSerializable() +class EnterpriseOption extends Equatable { + const EnterpriseOption({ + this.blockchainOptions, + this.exp, + this.generalOptions, + this.helpCenterOptions, + this.iat, + this.iss, + this.jti, + this.published, + this.selfSovereignIdentityOptions, + this.settingsMenu, + this.version, + this.walletSecurityOptions, + }); + + factory EnterpriseOption.fromJson(Map json) => + _$EnterpriseOptionFromJson(json); + + final BlockchainOptions? blockchainOptions; + final int? exp; + final GeneralOptions? generalOptions; + final HelpCenterOptions? helpCenterOptions; + final int? iat; + final String? iss; + final String? jti; + final DateTime? published; + final SelfSovereignIdentityOptions? selfSovereignIdentityOptions; + final SettingsMenu? settingsMenu; + final String? version; + final WalletSecurityOptions? walletSecurityOptions; + + Map toJson() => _$EnterpriseOptionToJson(this); + + @override + List get props => [ + blockchainOptions, + exp, + generalOptions, + helpCenterOptions, + iat, + iss, + jti, + published, + selfSovereignIdentityOptions, + settingsMenu, + version, + walletSecurityOptions, + ]; +} + +@JsonSerializable() +class BlockchainOptions extends Equatable { + const BlockchainOptions({ + this.bnbSupport, + this.ethereumSupport, + this.fantomSupport, + this.hederaSupport, + this.infuraApiKey, + this.infuraRpcNode, + this.polygonSupport, + this.tezosSupport, + this.tzproApiKey, + this.tzproRpcNode, + }); + + factory BlockchainOptions.fromJson(Map json) => + _$BlockchainOptionsFromJson(json); + + final bool? bnbSupport; + final bool? ethereumSupport; + final bool? fantomSupport; + final bool? hederaSupport; + final String? infuraApiKey; + final bool? infuraRpcNode; + final bool? polygonSupport; + final bool? tezosSupport; + final String? tzproApiKey; + final bool? tzproRpcNode; + + Map toJson() => _$BlockchainOptionsToJson(this); + + @override + List get props => [ + bnbSupport, + ethereumSupport, + fantomSupport, + hederaSupport, + infuraApiKey, + infuraRpcNode, + polygonSupport, + tezosSupport, + tzproApiKey, + tzproRpcNode, + ]; +} + +@JsonSerializable() +class GeneralOptions extends Equatable { + const GeneralOptions({ + this.companyLogo, + this.companyName, + this.companyWebsite, + this.customerPlan, + this.profileName, + this.profileVersion, + this.walletType, + }); + + factory GeneralOptions.fromJson(Map json) => + _$GeneralOptionsFromJson(json); + + final String? companyLogo; + final String? companyName; + final String? companyWebsite; + final String? customerPlan; + final String? profileName; + final String? profileVersion; + final String? walletType; + + Map toJson() => _$GeneralOptionsToJson(this); + + @override + List get props => [ + companyLogo, + companyName, + companyWebsite, + customerPlan, + profileName, + profileVersion, + walletType, + ]; +} + +@JsonSerializable() +class HelpCenterOptions extends Equatable { + const HelpCenterOptions({ + this.customChatSupport, + this.customChatSupportName, + this.customEmail, + this.customEmailSupport, + this.displayChatSupport, + this.displayEmailSupport, + }); + + factory HelpCenterOptions.fromJson(Map json) => + _$HelpCenterOptionsFromJson(json); + + final bool? customChatSupport; + final String? customChatSupportName; + final String? customEmail; + final bool? customEmailSupport; + final bool? displayChatSupport; + final bool? displayEmailSupport; + + Map toJson() => _$HelpCenterOptionsToJson(this); + + @override + List get props => [ + customChatSupport, + customChatSupportName, + customEmail, + customEmailSupport, + displayChatSupport, + displayEmailSupport, + ]; +} + +@JsonSerializable() +class SelfSovereignIdentityOptions extends Equatable { + const SelfSovereignIdentityOptions({ + this.customOidc4VcProfile, + this.displayManageDecentralizedId, + this.displaySsiAdvancedSettings, + this.displayVerifiableDataRegistry, + this.oidv4VcProfile, + }); + + factory SelfSovereignIdentityOptions.fromJson(Map json) => + _$SelfSovereignIdentityOptionsFromJson(json); + + final CustomOidc4VcProfile? customOidc4VcProfile; + final bool? displayManageDecentralizedId; + final bool? displaySsiAdvancedSettings; + final bool? displayVerifiableDataRegistry; + final String? oidv4VcProfile; + + Map toJson() => _$SelfSovereignIdentityOptionsToJson(this); + + @override + List get props => [ + customOidc4VcProfile, + displayManageDecentralizedId, + displaySsiAdvancedSettings, + displayVerifiableDataRegistry, + oidv4VcProfile, + ]; +} + +@JsonSerializable() +class CustomOidc4VcProfile extends Equatable { + const CustomOidc4VcProfile({ + this.clientAuthentication, + this.clientId, + this.clientSecret, + this.cryptoHolderBinding, + this.defaultDid, + this.oidc4VciDraft, + this.oidc4VpDraft, + this.scope, + this.securityLevel, + this.siopv2Draft, + this.subjectSyntaxeType, + this.userPinDigits, + }); + + factory CustomOidc4VcProfile.fromJson(Map json) => + _$CustomOidc4VcProfileFromJson(json); + + final String? clientAuthentication; + final String? clientId; + final String? clientSecret; + final bool? cryptoHolderBinding; + final String? defaultDid; + final String? oidc4VciDraft; + final String? oidc4VpDraft; + final bool? scope; + final String? securityLevel; + final String? siopv2Draft; + final String? subjectSyntaxeType; + final String? userPinDigits; + + Map toJson() => _$CustomOidc4VcProfileToJson(this); + + @override + List get props => [ + clientAuthentication, + clientId, + clientSecret, + cryptoHolderBinding, + defaultDid, + oidc4VciDraft, + oidc4VpDraft, + scope, + securityLevel, + siopv2Draft, + subjectSyntaxeType, + userPinDigits, + ]; +} + +@JsonSerializable() +class SettingsMenu extends Equatable { + const SettingsMenu({ + this.displayDeveloperMode, + this.displayHelpCenter, + this.displayProfile, + }); + + factory SettingsMenu.fromJson(Map json) => + _$SettingsMenuFromJson(json); + + final bool? displayDeveloperMode; + final bool? displayHelpCenter; + final bool? displayProfile; + + Map toJson() => _$SettingsMenuToJson(this); + + @override + List get props => [ + displayDeveloperMode, + displayHelpCenter, + displayProfile, + ]; +} + +@JsonSerializable() +class WalletSecurityOptions extends Equatable { + const WalletSecurityOptions({ + this.confirmSecurityVerifierAccess, + this.displaySecurityAdvancedSettings, + this.secureSecurityAuthenticationWithPinCode, + this.verifySecurityIssuerWebsiteIdentity, + }); + + factory WalletSecurityOptions.fromJson(Map json) => + _$WalletSecurityOptionsFromJson(json); + + final bool? confirmSecurityVerifierAccess; + final bool? displaySecurityAdvancedSettings; + final bool? secureSecurityAuthenticationWithPinCode; + final bool? verifySecurityIssuerWebsiteIdentity; + + Map toJson() => _$WalletSecurityOptionsToJson(this); + + @override + List get props => [ + confirmSecurityVerifierAccess, + displaySecurityAdvancedSettings, + secureSecurityAuthenticationWithPinCode, + verifySecurityIssuerWebsiteIdentity, + ]; +} diff --git a/lib/app/shared/models/model.dart b/lib/app/shared/models/model.dart index 9e1a2ba63..c6f658912 100644 --- a/lib/app/shared/models/model.dart +++ b/lib/app/shared/models/model.dart @@ -4,6 +4,7 @@ export 'blockchain_network/ethereum_network.dart'; export 'blockchain_network/fantom_network.dart'; export 'blockchain_network/polygon_network.dart'; export 'blockchain_network/tezos_network.dart'; +export 'enterprise_option/enterprise_option.dart'; export 'state_message/state_message.dart'; export 'translation/translation.dart'; export 'xtz_data/xtz_data.dart'; diff --git a/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/view/oidc4vc_settings_menu.dart b/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/view/oidc4vc_settings_menu.dart index 1c66cbf89..099da4d30 100644 --- a/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/view/oidc4vc_settings_menu.dart +++ b/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/view/oidc4vc_settings_menu.dart @@ -44,6 +44,7 @@ class Oidc4vcSettingMenuView extends StatelessWidget { const DidKeyTypeWidget(), const DraftTypeWidget(), const SubjectSyntaxTypeWidget(), + const CredentialManifestSupportWidget(), const CryptographicHolderBindingWidget(), const ScopeParameterWidget(), const ClientAuthenticationWidget(), diff --git a/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/credential_manifest_support.dart b/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/credential_manifest_support.dart new file mode 100644 index 000000000..33011933e --- /dev/null +++ b/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/credential_manifest_support.dart @@ -0,0 +1,70 @@ +import 'package:altme/app/app.dart'; +import 'package:altme/dashboard/profile/profile.dart'; +import 'package:altme/l10n/l10n.dart'; +import 'package:altme/theme/theme.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class CredentialManifestSupportWidget extends StatelessWidget { + const CredentialManifestSupportWidget({super.key}); + + @override + Widget build(BuildContext context) { + final l10n = context.l10n; + return BlocBuilder( + builder: (context, state) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.max, + children: [ + Container( + padding: const EdgeInsets.all(Sizes.spaceSmall), + margin: const EdgeInsets.all(Sizes.spaceXSmall), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.drawerSurface, + borderRadius: const BorderRadius.all( + Radius.circular(Sizes.largeRadius), + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + l10n.credentialManifestSupport, + style: Theme.of(context).textTheme.drawerItemTitle, + ), + const SizedBox(height: 10), + Text( + l10n.credentialManifestSupportSubtitle, + style: Theme.of(context).textTheme.drawerItemSubtitle, + ), + ], + ), + ), + const SizedBox(height: 10), + Switch( + onChanged: (value) async { + await context + .read() + .updateCredentialManifestSupportStatus( + enabled: value, + ); + }, + value: state.model.enableCredentialManifestSupport, + activeColor: Theme.of(context).colorScheme.primary, + ), + ], + ), + ), + ], + ); + }, + ); + } +} diff --git a/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/widget.dart b/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/widget.dart index 2dcaa9e7e..09bf93316 100644 --- a/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/widget.dart +++ b/lib/dashboard/drawer/ssi/advanced_settings2/oidc4vc_settngs/widget/widget.dart @@ -1,4 +1,5 @@ export 'client_authentication_widget.dart'; +export 'credential_manifest_support.dart'; export 'cryptograhic_holder_binding.dart'; export 'did_key_type_widget.dart'; export 'draft_type_widget.dart'; diff --git a/lib/dashboard/profile/cubit/profile_cubit.dart b/lib/dashboard/profile/cubit/profile_cubit.dart index b026fdbd8..b4f6bed91 100644 --- a/lib/dashboard/profile/cubit/profile_cubit.dart +++ b/lib/dashboard/profile/cubit/profile_cubit.dart @@ -121,6 +121,13 @@ class ProfileCubit extends Cubit { enableCryptographicHolderBindingValue == null || enableCryptographicHolderBindingValue == 'true'; + final enableCredentialManifestSupportValue = await secureStorageProvider + .get(SecureStorageKeys.enableCredentialManifestSupport); + + final enableCredentialManifestSupport = + enableCredentialManifestSupportValue == null || + enableCredentialManifestSupportValue == 'true'; + final enableScopeParameterValue = await secureStorageProvider .get(SecureStorageKeys.enableScopeParameter); @@ -183,6 +190,7 @@ class ProfileCubit extends Cubit { enable4DigitPINCode: enable4DigitPINCode, enableJWKThumbprint: enableJWKThumbprint, enableCryptographicHolderBinding: enableCryptographicHolderBinding, + enableCredentialManifestSupport: enableCredentialManifestSupport, enableScopeParameter: enableScopeParameter, useBasicClientAuthentication: useBasicClientAuthentication, clientId: clientId, @@ -303,6 +311,11 @@ class ProfileCubit extends Cubit { profileModel.enableCryptographicHolderBinding.toString(), ); + await secureStorageProvider.set( + SecureStorageKeys.enableCredentialManifestSupport, + profileModel.enableCredentialManifestSupport.toString(), + ); + await secureStorageProvider.set( SecureStorageKeys.enableScopeParameter, profileModel.enableScopeParameter.toString(), @@ -422,6 +435,14 @@ class ProfileCubit extends Cubit { await update(profileModel); } + Future updateCredentialManifestSupportStatus({ + bool enabled = false, + }) async { + final profileModel = + state.model.copyWith(enableCredentialManifestSupport: enabled); + await update(profileModel); + } + Future updateScopeParameterStatus({bool enabled = false}) async { final profileModel = state.model.copyWith(enableScopeParameter: enabled); await update(profileModel); @@ -492,6 +513,8 @@ class ProfileCubit extends Cubit { enableJWKThumbprint: customProfileBackup.enableJWKThumbprint, enableCryptographicHolderBinding: customProfileBackup.enableCryptographicHolderBinding, + enableCredentialManifestSupport: + customProfileBackup.enableCredentialManifestSupport, didKeyType: customProfileBackup.didKeyType, enableScopeParameter: customProfileBackup.enableScopeParameter, useBasicClientAuthentication: diff --git a/lib/dashboard/profile/models/profile.dart b/lib/dashboard/profile/models/profile.dart index f9e6a7c4f..b12717672 100644 --- a/lib/dashboard/profile/models/profile.dart +++ b/lib/dashboard/profile/models/profile.dart @@ -42,6 +42,7 @@ class ProfileModel extends Equatable { required this.userPINCodeForAuthentication, required this.enableJWKThumbprint, required this.enableCryptographicHolderBinding, + required this.enableCredentialManifestSupport, required this.enableScopeParameter, required this.useBasicClientAuthentication, this.companyName = '', @@ -80,6 +81,7 @@ class ProfileModel extends Equatable { enable4DigitPINCode: false, enableJWKThumbprint: false, enableCryptographicHolderBinding: true, + enableCredentialManifestSupport: true, enableScopeParameter: false, useBasicClientAuthentication: false, clientId: Parameters.clientId, @@ -109,6 +111,7 @@ class ProfileModel extends Equatable { enable4DigitPINCode: true, enableJWKThumbprint: false, enableCryptographicHolderBinding: true, + enableCredentialManifestSupport: false, enableScopeParameter: false, useBasicClientAuthentication: false, clientId: oldModel.clientId, @@ -138,6 +141,7 @@ class ProfileModel extends Equatable { enable4DigitPINCode: true, enableJWKThumbprint: false, enableCryptographicHolderBinding: true, + enableCredentialManifestSupport: false, enableScopeParameter: false, useBasicClientAuthentication: false, clientId: oldModel.clientId, @@ -167,6 +171,7 @@ class ProfileModel extends Equatable { final bool enable4DigitPINCode; final bool enableJWKThumbprint; final bool enableCryptographicHolderBinding; + final bool enableCredentialManifestSupport; final bool enableScopeParameter; final bool useBasicClientAuthentication; final String clientId; @@ -196,6 +201,7 @@ class ProfileModel extends Equatable { enable4DigitPINCode, enableJWKThumbprint, enableCryptographicHolderBinding, + enableCredentialManifestSupport, enableScopeParameter, useBasicClientAuthentication, clientId, @@ -228,6 +234,7 @@ class ProfileModel extends Equatable { bool? enable4DigitPINCode, bool? enableJWKThumbprint, bool? enableCryptographicHolderBinding, + bool? enableCredentialManifestSupport, bool? enableScopeParameter, bool? useBasicClientAuthentication, String? clientId, @@ -251,6 +258,8 @@ class ProfileModel extends Equatable { enableJWKThumbprint: enableJWKThumbprint ?? this.enableJWKThumbprint, enableCryptographicHolderBinding: enableCryptographicHolderBinding ?? this.enableCryptographicHolderBinding, + enableCredentialManifestSupport: enableCredentialManifestSupport ?? + this.enableCredentialManifestSupport, enableScopeParameter: enableScopeParameter ?? this.enableScopeParameter, useBasicClientAuthentication: useBasicClientAuthentication ?? this.useBasicClientAuthentication, diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 9766cf51f..ae0ef96c2 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -941,6 +941,8 @@ "developerModeSubtitle": "Enable developer mode to access advanced debugging tools", "confirmVerifierAccess": "Confirm verifier access", "confirmVerifierAccessSubtitle": "Default: On\nDisable to skip confirmation when you share your verifiable credentials.", + "credentialManifestSupport": "Credential Manifest Support", + "credentialManifestSupportSubtitle": "Default: On\nUse DIF Wallet Rendering syntax instead of the 'display' attribute.", "secureAuthenticationWithPINCode": "Secure Authentication with PIN Code", "secureAuthenticationWithPINCodeSubtitle": "Default: On\nTurn off to skip PIN code for website authentication (not recommended).", "youcanSelectOnlyXCredential": "You can select only {count} credential(s).", diff --git a/lib/l10n/untranslated.json b/lib/l10n/untranslated.json index 6a813e756..40360acf1 100644 --- a/lib/l10n/untranslated.json +++ b/lib/l10n/untranslated.json @@ -853,6 +853,8 @@ "developerModeSubtitle", "confirmVerifierAccess", "confirmVerifierAccessSubtitle", + "credentialManifestSupport", + "credentialManifestSupportSubtitle", "secureAuthenticationWithPINCode", "secureAuthenticationWithPINCodeSubtitle", "youcanSelectOnlyXCredential", @@ -1791,6 +1793,8 @@ "developerModeSubtitle", "confirmVerifierAccess", "confirmVerifierAccessSubtitle", + "credentialManifestSupport", + "credentialManifestSupportSubtitle", "secureAuthenticationWithPINCode", "secureAuthenticationWithPINCodeSubtitle", "youcanSelectOnlyXCredential", @@ -2033,6 +2037,8 @@ "developerModeSubtitle", "confirmVerifierAccess", "confirmVerifierAccessSubtitle", + "credentialManifestSupport", + "credentialManifestSupportSubtitle", "secureAuthenticationWithPINCode", "secureAuthenticationWithPINCodeSubtitle", "youcanSelectOnlyXCredential", @@ -2971,6 +2977,8 @@ "developerModeSubtitle", "confirmVerifierAccess", "confirmVerifierAccessSubtitle", + "credentialManifestSupport", + "credentialManifestSupportSubtitle", "secureAuthenticationWithPINCode", "secureAuthenticationWithPINCodeSubtitle", "youcanSelectOnlyXCredential", diff --git a/lib/oidc4vc/add_oidc4vc_credential.dart b/lib/oidc4vc/add_oidc4vc_credential.dart index 611df88aa..85aeceaff 100644 --- a/lib/oidc4vc/add_oidc4vc_credential.dart +++ b/lib/oidc4vc/add_oidc4vc_credential.dart @@ -16,6 +16,7 @@ Future addOIDC4VCCredential({ required bool isLastCall, required String format, String? credentialIdToBeDeleted, + required Map? openidConfigurationResponse, }) async { late Map credentialFromOIDC4VC; if (format == 'jwt_vc') { @@ -62,7 +63,7 @@ Future addOIDC4VCCredential({ newCredential['credentialPreview']['id'] = 'urn:uuid:${const Uuid().v4()}'; } - // if (newCredential['credentialPreview']['credentialSubject']['type'] == null) { + // if(newCredential['credentialPreview']['credentialSubject']['type']==null) { // /// added id as type to recognise the card // /// for ebsiv2 only // newCredential['credentialPreview']['credentialSubject']['type'] = diff --git a/lib/oidc4vc/get_and_add_credential.dart b/lib/oidc4vc/get_and_add_credential.dart index 171c48c83..a3de33224 100644 --- a/lib/oidc4vc/get_and_add_credential.dart +++ b/lib/oidc4vc/get_and_add_credential.dart @@ -51,7 +51,8 @@ Future getAndAddCredential({ final ( List encodedCredentialOrFutureTokens, String? deferredCredentialEndpoint, - String format + String format, + Map? openidConfigurationResponse, ) = await oidc4vc.getCredential( preAuthorizedCode: preAuthorizedCode, issuer: issuer, @@ -129,6 +130,7 @@ Future getAndAddCredential({ isLastCall: isLastCall && i + 1 == encodedCredentialOrFutureTokens.length, format: format, + openidConfigurationResponse: openidConfigurationResponse, ); } } diff --git a/lib/oidc4vc/get_and_add_deffered_credential.dart b/lib/oidc4vc/get_and_add_deffered_credential.dart index 3322e03e1..6812af1c9 100644 --- a/lib/oidc4vc/get_and_add_deffered_credential.dart +++ b/lib/oidc4vc/get_and_add_deffered_credential.dart @@ -31,5 +31,6 @@ Future getAndAddDefferedCredential({ isLastCall: true, format: credentialModel.pendingInfo!.format, credentialIdToBeDeleted: credentialModel.id, + openidConfigurationResponse: null, ); } diff --git a/packages/oidc4vc/lib/src/oidc4vc.dart b/packages/oidc4vc/lib/src/oidc4vc.dart index e5d794379..b2525db29 100644 --- a/packages/oidc4vc/lib/src/oidc4vc.dart +++ b/packages/oidc4vc/lib/src/oidc4vc.dart @@ -271,7 +271,8 @@ class OIDC4VC { List? authorizationDetails; /// Retreive credential_type from url - Future<(List, String?, String)> getCredential({ + Future<(List, String?, String, Map?)> + getCredential({ required String issuer, required dynamic credential, required String did, @@ -388,7 +389,12 @@ class OIDC4VC { credentialResponseData.add(credentialResponseDataValue); } - return (credentialResponseData, deferredCredentialEndpoint, format); + return ( + credentialResponseData, + deferredCredentialEndpoint, + format, + openidConfigurationResponse, + ); } Future getSingleCredential({ diff --git a/pubspec.lock b/pubspec.lock index 63157a346..e4c4ca10b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -2521,10 +2521,10 @@ packages: dependency: "direct main" description: name: walletconnect_flutter_v2 - sha256: c08b229a16f153e9bded310c4ee35f7240a39c9ff6742f9e0414b0433f27aa50 + sha256: "60f56018f69401799dfcfdee2d5112132aa922eea613018155132b87849ea1b5" url: "https://pub.dev" source: hosted - version: "2.1.10" + version: "2.1.11" watcher: dependency: transitive description: