Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
lunc Гость
|
Добавлено: Чт Мар 13 2003 19:19 Заголовок сообщения: RSA в OpenSSL |
|
|
Подскажите, как сохранить ключ (приватный или открытый) в файл, так чтобы его можно было потом извлечь оттуда и как его читать оттуда? В rsa.h насколько я понял, есть только распечатка структуры RSA в файл, но потом ее фиг считаеш. Или хотя бы как выглядит ключ (как совмещаются n , где n= p*q, и d или n и e, конкатенацией?). Проблемма в том, что я генерирую ключ как структуру RSA, а как сохранить и обрабатывать этот ключ я незнаю. Может с evp.h как-то еще можно? |
|
Вернуться к началу |
|
|
atkachen Гость
|
Добавлено: Пт Мар 14 2003 06:52 Заголовок сообщения: Re: RSA в OpenSSL |
|
|
Каждое поле структуры RSA - это данные типа BIGNUM, которое тоже в свою очередь структура с 4-мя интовскими полями и одним указателем на long. Там есть функции bntohex Или что-то подобное ( см. man rsa, затем man bn ). Это как раз ф-ии, сохраняющие BIGNUM в массив char`ов. Соответственно надо пройти по всем полям структуры RSA и подобным образом сохранить их. |
|
Вернуться к началу |
|
|
lunc Гость
|
Добавлено: Пт Мар 14 2003 10:14 Заголовок сообщения: Re: RSA в OpenSSL |
|
|
Спасибо!!! Сейчас я как раз так и делаю, а нет ли более удобногометода? |
|
Вернуться к началу |
|
|
atkachen Гость
|
Добавлено: Пт Мар 14 2003 15:06 Заголовок сообщения: Re: RSA в OpenSSL |
|
|
Нет. Плюс к этому это еще и косячно с некоторыми значениями экспоненты работает.... В общем, реализаторы этой версии OpenSSL, похоже, не постарались. Когда я писал клиент-серверное приложение с обменом по TCP, мне пришлось попотеть, пока я нашел параметры, при которых это работает. |
|
Вернуться к началу |
|
|
lunc Гость
|
Добавлено: Вт Мар 18 2003 14:34 Заголовок сообщения: Re: RSA в OpenSSL |
|
|
Заюзал bn2hex и bn2bin (и обратные к ним) следующим образом:
unsigned char str[BN_num_bytes(rsa->n)]; BIGNUM *b = BN_new(); BN_bn2bin(rsa->n, str); BN_bin2bn(str, BN_num_bytes(rsa->n), b);
или
char *str; BIGNUM *b = BN_new(); str = BN_bn2hex(rsa->n); BN_bin2bn(&b, str);
после этого смотрю rsa->n->dmax и b->dmax, по идеи они должны бвыть равны (я вроде создал копию поля n, но в обоих случаях первый равен 64, а второй 33 (при 1024 битной генерации rsa), почему так? |
|
Вернуться к началу |
|
|
|