From c8996d2664d7d1cbce310db3425cc15c9ad26b08 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Tue, 28 Sep 2021 17:52:21 +0200 Subject: [PATCH] -info: add contentEncryption Example: $ ./gocryptfs -info ./tests/example_filesystems/v2.2-xchacha/ Creator: gocryptfs v2.1-27-gabaa129-dirty.xchacha FeatureFlags: HKDF XChaCha20Poly1305 DirIV EMENames LongNames Raw64 EncryptedKey: 64B ScryptObject: Salt=32B N=1024 R=8 P=1 KeyLen=32 contentEncryption: XChaCha20-Poly1305 --- info.go | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/info.go b/info.go index f571420..1ac9034 100644 --- a/info.go +++ b/info.go @@ -1,44 +1,30 @@ package main import ( - "encoding/json" "fmt" - "io/ioutil" "os" "strings" "github.com/rfjakob/gocryptfs/v2/internal/configfile" - "github.com/rfjakob/gocryptfs/v2/internal/contentenc" "github.com/rfjakob/gocryptfs/v2/internal/exitcodes" - "github.com/rfjakob/gocryptfs/v2/internal/tlog" ) // info pretty-prints the contents of the config file at "filename" for human // consumption, stripping out sensitive data. // This is called when you pass the "-info" option. func info(filename string) { - // Read from disk - js, err := ioutil.ReadFile(filename) + cf, err := configfile.Load(filename) if err != nil { - tlog.Fatal.Printf("Reading config file failed: %v", err) + fmt.Printf("Loading config file failed: %v\n", err) os.Exit(exitcodes.LoadConf) } - // Unmarshal - var cf configfile.ConfFile - err = json.Unmarshal(js, &cf) - if err != nil { - tlog.Fatal.Printf("Failed to unmarshal config file") - os.Exit(exitcodes.LoadConf) - } - if cf.Version != contentenc.CurrentVersion { - tlog.Fatal.Printf("Unsupported on-disk format %d", cf.Version) - os.Exit(exitcodes.LoadConf) - } - // Pretty-print - fmt.Printf("Creator: %s\n", cf.Creator) - fmt.Printf("FeatureFlags: %s\n", strings.Join(cf.FeatureFlags, " ")) - fmt.Printf("EncryptedKey: %dB\n", len(cf.EncryptedKey)) s := cf.ScryptObject - fmt.Printf("ScryptObject: Salt=%dB N=%d R=%d P=%d KeyLen=%d\n", + algo, _ := cf.ContentEncryption() + // Pretty-print + fmt.Printf("Creator: %s\n", cf.Creator) + fmt.Printf("FeatureFlags: %s\n", strings.Join(cf.FeatureFlags, " ")) + fmt.Printf("EncryptedKey: %dB\n", len(cf.EncryptedKey)) + fmt.Printf("ScryptObject: Salt=%dB N=%d R=%d P=%d KeyLen=%d\n", len(s.Salt), s.N, s.R, s.P, s.KeyLen) + fmt.Printf("contentEncryption: %s\n", algo.Algo) // lowercase because not in JSON }