libtomcrypt를 사용하여 샘플 rsa/dsa 코드를 실행하려고합니다.런타임 오류 : libtommath 및 libtomcrypt로 인한 세그먼트 오류
LibTomMath를 먼저 설치하면 make install이 설치되어 결과적으로 다음 파일이 생성됩니다.
/usr/lib/libtommath.a /usr/include/tommath.h
는 그 후 나는 다음과 같은 명령을 실행하는 동안 내가 어떤 오류가 발생하고 있지 않다
/usr/lib/libtomcrypt.a
만든 다음 파일을 결과적으로 외부 라이브러리
CFLAGS="-DLTM_DESC -DUSE_LTM -I/usr/include" EXTRALIBS="/usr/lib/libtommath.a " make install
로 LibTomMath와 libtomcrypt 설치
CFLAGS="-DLTM_DESC -DUSE_LTM -I/usr/include" EXTRALIBS="/usr/lib/libtommath.a " make test
나는 성공적
gcc -DLTM_DESC rsa_make_key_example.c -o rsa -ltomcrypt
or
gcc rsa_make_key_example.c -o rsa -ltomcrypt
에는 컴파일 오류을 사용하지 않고 컴파일이 문서 libtomcrypt_installation 및 libtomcrypt_resolved를 통과했다. 그러나 달리려고하면 다음과 같은 오류가 발생합니다. 여기
./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
편집 1 : 내가 더 조사하고 세그먼트 오류
#ifdef LTC_MPI
#include <stdarg.h>
int ltc_init_multi(void **a, ...)
{
...
...
if (mp_init(cur) != CRYPT_OK) ---> This line causes segmentation fault
내가 만드는 중이라서 실수에 대한 이유를 발견 ? 이러한 프로그램을 성공적으로 실행하기 위해이 문제를 해결하는 방법은 무엇입니까?
저는 gcc를 사용하고 있습니다. 어떤 도움/링크도 높이 평가 될 것입니다. 미리 감사드립니다.
'-DUSE_TFM'을 gcc 명령에 추가하십시오. – LPs
gcc -DUSE_TFM dsa_make_key_example.c -ltomcrypt -ltfm -o dsa를 사용하면 컴파일 타임 오류가 발생합니다. tfm_desc이 선언되지 않았습니다. 그런 다음 CFLAGS = "- DTFM_DESC -DUSE_TFM"EXTRALIBS = -ltfm make -f makefile.shared를 사용하여 libtomcrypt를 다시 빌드합니다. gcc에서 -DUSE_TFM 옵션과 동일한 컴파일 타임 오류가 발생합니다. 그러나 -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