FYI, I have already started prototyping it. But active development will start closer to June.
As for now, I’ve started prototyping based on APIs provided out of the box + openssl:
• jvm - use jdk javax.crypto with future possibility of using openssl crypto library via jni/jextract
• js - separate implementations per browser and nodejs
◦ nodejs - use builtin crypto module - still TBD how to provide typings, kotlinx.nodejs isn’t maintained, may be just dukat will be enough
◦ browser - use window.crypto - still discovering, how much it have builtin, may be openssl via wasm will be also possible there
• darwin (macos, ios, etc) - use CoreCrypto, which is available out of the box, but also allow to use openssl via cinterop
• mingw - use CNG (
https://docs.microsoft.com/en-us/windows/win32/seccng/cng-portal) - available out of the box, API is very flexible, also openssl via cinterop
• linux - no out of the box cryptography, so only openssl via cinterop for now
For openssl BTW, there will be both dynamic (linux/macos/mingw/jvm) and static(all platforms) variants to make it possible to not require installing on openssl on desktop if its not available
Ability to contribute other crypto engines of course will be possible!
If someone will want to work on it with me, please ping me in DM
P.S. I have now only mac with M1 and as so, it will be hard for me to test mingw CNG implementation, so If someone help with it, it will be super useful!