summaryrefslogtreecommitdiff
path: root/info.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2021-09-28 17:52:21 +0200
committerJakob Unterwurzacher2021-09-28 18:09:31 +0200
commitc8996d2664d7d1cbce310db3425cc15c9ad26b08 (patch)
tree1ac18845d63742412cf57816357bdad47ad8f0d2 /info.go
parentdb1824a23ac8e47cda714796e55cf6927b0cbecc (diff)
-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
Diffstat (limited to 'info.go')
-rw-r--r--info.go32
1 files 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
}