==============
dm-inlinecrypt
==============

Device-Mapper's "inlinecrypt" target provides transparent encryption of block devices
using the inline encryption hardware.

For a more detailed description of inline encryption, see:
https://docs.kernel.org/block/inline-encryption.html

Parameters::

	      <cipher> <key> <iv_offset> <device path> \
	      <offset> [<#opt_params> <opt_params>]

<cipher>
    Encryption cipher type.

    The cipher specifications format is::

       cipher

    Examples::

       aes-xts-plain64

    The cipher type corresponds to the encryption modes supported by
    inline crypto in the block layer. Currently, only
    BLK_ENCRYPTION_MODE_AES_256_XTS (i.e. aes-xts-plain64) is supported.

<key>
    Key used for encryption. It is encoded either as a hexadecimal number
    or it can be passed as <key_string> prefixed with single colon
    character (':') for keys residing in kernel keyring service.
    You can only use key sizes that are valid for the selected cipher.
    Note that the size in bytes of a valid key must be in below range.

        [BLK_CRYPTO_KEY_TYPE_RAW, BLK_CRYPTO_KEY_TYPE_HW_WRAPPED]

<key_string>
    The kernel keyring key is identified by string in following format:
    <key_size>:<keyring_type>:<key_description>.

<key_size>
    The encryption key size in bytes. The kernel key payload size must match
    the value passed in <key_size>.

<keyring_type>
    The type of the key inside the kernel keyring. It can be either 'logon',
    or 'trusted' kernel key type.

<key_description>
    The kernel keyring key description inlinecrypt target should look for
    when loading key of <keyring_type>.

<iv_offset>
    The IV offset is a sector count that is added to the sector number
    before creating the IV.

<device path>
    This is the device that is going to be used as backend and contains the
    encrypted data.  You can specify it as a path like /dev/xxx or a device
    number <major>:<minor>.

<offset>
    Starting sector within the device where the encrypted data begins.

<#opt_params>
    Number of optional parameters. If there are no optional parameters,
    the optional parameters section can be skipped or #opt_params can be zero.
    Otherwise #opt_params is the number of following arguments.

    Example of optional parameters section:
        keytype:raw allow_discards sector_size:4096 iv_large_sectors

<key_type>
    The type of the key as seen by the block layer, either standard or
    hardware-wrapped. The string is supplied in the table as <keytype:raw>
    or <keytype:hw-wrapped>.

allow_discards
    Block discard requests (a.k.a. TRIM) are passed through the inlinecrypt
    device. The default is to ignore discard requests.

    WARNING: Assess the specific security risks carefully before enabling this
    option.  For example, allowing discards on encrypted devices may lead to
    the leak of information about the ciphertext device (filesystem type,
    used space etc.) if the discarded blocks can be located easily on the
    device later.

sector_size:<bytes>
    Use <bytes> as the encryption unit instead of 512 bytes sectors.
    This option can be in range 512 - 4096 bytes and must be power of two.
    Virtual device will announce this size as a minimal IO and logical sector.

iv_large_sectors
    Use <sector_size>-based sector numbers for IV generation instead of
    512-byte sectors.

    For dm-inlinecrypt, this flag must be specified when <sector_size>
    is larger than 512 bytes. The legacy 512-byte-based IV behavior is
    not supported.

    When specified, if <sector_size> is 4096 bytes, plain64 IV for the
    second sector will be 1, and <iv_offset> must be a multiple of
    <sector_size> (in 512-byte units).

Example scripts
===============
Currently, dm-inlinecrypt devices must be set up directly using dmsetup.
There is no userspace support yet to integrate dm-inlinecrypt with LUKS
or cryptsetup. In particular, cryptsetup currently only supports
dm-crypt, and cannot be used to create dm-inlinecrypt mappings.

The following examples demonstrate how to create dm-inlinecrypt devices
using dmsetup

::

	#!/bin/sh
	# Create a inlinecrypt device using dmsetup
	dmsetup create inlinecrypt1 --table "0 `blockdev --getsz $1` inlinecrypt aes-xts-plain64 babebabebabebabebabebabebabebabebabebabebabebabebabebabebabebabe 0 0 $1 0 1 keytype:raw"

::

	#!/bin/sh
	# Create a inlinecrypt device using dmsetup when encryption key is stored in keyring service
	dmsetup create inlinecrypt2 --table "0 `blockdev --getsz $1` inlinecrypt aes-xts-plain64 :64:logon:fde:dminlinecrypt_test_key 0 0 $1 0 1 keytype:raw"

