diff options
Diffstat (limited to 'info.go')
-rw-r--r-- | info.go | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -0,0 +1,45 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "os" + "strings" + + "github.com/rfjakob/gocryptfs/internal/configfile" + "github.com/rfjakob/gocryptfs/internal/contentenc" + "github.com/rfjakob/gocryptfs/internal/exitcodes" + "github.com/rfjakob/gocryptfs/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) + if err != nil { + tlog.Fatal.Printf("info: ReadFile: %#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", + len(s.Salt), s.N, s.R, s.P, s.KeyLen) + os.Exit(0) +} |