Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 должны быть заполнены ключами,
а пока что они только создаются, но пусты.

Заранее спасибо за ответ!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)