bmoni_embedded_sdk is a Flutter plugin that exposes the BMONISigner native SDKs for Android and iOS. It lets you provision a self-custodied secp256k1 wallet and produce EIP-191 / EIP-712 compatible signatures entirely within the device’s secure hardware boundary.
Building with React Native instead? The same SDK ships on npm under the same name, with the same API surface and error codes.
Security first. Private keys are generated on-device, encrypted with a platform-managed wrapping key (Android Keystore on Android, Secure Enclave on iOS), and persisted only as ciphertext. Plaintext keys never leave the secure boundary and are zeroized in RAM after each operation.
What it does
All signatures are returned as
0x-prefixed 130-character hex strings in recoverable r(32) ‖ s(32) ‖ v(1) format with v ∈ {27, 28} and low-s normalisation (EIP-2 compliant), ready to be verified server-side with ecrecover.
Platform support
Architecture
BmoniEmbeddedSdk is a static facade — you never instantiate it. All methods are static and can be called from anywhere after a single initialize call.
- Address caching —
initWallet()result is persisted influtter_secure_storageso you can read it back after the app restarts without re-provisioning. - PIN gating — when
requirePin: true, the PIN digest is verified in Dart before forwarding to the native plugin.

