# Directions for creating the encrypted key that will be used to initialize
# the EVM software.

# Create the EVM key (encrypted key type)
#
# The encrypted key is a random number encrypted/decrypted using the
# kernel master key.  The encrypted key is only exposed to userspace
# as an encrypted datablob.
$ keyctl add encrypted evm-key "new trusted:kmk-trusted 32" @u
782117972

# Save the encrypted key
$ su -c 'keyctl pipe `keyctl search @u encrypted evm_key` > /etc/keys/evm-trusted.blob'

# The EVM key path name can be set in one of the following ways (specified in
# the order in which the variable is overwritten):

1) use the default value:
--------------------------------------------------------------------------
EVMKEY="/etc/keys/evm-trusted.blob"
--------------------------------------------------------------------------

2) create the configuration file '/etc/sysconfig/evm' and set the EVMKEY variable;

3) specify the EVM key path name in the 'evmkey=' parameter of the kernel command
line.


# Directions for loading a custom IMA policy.

# Write the policy following the instructions provided in the file
# 'Documentation/ABI/testing/ima_policy' of the kernel documentation.

# Save the policy in a file.

# Create the configuration file '/etc/sysconfig/ima' to override the path name of
# the IMA custom policy.
------------- '/etc/sysconfig/ima' (with the default value) -------------
IMAPOLICY="/etc/sysconfig/ima-policy"
-------------------------------------------------------------------------


# Information on loading distro, third party or local keys on the trusted IMA keyring

# Loading distro, third party or local keys on the trusted IMA keyring requires
# creating a local certificate authority(local-CA), installing the local-CA's
# public key on the system-keyring and signing the certificates with the local-CA
# key.
#
# Many directions for creating a mini certificate authority exist on the web
# (eg. openssl, yubikey). (Reminder: safely storing the private key offline is
# really important, especially in the case of the local-CA's private key.) The
# local-CA's public key can be loaded onto the system keyring either by building
# the key into the kernel or, on Fedora, storing it in the UEFI/Mok keyring. (As
# of writing, the patches for loading the UEFI/Mok keys on the system-keyring
# have not been upstreamed.)
#
# To view the system keyring: keyctl show %keyring:.system_keyring
#
# Most on-line directions for signing certificates requires creating a Certificate
# Signing Request (CSR).  Creating such a request requires access to the private
# key, which would not be available when signing distro or 3rd party certificates.
# Openssl provides the "-ss_cert" option for directly signing certificates.

# 98integrity/ima-keys-load.sh script loads the signed certificates stored 
# in the $IMAKEYSDIR onto the trusted IMA keyring.  The default $IMAKEYSDIR
# directory is /etc/keys/ima, but can be specified in the /etc/sysconfig/ima
# policy.
