KEYS: Add a system blacklist keyring
authorDavid Howells <dhowells@redhat.com>
Mon, 3 Apr 2017 15:07:24 +0000 (16:07 +0100)
committerDavid Howells <dhowells@redhat.com>
Mon, 3 Apr 2017 15:07:24 +0000 (16:07 +0100)
commit734114f8782f6c3398762f2353fe9101d87b6d06
treee16e165dc33f7d1becfcb1f5d79c90e0e3c4e248
parentddb99e118e37f324a4be65a411bb60ae62795cf9
KEYS: Add a system blacklist keyring

Add the following:

 (1) A new system keyring that is used to store information about
     blacklisted certificates and signatures.

 (2) A new key type (called 'blacklist') that is used to store a
     blacklisted hash in its description as a hex string.  The key accepts
     no payload.

 (3) The ability to configure a list of blacklisted hashes into the kernel
     at build time.  This is done by setting
     CONFIG_SYSTEM_BLACKLIST_HASH_LIST to the filename of a list of hashes
     that are in the form:

"<hash>", "<hash>", ..., "<hash>"

     where each <hash> is a hex string representation of the hash and must
     include all necessary leading zeros to pad the hash to the right size.

The above are enabled with CONFIG_SYSTEM_BLACKLIST_KEYRING.

Once the kernel is booted, the blacklist keyring can be listed:

root@andromeda ~]# keyctl show %:.blacklist
Keyring
 723359729 ---lswrv      0     0  keyring: .blacklist
 676257228 ---lswrv      0     0   \_ blacklist: 123412341234c55c1dcc601ab8e172917706aa32fb5eaf826813547fdf02dd46

The blacklist cannot currently be modified by userspace, but it will be
possible to load it, for example, from the UEFI blacklist database.

A later commit will make it possible to load blacklisted asymmetric keys in
here too.

Signed-off-by: David Howells <dhowells@redhat.com>
certs/Kconfig
certs/Makefile
certs/blacklist.c [new file with mode: 0644]
certs/blacklist.h [new file with mode: 0644]
certs/blacklist_hashes.c [new file with mode: 0644]
certs/blacklist_nohashes.c [new file with mode: 0644]
include/keys/system_keyring.h