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
make -C core test
# Run tests with coverage information
cargo install cargo-llvm-cov
rustup component add llvm-tools-preview
(cd core && cargo llvm-cov --html)
- Download stable rust toolchain
rustup target add --toolchain stable aarch64-apple-ios
rustup target add --toolchain stable aarch64-apple-ios-sim
- Build from Xcode or with
xcodebuild
Unit tests can be ran from within Xcode, the tests expect the development server to be running on localhost
./tools/serverdevel -d unit
- Download stable rust toolchain
rustup target add --toolchain stable aarch64-linux-android
- Download the Android 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