MOD: updating readme
This commit is contained in:
parent
60eb5989b8
commit
46478434a4
92
README.md
92
README.md
|
|
@ -1,92 +0,0 @@
|
||||||
# ccc_cryptography
|
|
||||||
|
|
||||||
A new Flutter FFI plugin project.
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
This project is a starting point for a Flutter
|
|
||||||
[FFI plugin](https://flutter.dev/to/ffi-package),
|
|
||||||
a specialized package that includes native code directly invoked with Dart FFI.
|
|
||||||
|
|
||||||
## Project structure
|
|
||||||
|
|
||||||
This template uses the following structure:
|
|
||||||
|
|
||||||
* `src`: Contains the native source code, and a CmakeFile.txt file for building
|
|
||||||
that source code into a dynamic library.
|
|
||||||
|
|
||||||
* `lib`: Contains the Dart code that defines the API of the plugin, and which
|
|
||||||
calls into the native code using `dart:ffi`.
|
|
||||||
|
|
||||||
* platform folders (`android`, `ios`, `windows`, etc.): Contains the build files
|
|
||||||
for building and bundling the native code library with the platform application.
|
|
||||||
|
|
||||||
## Building and bundling native code
|
|
||||||
|
|
||||||
The `pubspec.yaml` specifies FFI plugins as follows:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
plugin:
|
|
||||||
platforms:
|
|
||||||
some_platform:
|
|
||||||
ffiPlugin: true
|
|
||||||
```
|
|
||||||
|
|
||||||
This configuration invokes the native build for the various target platforms
|
|
||||||
and bundles the binaries in Flutter applications using these FFI plugins.
|
|
||||||
|
|
||||||
This can be combined with dartPluginClass, such as when FFI is used for the
|
|
||||||
implementation of one platform in a federated plugin:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
plugin:
|
|
||||||
implements: some_other_plugin
|
|
||||||
platforms:
|
|
||||||
some_platform:
|
|
||||||
dartPluginClass: SomeClass
|
|
||||||
ffiPlugin: true
|
|
||||||
```
|
|
||||||
|
|
||||||
A plugin can have both FFI and method channels:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
plugin:
|
|
||||||
platforms:
|
|
||||||
some_platform:
|
|
||||||
pluginClass: SomeName
|
|
||||||
ffiPlugin: true
|
|
||||||
```
|
|
||||||
|
|
||||||
The native build systems that are invoked by FFI (and method channel) plugins are:
|
|
||||||
|
|
||||||
* For Android: Gradle, which invokes the Android NDK for native builds.
|
|
||||||
* See the documentation in android/build.gradle.
|
|
||||||
* For iOS and MacOS: Xcode, via CocoaPods.
|
|
||||||
* See the documentation in ios/ccc_cryptography.podspec.
|
|
||||||
* See the documentation in macos/ccc_cryptography.podspec.
|
|
||||||
* For Linux and Windows: CMake.
|
|
||||||
* See the documentation in linux/CMakeLists.txt.
|
|
||||||
* See the documentation in windows/CMakeLists.txt.
|
|
||||||
|
|
||||||
## Binding to native code
|
|
||||||
|
|
||||||
To use the native code, bindings in Dart are needed.
|
|
||||||
To avoid writing these by hand, they are generated from the header file
|
|
||||||
(`src/ccc_cryptography.h`) by `package:ffigen`.
|
|
||||||
Regenerate the bindings by running `dart run ffigen --config ffigen.yaml`.
|
|
||||||
|
|
||||||
## Invoking native code
|
|
||||||
|
|
||||||
Very short-running native functions can be directly invoked from any isolate.
|
|
||||||
For example, see `sum` in `lib/ccc_cryptography.dart`.
|
|
||||||
|
|
||||||
Longer-running functions should be invoked on a helper isolate to avoid
|
|
||||||
dropping frames in Flutter applications.
|
|
||||||
For example, see `sumAsync` in `lib/ccc_cryptography.dart`.
|
|
||||||
|
|
||||||
## Flutter help
|
|
||||||
|
|
||||||
For help getting started with Flutter, view our
|
|
||||||
[online documentation](https://docs.flutter.dev), which offers tutorials,
|
|
||||||
samples, guidance on mobile development, and a full API reference.
|
|
||||||
|
|
||||||
29
README.rst
29
README.rst
|
|
@ -2,4 +2,33 @@
|
||||||
Copius Cipher Chain Cryptography Library
|
Copius Cipher Chain Cryptography Library
|
||||||
========================================
|
========================================
|
||||||
|
|
||||||
|
Overview
|
||||||
|
========
|
||||||
|
|
||||||
|
This document describes the architecture for the **CCC Rust Crypto Provider**,
|
||||||
|
the first of three milestones in delivering hardware-grade cryptography to the
|
||||||
|
LetUsMsg application.
|
||||||
|
|
||||||
|
=================================== ========================== ===========================
|
||||||
|
Repository What ships Depends on
|
||||||
|
=================================== ========================== ===========================
|
||||||
|
``ccc_rust`` Pure Rust crypto library wolfSSL (vendored)
|
||||||
|
``ccc_dart_plugin`` Flutter plugin + Dart API ``ccc_rust`` (git/semver)
|
||||||
|
``letusmsg`` (existing app) App integration ``ccc_dart_plugin`` package
|
||||||
|
=================================== ========================== ===========================
|
||||||
|
|
||||||
|
|
||||||
|
Guiding Principles
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
1. Every provider reports its own capabilities at runtime — no compile-time
|
||||||
|
hard-coding of ``available: true/false``.
|
||||||
|
2. Algorithm IDs in Rust map 1-to-1 to the integer constants in
|
||||||
|
``cipher_constants.dart`` — zero Dart changes needed when wiring up.
|
||||||
|
3. Key material is zeroed on drop (``zeroize`` crate) everywhere.
|
||||||
|
4. A conformance test suite validates NIST/RFC vectors for every algorithm
|
||||||
|
before any provider is marked ``available``.
|
||||||
|
5. The library has no runtime dependency on Flutter; it is consumable by any
|
||||||
|
FFI host (Flutter plugin, Python tests, CLI tools).
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue