Actually create, encrypt and decrypt the backup in native rust code. We create the backupID and pickle the crypto account in C++ CommCoreModule as this we done only on backup creation which will be triggered from js. Then we pass it to Rust which handles the encryption. The Rust logic is run on tokio runtime. While this is not strictly needed because we don't use any async functions:
- we want to run encryption on a separate thread, which this gives us for free
- I will be adding rust networking to this in the next month, which will use the async features
The new dependency base64 (which is used for JS<->Rust data transfer) is already used in our services codebase, at the same exact version.