Browse Source
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-Poly1305master

1 changed files with 9 additions and 23 deletions
@ -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
|
||||
} |
||||
|
Loading…
Reference in new issue