kage icon indicating copy to clipboard operation
kage copied to clipboard

🚧 WIP Kotlin implementation of the age file encryption format

🚧 kage 🚧 Maven Central

The age logo, an wireframe of St. Peters dome in Rome, with the text: age, file encryption

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.

Download

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")
}

Goals

  • 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 the kage APIs

The current completion status can be tracked through this MVP checklist

Non-goals

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.

License

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.

Contribution

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.