summaryrefslogtreecommitdiff
path: root/gocryptfs-xray/xray_main.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2021-03-27 15:29:46 +0100
committerJakob Unterwurzacher2021-03-27 15:29:46 +0100
commitdb91050f9e492595c82a551f70b3069a952912fe (patch)
tree0e531cab8195c9dfee06d76ff4643e6dd927261d /gocryptfs-xray/xray_main.go
parentb86d40de5f63e0a2c60438c50577ff1009402fd3 (diff)
gocrypts-xray: add -version flag
Diffstat (limited to 'gocryptfs-xray/xray_main.go')
-rw-r--r--gocryptfs-xray/xray_main.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/gocryptfs-xray/xray_main.go b/gocryptfs-xray/xray_main.go
index dec803b..b99268b 100644
--- a/gocryptfs-xray/xray_main.go
+++ b/gocryptfs-xray/xray_main.go
@@ -6,6 +6,7 @@ import (
"fmt"
"io"
"os"
+ "runtime"
"github.com/rfjakob/gocryptfs/internal/configfile"
"github.com/rfjakob/gocryptfs/internal/contentenc"
@@ -16,6 +17,15 @@ import (
"github.com/rfjakob/gocryptfs/internal/tlog"
)
+// GitVersion is the gocryptfs version according to git, set by build.bash
+var GitVersion = "[GitVersion not set - please compile using ./build.bash]"
+
+// GitVersionFuse is the go-fuse library version, set by build.bash
+var GitVersionFuse = "[GitVersionFuse not set - please compile using ./build.bash]"
+
+// BuildDate is a date string like "2017-09-06", set by build.bash
+var BuildDate = "0000-00-00"
+
const (
ivLen = contentenc.DefaultIVBits / 8
authTagLen = cryptocore.AuthTagLen
@@ -39,7 +49,18 @@ func prettyPrintHeader(h *contentenc.FileHeader, aessiv bool) {
fmt.Printf(msg+"\n", h.Version, id)
}
+// printVersion prints a version string like this:
+// gocryptfs v1.7-32-gcf99cfd; go-fuse v1.0.0-174-g22a9cb9; 2019-05-12 go1.12 linux/amd64
+func printVersion() {
+ built := fmt.Sprintf("%s %s", BuildDate, runtime.Version())
+ fmt.Printf("%s %s; %s %s/%s\n",
+ myName, GitVersion, built,
+ runtime.GOOS, runtime.GOARCH)
+}
+
func usage() {
+ printVersion()
+ fmt.Printf("\n")
fmt.Fprintf(os.Stderr, "Usage: %s [OPTIONS] FILE\n"+
"\n"+
"Options:\n", myName)
@@ -69,6 +90,7 @@ func main() {
aessiv *bool
sep0 *bool
fido2 *string
+ version *bool
}
args.dumpmasterkey = flag.Bool("dumpmasterkey", false, "Decrypt and dump the master key")
args.decryptPaths = flag.Bool("decrypt-paths", false, "Decrypt file paths using gocryptfs control socket")
@@ -76,8 +98,16 @@ func main() {
args.sep0 = flag.Bool("0", false, "Use \\0 instead of \\n as separator")
args.aessiv = flag.Bool("aessiv", false, "Assume AES-SIV mode instead of AES-GCM")
args.fido2 = flag.String("fido2", "", "Protect the masterkey using a FIDO2 token instead of a password")
+ args.version = flag.Bool("version", false, "Print version information")
+
flag.Usage = usage
flag.Parse()
+
+ if *args.version {
+ printVersion()
+ os.Exit(0)
+ }
+
s := sum(args.dumpmasterkey, args.decryptPaths, args.encryptPaths)
if s > 1 {
fmt.Printf("fatal: %d operations were requested\n", s)