Salmon is an AES-256 encryption library with built-in integrity, parallel operations, and seekable stream support. It provides a high level API for encrypting data, streams, and a virtual drive API for encrypting files. Salmon is powered by a fast native library for Intel x86_64 and ARM64.
The number of threads for multiprocessing is undercalculated. For example when the threads passed are 2 the partitioning of the data is defensive and always assigns a single thread. As a workaround for now is to pass threads: 3 or more.
This affects the following:
SalmonEncryptor
SalmonDecryptor
SalmonFileImporter
SalmonFileExporter
Querying packages in Android and explicitly sharing files could be replace with a less intrusive DocumentProvider which will provide a virtual filesystem to the file picker for other apps to use.
Different input types for MAUI dialog is in backlog: dotnet/maui#9913
If this is not implemented soon we can provide this via a dialog service for each platform.
When adding a new search result SalmonVaultManager is running through all current results and update the occurrence counter in SalmonFile.getTag(). We can speed this up.
Android (and iOS) provide per app security model which allows us to implement app file sharing via a file provider.
This is an exploratory item for other platforms although very challenging admittedly for Windows where ACL is not as supportive as Android wrt application/process. The idea is to provide file sharing to an arbitrary app selected by the user at the same time prevent access to other apps.
Native wasm library:
Prior to providing a corresponding native WASM library with AES-NI see that the default SubtleCrypto on popular browsers is not fast enough so to justify the work.