diff options
Diffstat (limited to 'perl-install/partition_table')
-rw-r--r-- | perl-install/partition_table/dmcrypt.pm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/perl-install/partition_table/dmcrypt.pm b/perl-install/partition_table/dmcrypt.pm new file mode 100644 index 000000000..3eae783c6 --- /dev/null +++ b/perl-install/partition_table/dmcrypt.pm @@ -0,0 +1,41 @@ +package partition_table::dmcrypt; # $Id: $ + +# dmcrypt on full disk + +use diagnostics; +use strict; + +our @ISA = qw(partition_table::readonly); + +use common; +use partition_table::readonly; +use fs::type; + +sub _parts { + my ($hd) = @_; + + my $part = { size => $hd->{totalsectors}, device => $hd->{device} }; + add2hash($part, fs::type::type_name2subpart('Encrypted')); + + require fs; + fs::get_major_minor([$part]); # to allow is_same_hd() in fs::dmcrypt + + [ $part ]; +} + +sub read_primary { + my ($hd) = @_; + + my $type = fs::type::type_subpart_from_magic($hd); + + $type && $type->{type_name} eq 'Encrypted' or return; + + partition_table::dmcrypt->initialize($hd); + 1; +} + +sub initialize { + my ($class, $hd) = @_; + + partition_table::readonly::initialize($class, $hd, _parts($hd)); +} |