[RFC PATCH v1 0/4] keys: introduce key_extract_material helper

From: Ahmad Fatoum
Date: Thu Jul 22 2021 - 05:18:34 EST


While keys of differing type have a common struct key definition, there is
no common scheme to the payload and key material extraction differs.

For kernel functionality that supports different key types,
this means duplicated code for key material extraction and because key type
is discriminated by a pointer to a global, users need to replicate
reachability checks as well, so builtin code doesn't depend on a key
type symbol offered by a module.

Make this easier by adding a common helper with initial support for
user, logon, encrypted and trusted keys.

This series contains two example of its use: dm-crypt uses it to reduce
boilerplate and ubifs authentication uses it to gain support for trusted
and encrypted keys alongside the already supported logon keys.

Looking forward to your feedback,
Ahmad

---
To: David Howells <dhowells@xxxxxxxxxx>
To: Jarkko Sakkinen <jarkko@xxxxxxxxxx>
To: James Morris <jmorris@xxxxxxxxx>
To: "Serge E. Hallyn" <serge@xxxxxxxxxx>
To: Alasdair Kergon <agk@xxxxxxxxxx>
To: Mike Snitzer <snitzer@xxxxxxxxxx>
To: dm-devel@xxxxxxxxxx
To: Song Liu <song@xxxxxxxxxx>
To: Richard Weinberger <richard@xxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-raid@xxxxxxxxxxxxxxx
Cc: linux-integrity@xxxxxxxxxxxxxxx
Cc: keyrings@xxxxxxxxxxxxxxx
Cc: linux-mtd@xxxxxxxxxxxxxxxxxxx
Cc: linux-security-module@xxxxxxxxxxxxxxx

Ahmad Fatoum (4):
keys: introduce key_extract_material helper
dm: crypt: use new key_extract_material helper
ubifs: auth: remove never hit key type error check
ubifs: auth: consult encrypted and trusted keys if no logon key was found

Documentation/filesystems/ubifs.rst | 2 +-
drivers/md/dm-crypt.c | 65 ++++--------------------------
fs/ubifs/auth.c | 25 +++++-------
include/linux/key.h | 45 +++++++++++++++++++++-
security/keys/key.c | 40 ++++++++++++++++++-
5 files changed, 107 insertions(+), 70 deletions(-)

base-commit: 2734d6c1b1a089fb593ef6a23d4b70903526fe0c
--
git-series 0.9.1