kage is an implementation of the age encryption protocol for Kotlin/JVM and Android. The reference Go implementation and the third-party Rust implementation are being used as reference for the development of the library. The public APIs provided by the library correspond to the v1.2.0 release of age. If you find something missing, please file an issue.
The minimum supported Android version is API 26, and the minimum supported Java version is 11.
The library is available on Maven Central. Despite the 0.x versioning, we aim to make no further breaking changes to the kage APIs, and it will be incremented to 1.0.0 soon and follow strict Semantic Versioning going forward.
// build.gradle.kts
dependencies {
implementation("com.github.android-password-store:kage:0.3.0")
}
Builds from the development branch can be obtained from Sonatype's snapshots repository.
// settings.gradle.kts
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
exclusiveContent {
forRepository { maven("https://oss.sonatype.org/content/repositories/snapshots") }
filter { includeModule("com.github.android-password-store", "kage") }
}
}
}
// build.gradle.kts
dependencies {
implementation("com.github.android-password-store:kage:0.4.0-SNAPSHOT")
}
- Provide a library that can generate and parse age keys, as well as encrypt or decrypt bytes using said keys.
- Achieve parity with the reference Go implementation: everything that can be done with the
age
library should also be possible with thekage
APIs
The current completion status can be tracked through this MVP checklist
These can evolve over time, but for now the following are non-goals for our work on kage.
- Offer a user interface of any kind (CLI/GUI): The kage project intends to only be a library for other applications to build on
- Support plugins: The upstream implementation of plugins relies on binaries in
$PATH
, which is impractical for mobile.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.