Использование Crypto API в ядре Linux для файла - PullRequest
1 голос
/ 09 ноября 2011

Я пытался использовать crypto api в ядре Linux, что мне нужно сделать, это Sha файл, который открывается. Я использую LSM, чтобы поймать эти открытия файлов.

То, что у меня есть, - это создание структуры crypto_shash с использованием

struct crypto_shash *tfm;
struct shash_desc desc;
tfm = crypto_alloc_shash("sha1", 0, CRYPTO_ALG_ASYNC);

и я предполагаю, что должен инициировать его после этого, используя

desc.tfm = tfm;
desc.flags = 0;

err = crypto_shash_init(&desc);

что все работает нормально, но тогда я хочу использовать

crypto_shash_digest(&desc, ??, ??, sha_hash);

и я понимаю, что он ожидает scatterlist в качестве второго аргумента и длину этого scatterlist в качестве третьего аргумента. Что я не могу понять, так это то, как я должен загрузить файл в список рассеяния, чтобы передать его в криптосистему.

Я довольно много читал, но до сих пор не смог найти каких-либо подробностей о загрузке содержимого файлов в список рассеяния. Так что любые указатели в правильном направлении будут оценены.

Спасибо

1 Ответ

2 голосов
/ 09 ноября 2011

Я сделал нечто подобное некоторое время назад.Единственное отличие состоит в том, что я вычислил хэш секций ELF.

  1. Возможно, ваши desc.flags должны быть CRYPTO_TFM_REQ_MAY_SLEEP до тех пор, пока у вас не появится действительно веская причина предотвратить блокировку криптооперации.
  2. Вы уверены, что не перепутали crypto_shash_digest с crypto_hash_digest ?Потому что crypto _ * s * hash_digest () получает указатель на данные в качестве третьего аргумента.Если это не относится к вам, о какой версии Linux-кенрела вы говорите?
...