diff --git a/internal/disk/luks.go b/internal/disk/luks.go new file mode 100644 index 000000000..37e6b54e0 --- /dev/null +++ b/internal/disk/luks.go @@ -0,0 +1,40 @@ +package disk + +import "fmt" + +type Argon2id struct { + Iterations uint + Memory uint + Parallelism uint +} +type LUKSContainer struct { + Passphrase string + UUID string + Cipher string + Label string + Subsystem string + SectorSize uint64 + + // password-based key derivation function + PBKDF Argon2id + + Payload Entity +} + +func (lc *LUKSContainer) IsContainer() bool { + return true +} + +func (lc *LUKSContainer) GetItemCount() uint { + if lc.Payload == nil { + return 0 + } + return 1 +} + +func (lc *LUKSContainer) GetChild(n uint) Entity { + if n != 0 { + panic(fmt.Sprintf("invalid child index for LUKSContainer: %d != 0", n)) + } + return lc.Payload +}