Files
sf-app-platform/packages/flutter_treezor_entrust_sdk_bridge
JulianAlcala 2eddb99c47 chore: ignore flutter auto-generated files
These files are regenerated by flutter pub get and contain machine-
specific paths (FLUTTER_ROOT, FLUTTER_APPLICATION_PATH). They should
not be tracked — the file header itself states "do not check into
version control".

- Update .gitignore: prepend **/ to .flutter-plugins-dependencies so
  it matches in sub-packages, add Generated.xcconfig and
  flutter_export_environment.sh patterns.
- git rm --cached the 4 files that were already tracked (keeps them
  on disk for local builds but removes from repo).
2026-04-19 01:58:45 +02:00
..
2026-04-14 14:44:03 +02:00

flutter_treezor_entrust_sdk_bridge

Requirement

For Android :

  • Minimum android sdk version : 22
  • Maximum android sdk version : 34

For IOS :

  • Xcode 13.0.0 or later

Install

On main project

dependencies:
    ....
  flutter:
    sdk: flutter

  flutter_treezor_entrust_sdk_bridge:
    path: [pathToPluginFolder]/

launch the exemple app

flutter run

Main app integration requirement

Android

Follow Android Entrust Documentation https://doc.antelop-solutions.com/latest/wallet/sdk/android_integration.html

Ios

Follow Ios Entrust Documentation https://doc.antelop-solutions.com/latest/wallet/sdk/ios_integration.html

You can check the example app for some ios configuration

How to use the SDK

register

  Future<void> connectSDK() async {
    WalletManagerModule walletManagerModule = _flutterTreezorEntrustSdkBridgePlugin.getWalletManagerModule();

    WalletManagerCallbacks walletManagerCallbacks = WalletManagerCallbacks(
      onProvisioningRequired:() => {
        onWalletManagerProvisioningRequired(walletManagerModule)
      },
      onCredentialsRequired:(reason, error) => {
        onWalletManageronCredentialsRequired(reason, error, walletManagerModule)
      },
      onConnectionError:(error) => {
        debugPrint("onConnectionError error: $error")
      },
      onConnectionSuccess:() => {
        onWalletManagerOnConnectionSuccess()
      }
    );
    await walletManagerModule.initialize(walletManagerCallbacks);
    walletManagerModule.connect(null, null);
  }

  void onWalletManagerProvisioningRequired(WalletManagerModule walletManagerModule) async {
    debugPrint("onProvisioningRequired");
    String activationCode = await getWalletActivationCode();
    debugPrint("onWalletManagerProvisioningRequired activationCode: $activationCode");

    WalletProvisioningModule walletProvisioningModule = _flutterTreezorEntrustSdkBridgePlugin.getWalletProvisioningModule();

    WalletProvisioningCallbacks walletProvisioningCallbacks = WalletProvisioningCallbacks(
      onInitializationSuccess:() => {
        debugPrint("onInitializationSuccess"),
        walletProvisioningModule.checkEligibility(false)
      },
      onInitializationError:(error) =>  {
        debugPrint("onInitializationError")
      },
      onPermissionNotGranted:(permissions) => {
        debugPrint("onPermissionNotGranted")
      }, 
      onDeviceEligible:(fingerprintAllowed) => {
        debugPrint("onDeviceEligible"),
        walletProvisioningModule.launch(activationCode.substring(2))
      },
      onDeviceNotEligible:(reason, denialReference) => {
        debugPrint("onDeviceNotEligible")
      },
      onCheckEligibilityError:(error) => {
        debugPrint("onCheckEligibilityError")
      },
      onProvisioningPending:() => {
        debugPrint("onProvisioningPending")
      },
      onProvisioningSuccess:() => {
        debugPrint("onProvisioningSuccess"),
        walletManagerModule.connect(null, null)
      },
      onProvisioningError:(error) => {
        debugPrint("onProvisioningError")
      }
    );
    await walletProvisioningModule.initialize(walletProvisioningCallbacks);
  }

  void onWalletManageronCredentialsRequired(String reason, AntelopError? error, WalletManagerModule walletManagerModule) async {
    debugPrint("onCredentialsRequired reason : $reason  error: $error");
        switch (reason.toLowerCase()) {
          case "notset":
            walletManagerModule.connect(null, newPasscode);
            break;
          case "tobechanged":
            walletManagerModule.connect(passcode, null);
            break;
          case "validationneeded":
            walletManagerModule.connect(passcode, newPasscode);
            break;
        }
  }

generate siganture

Auth

 void _startSignatureProcess(String patternAuth) async {
    debugPrint("Starting signature process with $patternAuth");

    CustomerAuthenticatedSignatureModule customerAuthenticatedSignatureModule =
        _flutterTreezorEntrustSdkBridgePlugin.getCustomerAuthenticatedSignatureModule(patternAuth, "", [payloadString]);

    CustomCustomerAuthenticatedProcessCallback customCustomerAuthenticatedProcessCallback =
        CustomCustomerAuthenticatedProcessCallback(
      onCustomerCredentialsRequired: () => {
        _signatureOnCustomerCredentialsRequired(patternAuth, customerAuthenticatedSignatureModule)
      },
      onCustomerCredentialsInvalid: (reason) => {
        debugPrint("onCustomerCredentialsInvalid")
      },
      onProcessStart: () => {
        debugPrint("onProcessStart")
      },
      onProcessSuccess: () => {
        _signatureOnProcessSuccess(customerAuthenticatedSignatureModule)
      },
      onError: (error) => {
        debugPrint("onError: $error")
      },
      onAuthenticationDeclined: () => {
        debugPrint("onAuthenticationDeclined")
      },
    );
    customerAuthenticatedSignatureModule.signWithCustomAuthentication(customCustomerAuthenticatedProcessCallback);
  }

    // Handle onCustomerCredentialsRequired based on patternAuth
  void _signatureOnCustomerCredentialsRequired(String patternAuth, CustomerAuthenticatedSignatureModule customerAuthenticatedSignatureModule) {
    debugPrint("onCustomerCredentialsRequired");
    switch (patternAuth) {
      case "PIN":
        customerAuthenticatedSignatureModule.setPinCustomerCredentials(newPasscode);
        break;
      case "BIO":
        customerAuthenticatedSignatureModule.setBioCustomerCredentials("Title", "SubTitle");
        break;
      case "NONE":
      default:
        customerAuthenticatedSignatureModule.setPinCustomerCredentials(newPasscode);
        break;
    }
  }

  // Handle onProcessSuccess
  void _signatureOnProcessSuccess(CustomerAuthenticatedSignatureModule customerAuthenticatedSignatureModule) async {
    debugPrint("onProcessSuccess");
    String? scaResult = await customerAuthenticatedSignatureModule.getResult();
  }