package partition_table::dmcrypt;

# 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));    
}