| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > OpenSSL: почему трассировка завершается в PEM_writ |
| Автор: bomberman 14.4.2008, 11:40 |
| Приветствую, господа! Дан следующий код, генерирующий ключи по алгоритму RSA (данный код находится в статье на http://www.opennet.ru/docs/RUS/use_openssl (в конце страницы - листинг 1)): #include <crypto.h> #include <pem.h> #include <rsa.h> #pragma comment( lib, "opengl32.lib" ) #pragma comment (lib, "C:\\OpenSSL\\lib\\VC\\libeay32MDd.lib") /* Имена ключевых файлов */ #define PRIVAT "./privat.key" #define PUBLIC "./public.key" void main() { /* указатель на структуру для хранения ключей */ RSA * rsa = NULL; unsigned long bits = 2048; /* длина ключа в битах */ FILE *priv_key_file = NULL, *pub_key_file = NULL; /* контекст алгоритма шифрования */ const EVP_CIPHER *cipher = NULL; priv_key_file = fopen(PRIVAT, "wb"); pub_key_file = fopen(PUBLIC, "wb"); /* Генерируем ключи */ rsa = RSA_generate_key(bits, RSA_F4, NULL, NULL); /* Формируем контекст алгоритма шифрования */ OpenSSL_add_all_ciphers(); cipher = EVP_get_cipherbyname("bf-ofb"); /* Получаем из структуры rsa открытый и секретный ключи и сохраняем в файлах. * Секретный ключ шифруем с помощью парольной фразы "hello" */ PEM_write_RSAPrivateKey(priv_key_file, rsa, cipher, NULL, 0, NULL, "hello"); PEM_write_RSAPublicKey(pub_key_file, rsa); /* Освобождаем память, выделенную под структуру rsa */ RSA_free(rsa); } На функции PEM_write_RSAPrivateKey(priv_key_file, rsa, cipher, NULL, 0, NULL, "hello"); трассировка прекращается. Вопрос состоит в том, как это можно объяснить и какие действия можно предпринять, чтобы получить нужный результат работы программы: файлы privat.key и puplic.key должны быть заполнены ключами, а пока что они только создаются, но пусты. Заранее спасибо за ответ! |