askarStoreProvision function

Future<AskarResult<StoreHandle>> askarStoreProvision(
  1. String specUri, {
  2. required bool recreate,
  3. StoreKeyMethod? keyMethod,
  4. String? passKey,
  5. String? profile,
})

Implementation

Future<AskarResult<StoreHandle>> askarStoreProvision(
  String specUri, {
  required bool recreate,
  StoreKeyMethod? keyMethod,
  String? passKey,
  String? profile,
}) async {
  Pointer<Utf8> specUriPointer = nullptr;
  Pointer<Utf8> keyMethodPointer = nullptr;
  Pointer<Utf8> passKeyPointer = nullptr;
  Pointer<Utf8> profilePointer = nullptr;

  final keyMethodStr = (keyMethod == null) ? "" : keyMethod.value;

  try {
    specUriPointer = specUri.toNativeUtf8();

    keyMethodStr.toNativeUtf8();
    passKeyPointer = (passKey ?? "").toNativeUtf8();
    profilePointer = (profile ?? "").toNativeUtf8();

    final callback = newCallbackWithHandle();

    final initialResult = nativeAskarStoreProvision(
      specUriPointer,
      keyMethodPointer,
      passKeyPointer,
      profilePointer,
      boolToInt(recreate),
      callback.nativeCallable.nativeFunction,
      callback.id,
    );

    final completedResult = await callback.handleResult(initialResult);

    return AskarResult(completedResult.errorCode, StoreHandle(completedResult.value));
  } finally {
    freePointer(specUriPointer);
    freePointer(keyMethodPointer);
    freePointer(passKeyPointer);
    freePointer(profilePointer);
  }
}