LINUX.ORG.RU

Использование CryptoAPI


0

1

Гугл даёт несколько не то, что надо человеку, начинающему «почти с ноля». Пожалуйста, киньте ссылками, где можно внятно почитать о том, как использовать, к примеру, алгоритм MD5 ядра в своём Си-коде. Будет здорово, если покажете компилирующийся код с подобным функционалом. Нужно именно использование ядерных алгоритмов. Спасибо.

★★

man 3 md5 --- вроде все понятно

#include <openssl/md5.h>

unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);

int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data, unsigned long len);
int MD5_Final(unsigned char *md, MD5_CTX *c);

Заводите переменную типа MD5_CTX, вызываете MD5_Init(). Далее в MD5_Update() передаете ваши данные по частям или полностью. А потом через MD5_Final получаете результат.

ilias
()
Ответ на: комментарий от madepa

Пытась смотреть, но там подразумевается более высокий уровень читающего. Мне бы посмотреть на что-то уже работающее... Или почитать как это сделать. по api-intro.txt наверняка можно написать, но не в моём случае.

Stage1 ★★
() автор топика
Ответ на: комментарий от ttnl

Пока понял только то, что он у меня не собирается. Буду курить глубже. Спасибо за наводку хоть на него.

Stage1 ★★
() автор топика
Ответ на: комментарий от ilias

Ok. Продолжаю надеяться на то, что кто-нибудь ткнёт носом в хороший, годный ман или в показательный пример кода.

Stage1 ★★
() автор топика
Ответ на: комментарий от Stage1

> показательный пример кода.

/usr/src/linux/fs/ecryptfs/

LamerOk ★★★★★
()
Ответ на: комментарий от rymis

Нужно использовать в user space. Только неужели надо для этого собирать модуль ядра. Хотелось бы просто без привилегий считать к примеру md5 в kernel space. Почему-то я сомневаюсь, что такую возможность не предоставили.

Stage1 ★★
() автор топика
Ответ на: комментарий от Stage1

Вынесение ее в user-space - это готовый D.O.S., так что я бы не стал выносить. И, кстати, без устройства этого все равно бы не стали делать, а устройства у меня, например, нет.

P.S. Ковырять сорцы ядра сейчас мне лень...

rymis ★★
()
Ответ на: комментарий от rymis

Эх, не программер я ни разу.
Мне нужно, чтобы данные из сишного кода ядерный алгоритм быстро окучивал и возвращал мне результат (md5). Модуль ядра для этого делать надо? Не понимаю.

Stage1 ★★
() автор топика
Ответ на: комментарий от Stage1

> Не понимаю.

Крипто-апи в ядре нужно немного для других целей, нежели подсчета сумм файлов юзерспейсовыми прогами. Для этого есть openssl.

Зачем его считать именно в кернелспейсе? Типа быстрее?

redixin ★★★★
()
Ответ на: комментарий от redixin

Да, типа быстрее. Просто по задаче придётся считать sha512 с 4 гигов. И не раз. Подумал, что раз в ядре оно есть, то значит можно научиться это использовать.

Stage1 ★★
() автор топика
Ответ на: комментарий от Stage1

> Да, типа быстрее

Не заморачивайся и считай обычным sha256sum. Ядреным оно даже если и будет быстрее, то совсем чуть-чуть.

redixin ★★★★
()
Ответ на: комментарий от Stage1

А зачет тебе ядро дергать? Если не использовать openssl, то может просто добавмть в с-программу функцию, котороя и посчитает md5? Вот пример работающего кода: http://rosettacode.org/wiki/MD5#C

Правда автор забыл освободить использованную память, не увлекался (преждевременной) оптимизацией и не задумывался о многопоточных системах. Но это ведь легко исправить, если очень захочется :-)

anonymous
()
Ответ на: комментарий от redixin

Вас понял, так и сделаю. Спасибо.

Stage1 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.