Password manager for iOS and Android using age-encryption and git. The layout of the git repository that kage expects can be setup with:
tools/repoinit $NAME
Only the iOS version supports modifying the password store on device, for Android all changes to the password store are made remotely and fetched.
To use the password store on macOS/Linux etc. you can write a basic wrapper yourself or use passage:
PASSAGE_DIR=$NAME PASSAGE_IDENTITIES_FILE=$NAME/.age-identities passage
The client only fetches passwords over git://
:
git daemon --base-path="$NAME" \
--verbose \
--export-all \
--reuseaddr \
--informative-errors
To enable anonymous pushing(!) pass --enable=receive-pack
, this is not
relevant for the Android client since it does not support making local changes.
# Start git-daemon for unit tests
./tools/serverdevel -d unit
# To show stdout/stderr: cargo test -- --nocapture
(cd core && cargo test)
# Run tests with coverage information
cargo install cargo-llvm-cov
rustup component add llvm-tools-preview
(cd core && cargo llvm-cov --html)
Unit tests can be ran from within Xcode, the tests expect the development server to be running on localhost
./tools/serverdevel -d unit
To build for Android you need to download a NDK manually.
- Download the ndk:
sdkmanager 'ndk;$VERSION'
- Set
export NDK_HOME=$HOME/Library/Android/Sdk/ndk/$VERSION
(macOS) - Build the library and app
(cd android && ./tools/genkey.sh)
(cd android && ./gradlew build assembleRelease)
# => android/build/outputs/apk/release/kage-release.apk