@@ 4,10 4,24 @@ packages:
- gtk2
- gdk-pixbuf2
- glib2
+ - gnupg
+ - lzip
sources:
- https://hg.sr.ht/~ser/gocryptkeeper
+environment:
+ BNAME=gocryptkeeper-latest
+secrets:
+ - 45926939-38b0-4e7f-bfa5-1a5b5786a773
+ - d7d86c19-5b94-4c65-bf07-b8b30f55bd63
tasks:
- build: |
T=$(hg log -r "." --template "{latesttag}\n")
[[ $T == "" ]] && T=$(hg bookmark -l . --template '{bookmarks}-{node|short}\n')
- go build -ldflags="-X main.Version=$T -s -w" .
+ go build -o ${BNAME} -ldflags="-X main.Version=$T -s -w" .
+ - upload: |
+ Z=${BNAME}.lz
+ S=${Z}.sig
+ lzip ${BNAME}
+ gpg -b --local-user ECE3F91E646A3FAB5D4DED0F5E0D7ABD6668FDD1 ${Z}
+ curl --netrc-file ~/.downloads -T ${Z} https://downloads.ser1.net/files/
+ curl --netrc-file ~/.downloads -T ${S} https://downloads.ser1.net/files/
@@ 15,16 15,37 @@ The configuration file is in `$XDG_CONFI
and is a simple ini file of `crypt_fs_path=mountpath` pairs. If you want to
remove mounts, edit this by hand and delete lines you don't want.
-gocryptkeeper depends on gocryptfs and GTK-2 being
-installed. It has
-been tested only on Linux. It also depends on Go 1.16 for the embed package.
+gocryptkeeper depends on gocryptfs and GTK-2 being installed. It has been
+tested only on Linux. It also depends on Go 1.16 for the embed package.
+
+Installation
+------------
+
+If you have gtk-2 installed (-dev packages on non-Arch), you should be able to just `go build` it. CGO must not be disabled, because of the symbolic linkage to GTK, so something like:
+
+```
+CGO_ENABLED=1 go build .
+```
+
+There is an *extremely* YMMV
+[binary available](https://downloads.ser1.net/gocryptkeeper-latest.lz).
+It's LZ compressed, so you'll have to uncompress it with lzip before
+using. There's a corresponding
+[GPG signature](https://downloads.ser1.net/gocryptkeeper-latest.lz.sig),
+signed with the key 7ABD6668FDD1, which you
+can find by key on public keyservers -- pgp.mit.edu, pgp.key-server.io, etc.
+
+Caveats
+-------
While it is **unlikely** that gocryptkeeper will harm your system, no
guarantees are provided. Mount points are created and deleted as needed,
and effort has been made to check that this is safe; in particular, Go's
`os.Remove()` is used to remove mount points on unmount, and `os.Remove()`
will not delete directories that are not empty. Additional checks are made
-to ensure emptyness and non-mountedness.
+to ensure emptyness and non-mountedness. Look at the `unmount()` function in
+[mount.go](https://hg.sr.ht/~ser/gocryptkeeper/browse/mount.go?rev=tip),
+around line 20. That's the only function that does anything "scary."
Passwords are not held in memory; when needed, they are requested by dialog,
used, and forgotten. Effort is made to overwrite fields to ensure values do