import 'dart:async'; import 'dart:ffi'; import 'dart:io'; import 'package:ffi/ffi.dart'; import 'package:flutter/services.dart'; typedef Argon2HashNative = Pointer Function( Pointer key, Uint32 keyLen, Pointer salt, Uint32 saltlen, Uint32 m_cost, // memory cost Uint32 t_cost, // time cost (number iterations) Uint32 parallelism, IntPtr hashlen, Uint8 type, Uint32 version, ); typedef Argon2Hash = Pointer Function( Pointer key, int keyLen, Pointer salt, int saltlen, int m_cost, // memory cost int t_cost, // time cost (number iterations) int parallelism, int hashlen, int type, int version, ); class Argon2Ffi { int Function(int x, int y) _nativeAdd; Argon2Hash argon2hash; Argon2Ffi() { final argon2lib = Platform.isAndroid ? DynamicLibrary.open('libargon2_ffi.so') : Platform.isLinux ? DynamicLibrary.open('libargon2_ffi_plugin.so') : DynamicLibrary.executable(); _nativeAdd = argon2lib .lookup>('native_add') .asFunction(); argon2hash = argon2lib .lookup>('hp_argon2_hash') .asFunction(); } int addIt(int x, int y) => _nativeAdd(x, y); }