From ef2407fd0ae0ccc31cd894f0e2f84e0a871547a4 Mon Sep 17 00:00:00 2001 From: "Joe Richey joerichey@google.com" Date: Wed, 4 Oct 2017 18:35:48 -0700 Subject: ext4: Initial work for fscrypt-ext4 --- ext4/feature_flag.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 ext4/feature_flag.go (limited to 'ext4/feature_flag.go') diff --git a/ext4/feature_flag.go b/ext4/feature_flag.go new file mode 100644 index 0000000..4c64e0a --- /dev/null +++ b/ext4/feature_flag.go @@ -0,0 +1,36 @@ +package main + +/* +#cgo LDFLAGS: -lext2fs +#include +#include + +#include +*/ +import "C" +import ( + "fmt" + "unsafe" +) + +// isExt4EncryptionEnabled returns true if the provided ext4 filesystem (as a +// path to a device or mountpoint) has the encrypt feature flag enabled. +func isExt4EncryptionEnabled(path string) bool { + cPath := C.CString(path) + defer C.free(unsafe.Pointer(cPath)) + + var fs C.ext2_filsys + ret := C.ext2fs_open(cPath, 0, 0, 0, C.unix_io_manager, &fs) + if ret != 0 { + panic(fmt.Errorf("Got error code %v when opening %s", ret, path)) + } + + hasEncryption := C.ext2fs_has_feature_encrypt(fs.super) + return hasEncryption != 0 +} + +// enableExt4Encryption enables encryption on the filesystem at the specified +// path. + +// disableExt4Encryption disables encryption on the filesystem at the specified +// path. Note that this operation is not supported and can cause data loss. -- cgit v1.2.3