Ich versuche, Probe RSA/Dsa-Code mit Libtomcrypt ausführen.Laufzeitfehler: Segmentierung Fehler mit Libtommath und Libtomcrypt
Ich habe LibTomMath zuerst installiert als make install, als Ergebnis werden folgende Dateien erstellt.
/usr/lib/libtommath.a /usr/include/tommath.h
Danach installierte ich mit libtommath als externe Bibliothek libtomcrypt
CFLAGS="-DLTM_DESC -DUSE_LTM -I/usr/include" EXTRALIBS="/usr/lib/libtommath.a " make install
Als Ergebnis folgende Datei erstellt
/usr/lib/libtomcrypt.a
ich keine Fehler bekommen, während folgenden Befehl ausführen
CFLAGS="-DLTM_DESC -DUSE_LTM -I/usr/include" EXTRALIBS="/usr/lib/libtommath.a " make test
mit erfolgreich zu kompilieren
Ich habe durch dieses Dokument libtomcrypt_installation und libtomcrypt_resolved gegangen
gcc -DLTM_DESC rsa_make_key_example.c -o rsa -ltomcrypt
or
gcc rsa_make_key_example.c -o rsa -ltomcrypt
keine Kompilierungsfehler. Wenn ich jedoch versuche zu laufen, habe ich folgenden Fehler bekommen.
./rsa
LTC_ARGCHK 'ltc_mp.name != NULL' failure on line 34 of file src/pk/rsa/rsa_make_key.c
Aborted
Hier ist meine Probe rsa Code
#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;
}
Hier ist meine Probe dsa Code
#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;
}
Hier ist, wie ich es erfolgreich kompiliert haben,
gcc dsa_make_key_example.c -o dsa -ltomcrypt
Wenn ich versuche, den Code auszuführen, erhalte ich folgenden Fehler.
./dsa
segmentation fault
EDIT 1: ich weiter untersucht und fand den Grund für die Segmentierung Fehler
#ifdef LTC_MPI
#include <stdarg.h>
int ltc_init_multi(void **a, ...)
{
...
...
if (mp_init(cur) != CRYPT_OK) ---> This line causes segmentation fault
Wo bin ich Fehler zu machen? Wie kann dieses Problem gelöst werden, um diese Programme erfolgreich auszuführen?
Ich benutze Linux, Gcc. Jede Hilfe/Verbindung wird sehr geschätzt. Danke im Voraus.
Versuchen Sie, '-DUUSE_TFM' zu Ihrem 'gcc' Befehl hinzuzufügen. – LPs
wenn ich gcc -DUSE_TFM dsa_make_key_example.c-timcrypt -ltfm -o dsa verwende, gibt es Kompilierzeit Fehler. tfm_desc nicht deklariert. Dann rebuilt ich wieder libtomcrypt mit CFLAGS = "- DTFM_DESC -DUSE_TFM" EXTRALIBS = -ltfm machen -f makefile.shared installieren, immer noch bekomme ich den gleichen Fehler bei der Kompilierung mit -DUSE_TFM Option mit gcc. Ohne -DUSE_TFM, gcc dsa_make_key_example.c-timomcrypt -o dsa, kein Kompilierzeitfehler. – bholanath
Kein Kompilierzeitfehler mit gcc -DLTM_LTM dsa_make_key_example.c -ltomcrypt -ltfm -o dsa, jedoch Laufzeitsegmentierungsfehler. – bholanath