<!ELEMENT dmcrypt (option*,(allow|deny)*,tty*,storage+,action+)>

<!ELEMENT option EMPTY>
<!ATTLIST option
    name (fsck|mount) #REQUIRED
    value CDATA #REQUIRED
>

<!ELEMENT tty (preexec*,postexec*)>
<!ATTLIST tty
    type (current|fixed|vt|xterm) #REQUIRED
    dev CDATA #IMPLIED
    min CDATA #IMPLIED
    cmd CDATA #IMPLIED
    display CDATA #IMPLIED
    authority CDATA #IMPLIED
>

<!ELEMENT storage (entry+)>
<!ATTLIST storage
    device CDATA #REQUIRED
>

<!ELEMENT entry EMPTY>
<!ATTLIST entry
    name CDATA #REQUIRED
    cipher CDATA #REQUIRED
    size CDATA #IMPLIED
    start CDATA #IMPLIED
>

<!ELEMENT action ((allow|deny)*,preexec*,key?,map*,postexec*,call*)>
<!ATTLIST action
    name CDATA #REQUIRED
>

<!ELEMENT preexec (#PCDATA)>
<!ATTLIST preexec
    onstate (success|failure|always) #IMPLIED
    onmode (map|mount|always) #IMPLIED
    ignorestatus (yes|no) #IMPLIED
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
    needtty (yes|no) #IMPLIED
>

<!ELEMENT postexec (#PCDATA)>
<!ATTLIST postexec
    onstate (success|failure|always) #IMPLIED
    onmode (map|mount|always) #IMPLIED
    ignorestatus (yes|no) #IMPLIED
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
    needtty (yes|no) #IMPLIED
>

<!ELEMENT key (#PCDATA|preexec|key|postexec)*>
<!ATTLIST key
    id CDATA #IMPLIED
    type (composite|passphrase|file|program|literal) #IMPLIED
    algo CDATA #IMPLIED
    length CDATA #IMPLIED
    ignorestatus (yes|no) #IMPLIED
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
    needtty (yes|no) #IMPLIED
    vt100 CDATA #IMPLIED
    newline (add|remove|unchanged) #IMPLIED
    retry CDATA #IMPLIED
>

<!ELEMENT map ((allow|deny)*,preexec*,key?,postexec*)>
<!ATTLIST map
    name CDATA #REQUIRED
    as CDATA #IMPLIED
    ro (yes|no) #IMPLIED
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
    mode CDATA #IMPLIED
    fsck (yes|no) #IMPLIED
    mount (yes|no) #IMPLIED
    point CDATA #IMPLIED
    fs CDATA #IMPLIED
    options CDATA #IMPLIED
>

<!ELEMENT call EMPTY>
<!ATTLIST call
    action CDATA #REQUIRED
    file CDATA #IMPLIED
    ro (yes|no) #IMPLIED
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
    mode CDATA #IMPLIED
    fsck (yes|no) #IMPLIED
    mount (yes|no) #IMPLIED
>

<!ELEMENT allow (allow|deny)*>
<!ATTLIST allow
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
>

<!ELEMENT deny (allow|deny)*>
<!ATTLIST deny
    uid CDATA #IMPLIED
    gid CDATA #IMPLIED
>
