Skip to content

🚧 WIP Kotlin implementation of the age file encryption format

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

android-password-store/kage

Repository files navigation

🚧 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

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.