Skip to content
ManyMathPublic

About

PGP for Dart. Made for https://github.com/ManyMath/ManyPGP

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

186 Commits

Folders and files

Repository files navigation

pgp

OpenPGP for Dart and Flutter, backed by Sequoia. Native builds require Rust in addition to Dart or Flutter.

This is a melos monorepo:

Package What it is
packages/pgp_dart Pure Dart (no Flutter); works in CLI tools. Reaches Sequoia over dart:ffi.
packages/pgp Flutter plugin. Builds the native library automatically (via cargokit) and re-exports the pgp_dart API.
packages/pgp/rust The pgp-ffi Rust crate (the C ABI behind the bindings), kept inside pgp so it ships with that package. Links a statically built OpenSSL by default; Windows builds wrap it with Sequoia's CNG backend (windows/rust).

Quick start (Dart CLI)

import 'package:pgp_dart/pgp_dart.dart';

final pgp = PGP();
final cert = pgp.generateKey('someone@example.org');

Build the native library first: cargo build --release --manifest-path packages/pgp/rust/Cargo.toml.

Status

Host Status
Linux Working: CLI, tests, the example integration test and the payload gate (Ubuntu 24.04, also WSL2)
Linux aarch64 Crate tests and the pgp_dart suite pass under qemu (cross-built library, arm64 Dart SDK); Flutter not run
Android Working: example integration test on an x86_64 emulator (API 36); the payload gate builds arm64-v8a, armeabi-v7a and x86_64
macOS Working: CLI, tests, the example integration test and the payload gate (arm64)
iOS Working: example integration test on iPhone 16 Pro and iPhone 18 Pro simulators; device build without codesigning
Windows Working: Dart tests, the example integration test and the payload gate (x64, CNG backend)
Web Not supported (no dart:ffi)

Development

Driven by melos (config lives in the root pubspec.yaml). After flutter pub get:

dart run melos run native:build   # build the Rust shared library
dart run melos run analyze        # analyze pgp_dart + pgp
dart run melos run format         # check Dart formatting (format:fix to apply)
dart run melos run test           # Dart + Flutter tests
dart run melos run native:test    # Rust crate tests

flutter test integration_test -d <device> (from packages/pgp/example) runs the on-device round-trip tests.

Package candidates and verification

The native crate lives in packages/pgp/rust so its complete source ships in the Flutter publication archive. See the payload gate for actual pub archive checks, fresh consumer builds and native loading checks:

python3 tool/native_payload.py --config tool/payload.json --mode candidate --output /tmp/pgp-candidate

About

PGP for Dart. Made for https://github.com/ManyMath/ManyPGP

Resources

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages