Я новичок в разработке модуля ядра. Я хочу, чтобы мой модуль выполнял такую задачу, как проверка подписи , поэтому я добавляю свой собственный путь к самозаверяющему сертификату в CONFIG_SYSTEM_TRUSTED_KEYS
и компилирую в ядро. Ключ можно увидеть через cat /proc/keys
как (последняя запись):
040268c0 I------ 1 perm 1f0b0000 0 0 keyring .builtin_regdb_keys: 1
152aaaa3 I------ 1 perm 1f030000 0 0 keyring .id_resolver: empty
1eede733 I--Q--- 1 perm 1f3f0000 0 65534 keyring _uid_ses.0: 1
249059d2 I------ 1 perm 1f030000 0 0 asymmetri sforshee: 00b28ddf47aef9cea7: X509.rsa []
299b6a42 I--Q--- 2 perm 1f3f0000 0 65534 keyring _uid.0: empty
3bce6f1c I------ 1 perm 1f030000 0 0 keyring .dns_resolver: empty
3d6c305b I------ 1 perm 1f0b0000 0 0 keyring .builtin_trusted_keys: 1
3d9c2543 I------ 1 perm 1f030000 0 0 asymmetri <...>: <...>: <...>: X509.rsa 4c9c3ec4 []
Поскольку это работает нормально, я хочу получить этот ключ в коде моего модуля ядра . Я прочитал несколько документов и использовал следующий API для получения ключа:
struct key *request_key(const struct key_type *type,
const char *description,
const char *callout_string);
Мой код такой:
struct key *key;
key = request_key(&key_type_asymmetric, "<...>: <...>: <...>", NULL);
В <...>
указана моя личная информация.
У меня отладка в другом месте, и я считаю, что передал правильную строку description
. Но я всегда получаю ENOKEY
. Может кто-нибудь сказать мне, если есть какая-либо ошибка? Или есть лучший способ получить ключ? Спасибо.
Кроме того, я пробовал другие ключи в списке, и я могу получить только ключ с описанием _uid_ses.0
и _uid.0
.