Discover and explore top open-source AI tools and projects—updated daily.
SDK for end-to-end encrypted push messages from Java servers to Android clients
Top 62.0% on SourcePulse
Capillary is a Java library designed to simplify the implementation of end-to-end encrypted push messages from Java application servers to Android clients. It targets developers building secure messaging features, providing robust crypto and key management for Android versions KitKat (API 19) and later, with a focus on handling edge cases and device lock states.
How It Works
Capillary facilitates E2E encryption by managing asymmetric key pairs generated on the Android client. These public keys are registered with the application server, which then encrypts outgoing messages. The Android client decrypts these messages using the corresponding private key. It supports two primary cryptographic approaches: Web Push (ECDH-based, efficient but with Android Keystore limitations) and RSA-ECDSA (hybrid encryption with RSA for confidentiality and ECDSA for integrity, leveraging Android Keystore for private key security). It also offers an "Auth" mode, requiring device unlock for decryption, which is beneficial for sensitive content.
Quick Start & Requirements
com.google.capillary:lib
(server) and com.google.capillary:lib-android
(Android) as Maven or Gradle dependencies../gradlew tools:installDist
then ./tools/build/install/tools/tools/bin/ecdsa-key-pair-generator
). Android Keystore support is required for secure key operations.Config.initialize()
in the Android app.Highlighted Details
Maintenance & Community
Maintained by Milinda Perera and Giles Hogben from Google. No community links (Discord/Slack) or roadmap are provided in the README.
Licensing & Compatibility
The library is licensed under the Apache License 2.0, permitting commercial use and integration with closed-source applications.
Limitations & Caveats
The Web Push protocol option has limitations regarding Android Keystore support for ECDH operations, requiring hybrid encryption with an RSA key. The RSA-ECDSA option is less efficient than ECDH. The library provides core crypto functionality; developers must implement server-side key registration, retrieval, and message transmission logic, though a demo application illustrates an FCM-based implementation.
6 years ago
1 day