Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с использование криптоалгоритмов в ядре 
:(
    Опции темы
Blake
Дата 3.1.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 9.1.2008

Репутация: нет
Всего: нет



Добрый день.
Не нашёл соответствующего раздела на форуме, касающегося вопросов ядра , поэтому решил вопрос запостить здесь.

Мне нужно использовать криптоалгаритмы в своём модуле ядра для получения MD5 хеша и симметричного шифрования(AES или DES).
В своём коде я юзаю функции:
crypto_alloc_hash, crypto_free_hash.

При попытке загрузить модуль в ядро получаю ошибку. В /var/log/messages следующее:
Цитата
Jan  3 09:54:28 alice kernel: [63631.348603] test_crypto: Unknown symbol crypto_alloc_base
Jan  3 09:54:28 alice kernel: [63631.348697] test_crypto: Unknown symbol crypto_destroy_tfm


Банальный поиск грепом по исходникам и модулям(*.ko) ядра говорит о том, что символы crypto_alloc_base crypto_destroy_tfm находятся в модуле ]tcrypt.ko .
При попытке загрузить это модуль получаю следующую ошибку:
Цитата
FATAL: Error inserting tcrypt (/lib/modules/2.6.32-5-amd64/kernel/crypto/tcrypt.ko): Resource temporarily unavailable

В /var/log/messages  не пишет ничго.

Пробывал пересобирать модуль в ручную - то же самое.
Версия ядра 2.6.32-5. Пробывал так же на 2.6.25-22.

За раннее спасибо.

Это сообщение отредактировал(а) Blake - 3.1.2011, 11:14
PM MAIL   Вверх
nickless
Дата 11.1.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 4
Всего: 181



Я не спец в программировании ядра, но ИМО возможно не загружен модуль с самим алгоритмом, tcrypt - это тестовый модуль, нужен модуль с названием вроде crypto, hash, md5 итд.
А tcrypt не загружается, потому, что он и не должен загружаться:

crypto/tcrypt.c
Код

static int __init tcrypt_mod_init(void)
{

<snip>

        /* We intentionaly return -EAGAIN to prevent keeping the module,
         * unless we're running in fips mode. It does all its work from
         * init() and doesn't offer any runtime functionality, but in
         * the fips case, checking for a successful load is helpful.
         * => we don't need it in the memory, do we?
         *                                        -- mludvig
         */
        if (!fips_enabled)
                err = -EAGAIN;



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
null56
Дата 13.1.2011, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



посмотри описание под эти функции
ты пользуешь
Код

1116static inline struct crypto_hash *crypto_alloc_hash(const char *alg_name,
1117                                                    u32 type, u32 mask)
1118{
1119        type &= ~CRYPTO_ALG_TYPE_MASK;
1120        mask &= ~CRYPTO_ALG_TYPE_MASK;
1121        type |= CRYPTO_ALG_TYPE_HASH;
1122        mask |= CRYPTO_ALG_TYPE_HASH_MASK;
1123
1124        return __crypto_hash_cast(crypto_alloc_base(alg_name, type, mask));
1125}

внутри находится crypto_alloc_base, на который ругается загрузчик, если поискать описание этой функции, то вот описание под нее
Код

/*
 394 *      crypto_alloc_base - Locate algorithm and allocate transform
 395 *      @alg_name: Name of algorithm
 396 *      @type: Type of algorithm
 397 *      @mask: Mask for type comparison
 398 *
 399 *      This function should not be used by new algorithm types.
 400 *      Plesae use crypto_alloc_tfm instead.
 401 *
 402 *      crypto_alloc_base() will first attempt to locate an already loaded
 403 *      algorithm.  If that fails and the kernel supports dynamically loadable
 404 *      modules, it will then attempt to load a module of the same name or
 405 *      alias.  If that fails it will send a query to any loaded crypto manager
 406 *      to construct an algorithm on the fly.  A refcount is grabbed on the
 407 *      algorithm which is then associated with the new transform.
 408 *
 409 *      The returned transform is of a non-determinate type.  Most people
 410 *      should use one of the more specific allocation functions such as
 411 *      crypto_alloc_blkcipher.
 412 *
 413 *      In case of error the return value is an error pointer.
 414 */
 415struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask)


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1014 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.