dart_rust_encrypt 1.2.0 copy "dart_rust_encrypt: ^1.2.0" to clipboard
dart_rust_encrypt: ^1.2.0 copied to clipboard

Flutter plugin for commons hashing and encryption algorithms with power of Rust.

dart_rust_encrypt #

A Dart plugin package (see this for the flutter wrapper) to have common data encrypt algorithms and tools using Rust.

Overview #

This plugin is a wrapper/bridge for purely-written-in Rust hashing and encryption algorithms (like SHA3-256) to have the safety and speed of Rust.

Features #

This list will be updated as the project grows:

  • SHA3-256
  • SHA3-512
  • PBKDF2-SHA3-512

Installation #

To use this plugin, add dart_rust_encrypt as a dependency in your pubspec.yaml file.

dependencies:
  dart_rust_encrypt: 

Then run:

flutter pub get

Usage #

Import the package in your Dart files:

import 'package:dart_rust_encrypt/dart_rust_encrypt.dart';

Initializing and Use #

import 'dart:typed_data';
import 'package:dart_rust_encrypt/dart_rust_encrypt.dart';
import 'dart:convert';

void main(List<String> args) async {
  final dartRustEncrypt = createWrapper(DynamicLibrary.open(args[0]));
  final hashed =
  await dartRustEncrypt.sha3_256(Uint8List.fromList(utf8.encode('Hello World')));
  print(message);
}

Tip: Read provided example comments to know how you should pass the generated library path to dart compiler.

Example #

A complete example is in the example folder.

Building From Source (Pure Dart) #

In case of any changes to the rust functionality you need to build the binaries again. To do so, you need to have some requirements installed on your machine and then use following commands to build the library again.

All the provided functionally in Rust side is in the api.rs file. So this is where the changes should be made/add. After that you need to build the library again.

Requirements #

  1. Install Rust (Default toolchain installation)
  2. Install flutter_rust_bridge_codegen: brew install desdaemon/repo/flutter_rust_bridge_codegen

Building #

flutter_rust_bridge_codegen --rust-input path/to/api.rs \
                            --dart-output path/to/bridge_generated.dart
cargo build --release

Now you can use target/realse/libdart_rust_encrypt.dylib in your project (.dylib is used for macOS machine, for other platform you need other formats of the library (like .so, .dll)) for more info see flutter_rust_bridge docs.

Building From Source (Flutter Plugin) #

You can already use provided scripts to build the library for iOS and Android in flutter. For more info these are what is build-ios.sh and build-android.sh files do:

  1. Runs add targets for rustup
  2. Generate dart bridges from rust code
  3. Generate binaries from rust code for each target
  4. Build the library for each platform (iOS xcframework & Android jniLib)

Requirements #

Main Requirements

  1. Install Rust (Default toolchain installation)
  2. Install flutter_rust_bridge_codegen
  3. XCode Full install
  4. Android NDK (You can use Android Studio to install it)

iOS & macOS Building requirements

Obviously you need a MacOS machine to build the iOS library. Also you need to have XCode installed on your machine, which you can install it from App Store. then: run rustup target add {target_name} for each target you want to build. For example: rustup target add aarch64-apple-ios x86_64-apple-ios List of targets for fulls iOS & macOS support:

rustup target add aarch64-apple-ios
rustup target add x86_64-apple-ios
rustup target add aarch64-apple-ios-sim
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin

Android Building requirements

  1. Install Cargo NDK
  2. Add required targets to rustup

Just like the iOS part, for full android support:

rustup target add aarch64-linux-android
rustup target add armv7-linux-androideabi
rustup target add i686-linux-android
rustup target add x86_64-linux-android

Building #

After running the scripts in scripts folder, you can find the generated framework for flutter in scripts/platform-builds directory.

  • Android build: android.tar.gz
  • iOS build: DartRustEncrypt.xcframework.zip

Now you can use these libraries in flutter plugin wrapper (see this). So Each generated library should copy and paste to the required platform directory in our flutter plugin directory.

  • Android: Copy android.tar.gz to flutter_rust_encrypt/android/
  • iOS: Copy DartRustEncrypt.xcframework.zip to flutter_rust_encrypt/ios/Frameworks/

There is no need to extract these files manually, Because injected steps in each platform building source (in already provided flutter wrapper plugin) will do this for us. you can see these steps in:

  • iOS: flutter_rust_encrypt/ios/flutter_rust_encrypt.podspec
  • Android: flutter_rust_encrypt/android/build.gradle (with the help of CMakeLists.txt)

Also you need to replace 2 generated header file frb.h for macOS and iOS to the required directory in our flutter plugin directory:

  • iOS: flutter_rust_encrypt/ios/Classes/
  • macOS: flutter_rust_encrypt/macos/Classes/

Now you can add your flutter wrapper plugin to your project and use the power and speed of rust.

6
likes
0
points
46
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter plugin for commons hashing and encryption algorithms with power of Rust.

License

unknown (license)

Dependencies

ffi, flutter_rust_bridge, meta, uuid

More

Packages that depend on dart_rust_encrypt