kage is a work-in-progress 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.
An initial alpha release is available on Maven Central
// build.gradle.kts
dependencies {
implementation("com.github.android-password-store:kage:0.2.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.3.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.