* initial crate * foomp * Make it work for x86_64-linux-android * remove unused stuff * Add header * another layer of hacks * additional target os locking * cleanup * bootstrap android app * android jni function * instructions + xcode project * update jni name * add native socks5 class * typo * gitkeep android native lib path * add native socks5 class * add socks5 native lib in java * add build script * fix jni dependency declaration * wip * Update build.sh * Move build.sh to new subdir * rename to build-android.sh * fix typo in FFI function name * use a good SP * wip not crashing state * add android network permissions * android_logging * starting client on button in swift + safer ffi * set tag for libnyms5 logs * testing callbacks * android: start socks5 process in a separated thread * non-blocking client with callbacks * Remove the old non-working logger * Restore commented out functionality in socks5 client * basic file write/load + possible android fix * Fully working state (minus task manager) * Remove unused function * data persistence + cb with address * Remove stray old MyClass file from the merge * Make storage_dir and Option * Fix char_p for android * Android now works with the new branch * Tidy up a little in the jni code * Move android mod to seperate file * jni wrap start/stop * Add android build to Makefile * android: add basic UI and start/stop actions * typo * add nym word * dirty persistence restored * dirty android fixes * even dirtier workaround * Move rust crate to sdk/lib * Update cargo.toml * Strip release binary * Update lib name in android project * Move ios project to nym-connect directory * remove old gitignore file * Move ios client one step deeper * fixed xcode lib paths * removed old tracked file * move android app under new path * a bit of cleanup * hopefully fixing the CI issues (🤞) * Update Makefile * android: add better support for persistent state * updating ios UI on ffi callbacks * missing dead code * Added toggle button (wip) * swapped connect and disconnect methods around * icon * fixed android build * reset button + reuse service provider * disabling reset button * android: run proxy in a worker as foreground service * todo user cancel action * android build script: add aarch64 * add stop action from notification * add simple callbacks to the socks5 bridge * pick a sp randomly * pass stop cb to lib call * add loading state support * refactor(android): base connection state on callback calls * android: add optimistic ui * android: unique instance of libnym * removing deadcode --------- Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com> Co-authored-by: pierre <dommerc.pierre@gmail.com> Co-authored-by: Mark Sinclair <mmsinclair@users.noreply.github.com>
Nym Sphinx webassembly client
Produces layer-encrypted Sphinx packets for use with Nym mixnets.
Sphinx packets ensure the privacy of information in transit, even when the adversary is able to monitor the network in its entirety. When used with a mixnet, both content (what you said) and metadata (who you said it to, when you said it) are protected.
This helps browser-based and mobile applications get stronger privacy, in a way that wasn't previously possible.
This client is part of the Nym project. It's written in Rust and compiled to WebAssembly.
Security Status
From a security point of view, this module is not yet complete. Key missing features include, but are not limited to: cover traffic, sending packets with delay according to Poisson distribution.
They should be implemented soon. You can build your applications, but don't rely on it for strong anonymity yet if your application needs cover traffic.
Using it
See the SDK directory for examples on how to use it and the NPM packages available.
Developing
This is a Rust crate which is set up to automatically cross-compile the contents of src to WebAssembly (aka wasm). It's published from the main Nym platform monorepo in the clients/webassembly directory.
First, make sure you've got all the Rust wasm toolchain installed. Cross-compilation sounds scary, but the Rust crew have enabled a remarkably simple setup.
Furthermore, wasm-bindgen documentation provides excellent tips to solving common problems.
Whenever you change any Rust in the src directory, run wasm-pack build --scope nymproject to update the built wasm artefact in the pkg directory.
To be clear, this is not something that most JS developers need to worry about, this is only for Nym devs. The packages on NPM have all files in place. Just install and enjoy!
Packaging
If you're a Nym platform developer who's made changes to the Rust files and wants to re-publish the package to NPM, here's how you do it:
- bump version numbers as necessary for SemVer
- go the
sdk/typescriptdirectory (off the project root) - run:
yarn
yarn build
yarn publish