Я пытаюсь запустить образец кода rsa/dsa с помощью libtomcrypt.Ошибка выполнения: ошибка сегментации с libtommath и libtomcrypt
Я установил LibTomMath сначала как make install, в результате создаются следующие файлы.
/usr/lib/libtommath.a /usr/include/tommath.h
После этого я установил libtomcrypt с LibTomMath в качестве внешней библиотеки
CFLAGS="-DLTM_DESC -DUSE_LTM -I/usr/include" EXTRALIBS="/usr/lib/libtommath.a " make install
В результате следующий файл создается
/usr/lib/libtomcrypt.a
Я не получаю сообщение об ошибке во время выполнения следующей команды
CFLAGS="-DLTM_DESC -DUSE_LTM -I/usr/include" EXTRALIBS="/usr/lib/libtommath.a " make test
Я прошел через этот документ libtomcrypt_installation и libtomcrypt_resolved для успешной компиляции не используя
gcc -DLTM_DESC rsa_make_key_example.c -o rsa -ltomcrypt
or
gcc rsa_make_key_example.c -o rsa -ltomcrypt
нет ошибки компиляции. Однако, когда я пытаюсь запустить, я получил следующую ошибку.
./rsa
LTC_ARGCHK 'ltc_mp.name != NULL' failure on line 34 of file src/pk/rsa/rsa_make_key.c
Aborted
Вот мой пример кода RSA
#include <tomcrypt.h>
#include <stdio.h>
int main(void) {
# ifdef USE_LTM
ltc_mp = ltm_desc;
# elif defined (USE_TFM)
ltc_mp = tfm_desc;
# endif
rsa_key key;
int err;
register_prng(&sprng_desc);
if ((err = rsa_make_key(NULL, find_prng("sprng"), 1024/8, 65537,&key)) != CRYPT_OK) {
printf("make_key error: %s\n", error_to_string(err));
return -1;
}
/* use the key ... */
return 0;
}
Вот мой пример кода DSA
#include <tomcrypt.h>
#include <stdio.h>
int main(void) {
# ifdef USE_LTM
ltc_mp = ltm_desc;
# elif defined (USE_TFM)
ltc_mp = tfm_desc;
# endif
int err;
register_prng(&sprng_desc);
dsa_key key;
if ((err = dsa_make_key(NULL, find_prng("sprng"), 20, 128,&key)) != CRYPT_OK) {
printf("make_key error: %s\n", error_to_string(err));
return -1;
}
/* use the key ... */
return 0;
}
Вот как я скомпилировал его успешно,
gcc dsa_make_key_example.c -o dsa -ltomcrypt
Когда я пытаюсь запустить код, я получаю следующую ошибку.
./dsa
segmentation fault
EDIT 1: я исследовал дальше и нашел причину ошибки сегментации
#ifdef LTC_MPI
#include <stdarg.h>
int ltc_init_multi(void **a, ...)
{
...
...
if (mp_init(cur) != CRYPT_OK) ---> This line causes segmentation fault
Где я делать ошибки? Как решить эту проблему для успешного запуска этих программ?
Я использую linux, gcc. Любая помощь/ссылка будут высоко оценены. Заранее спасибо.
Попробуйте добавить '-DUSE_TFM' в команду' gcc'. – LPs
, когда я использую gcc -DUSE_TFM dsa_make_key_example.c -ltomcrypt -ltfm -o dsa, он дает ошибку времени компиляции. tfm_desc не объявлен. Затем я снова перестраиваю libtomcrypt с помощью CFLAGS = "- DTFM_DESC -DUSE_TFM" EXTRALIBS = -ltfm make -f makefile.shared install, но я получаю такую же ошибку времени компиляции с параметром -DUSE_TFM с gcc. Однако без -DUSE_TFM, gcc dsa_make_key_example.c -ltomcrypt -o dsa, нет ошибки времени компиляции. – bholanath
Ошибка компиляции с gcc -DLTM_LTM dsa_make_key_example.c -ltomcrypt -ltfm -o dsa, однако ошибка сегментации во время выполнения. – bholanath