Как написать движок openssl - PullRequest
       0

Как написать движок openssl

7 голосов
/ 16 августа 2011

Я хочу написать динамический движок openssl, но я не могу найти никакого документа для этого.

Мой алгоритм, который я хочу написать, - это алгоритм шифрования (например, rsa) и алгоритм хеширования (как md5).

Какой-нибудь простой исходный код движка, который я могу изменить и использовать из этого?

Ответы [ 2 ]

1 голос
/ 07 января 2014

Какой-нибудь простой исходный код движка, который я могу изменить и использовать из этого?

Движок Intel RDRAND довольно прост для понимания. Вы можете найти его источники с:

openssl-1.0.1f$ grep -R -i ENGINE_rdrand *
crypto/engine/eng_rdrand.c:static ENGINE *ENGINE_rdrand(void)
crypto/engine/eng_rdrand.c:    ENGINE *toadd = ENGINE_rdrand();

Вот как вы можете загрузить и установить его в качестве механизма генерации случайных чисел по умолчанию (из Случайные числа | Оборудование ):

unsigned long err = 0;
int rc = 0;

OPENSSL_cpuid_setup();
ENGINE_load_rdrand();

ENGINE* eng = ENGINE_by_id("rdrand");
err = ERR_get_error();

if(NULL == eng) {
    fprintf(stderr, "ENGINE_load_rdrand failed, err = 0x%lx\n", err);
    abort(); /* failed */
}

rc = ENGINE_init(eng);
err = ERR_get_error();

if(0 == rc) {
    fprintf(stderr, "ENGINE_init failed, err = 0x%lx\n", err);
    abort(); /* failed */
}

rc = ENGINE_set_default(eng, ENGINE_METHOD_RAND);
err = ERR_get_error();

if(0 == rc) {
    fprintf(stderr, "ENGINE_set_default failed, err = 0x%lx\n", err);
    abort(); /* failed */
}

/* OK to proceed */

...
ENGINE_finish(eng);
ENGINE_free(eng);
0 голосов
/ 16 августа 2011

Я предлагаю вам сделать

apt-get source openssl

Это даст вам исходный код openssl.В дереве вы можете найти, например, каталоги crypto / rsa и crypto / md5, которые, я думаю, будут хорошим началом для вашего проекта.Он также поставляется с некоторой документацией в форме README и т. П.

Веселитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...