2021-06-21 11:48:16 +02:00
|
|
|
package cli
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"os/exec"
|
|
|
|
"testing"
|
|
|
|
|
2021-08-23 15:05:15 +02:00
|
|
|
"github.com/rfjakob/gocryptfs/v2/tests/test_helpers"
|
2021-06-21 11:48:16 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// TestZerokey verifies that `gocryptfs -zerokey` uses the same options as
|
|
|
|
// `gocryptfs -init`.
|
|
|
|
func TestZerokey(t *testing.T) {
|
|
|
|
// Create FS
|
|
|
|
dir := test_helpers.InitFS(t)
|
|
|
|
|
|
|
|
// Change masterkey to all-zero using password change
|
|
|
|
args := []string{"-q", "-passwd", "-masterkey",
|
|
|
|
"00000000-00000000-00000000-00000000-00000000-00000000-00000000-00000000"}
|
|
|
|
args = append(args, dir)
|
|
|
|
cmd := exec.Command(test_helpers.GocryptfsBinary, args...)
|
|
|
|
cmd.Stdout = os.Stdout
|
|
|
|
cmd.Stderr = os.Stderr
|
|
|
|
p, err := cmd.StdinPipe()
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
err = cmd.Start()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
// New password = old password
|
|
|
|
p.Write([]byte("test\n"))
|
|
|
|
p.Close()
|
|
|
|
err = cmd.Wait()
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add content
|
|
|
|
mnt := dir + ".mnt"
|
|
|
|
test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test")
|
|
|
|
file1 := mnt + "/file1"
|
|
|
|
err = ioutil.WriteFile(file1, []byte("somecontent"), 0600)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
test_helpers.UnmountPanic(mnt)
|
|
|
|
|
|
|
|
// Mount using -zerokey and verify we get the same result
|
|
|
|
test_helpers.MountOrFatal(t, dir, mnt, "-extpass", "echo test")
|
|
|
|
content, err := ioutil.ReadFile(file1)
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
} else if string(content) != "somecontent" {
|
|
|
|
t.Errorf("wrong content: %q", string(content))
|
|
|
|
}
|
|
|
|
test_helpers.UnmountPanic(mnt)
|
|
|
|
}
|