[RFC PATCH v2 1/8] certs: Introduce ability to link to a system key

Eric Snowberg eric.snowberg at oracle.com
Wed Jun 5 20:36:55 UTC 2024



> On Jun 4, 2024, at 12:08 PM, Jarkko Sakkinen <jarkko at kernel.org> wrote:
> 
> On Fri May 31, 2024 at 3:39 AM EEST, Eric Snowberg wrote:
>> Introduce a new function to allow a keyring to link to a key contained
>> within one of the system keyrings (builtin, secondary, or platform).
> 
> "Introduce system_key_link(), a new function..."
> 
> I hate when the exact thing added is not immediately transparent from
> the commit message ;-) Helps a lot when bisecting for instance.
> 
>> Depending on how the kernel is built, if the machine keyring is
>> available, it will be checked as well, since it is linked to the secondary
>> keyring. If the asymmetric key id matches a key within one of these
>> system keyrings, the matching key is linked into the passed in
>> keyring.
>> 
>> Signed-off-by: Eric Snowberg <eric.snowberg at oracle.com>
>> ---
>> certs/system_keyring.c        | 31 +++++++++++++++++++++++++++++++
>> include/keys/system_keyring.h |  7 ++++++-
>> 2 files changed, 37 insertions(+), 1 deletion(-)
>> 
>> diff --git a/certs/system_keyring.c b/certs/system_keyring.c
>> index 9de610bf1f4b..94e47b6b3333 100644
>> --- a/certs/system_keyring.c
>> +++ b/certs/system_keyring.c
>> @@ -426,3 +426,34 @@ void __init set_platform_trusted_keys(struct key *keyring)
>> platform_trusted_keys = keyring;
>> }
>> #endif
>> +
>> +/**
>> + * system_key_link - Link to a system key
> 
> "system_key_link() - Link to a system key"
> 
>> + * @keyring: The keyring to link into
>> + * @id: The asymmetric key id to look for in the system keyring
>> + */
> 
> Really could use some overview keyrings traversed just as a reminder.

Sure, I will make the three changes above in the next round.

>> +int system_key_link(struct key *keyring, struct asymmetric_key_id *id)
>> +{
>> + struct key *system_keyring;
>> + struct key *key;
>> +
>> +#ifdef CONFIG_SECONDARY_TRUSTED_KEYRING
>> + system_keyring = secondary_trusted_keys;
>> +#else
>> + system_keyring = builtin_trusted_keys;
>> +#endif
> 
> Why not simply make secondary_trusted_keys in the first place be alias
> to builtin_trusted_keys when it is not enabled?

I'll change that in the next round and remove the #ifdef completely from within this 
function.  I'll add a clean up patch first that removes this same pattern elsewhere
in the file.  I think I see how the goto can be removed now.  And I'll also take care 
of the case where the kernel is built without the platform keyring enabled.  Which I
now see is a problem with this current version. Thanks.



More information about the Linux-security-module-archive mailing list