I would like to write a (mobile) client and server application with a lot of similarities to PGP on the lowest application layer. Users should be able to encrypt data for multiple recipients. Moreover I need key management functionality for creating keys and exchange the public keys of the users with the application server. I would like to use one library for ios, android and the server side part (might be windows or linux). Client and server part will have the same C++ source code core, which will offer the basic crypto functionality. The C++ code will be called by JNI or other suitable interfaces. I already found the following libraries:
- GnuPG - Usefull, but not exactly easy to use. Therefore I searched and found:
- GPGME - a nice API. I started with that, until I found out that LGPL/GPL is incompatible with Apple's App Store ToS.
- OpenPGP-SDK - The homepage of the project seems no longer to be available. Did the move the page? Is this library still maintained? Moreover I read that it only can encrypt files with not more than ~8000 bit length. Is this true?
- Netpgp - Can this be used on different operating systems? Means will the library check the current operating system or will I have to use ports of Netpgp for the different platforms?
- UNnetpgp - I think this is sadly only suitable for iOS
Did I miss a library? Which is the easiest to use if I want to address a wide range of platforms? Maybe there is no OpenPGP library which can fulfill my requirements at all...
My first idea was to go with OpenSSL. Because I already use it for TLS encryption. But in one of my last questions I learned I should use an implementation of OpenPGP. Because I currently received the feedback to go a similar way like the one with OpenSSL - I'm now confused.