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
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は宣言されていません。次に、CFLAGS = " - DTFM_DESC -DUSE_TFM" EXTRALIBS = -ltfm make -f makefile.shared installを使用して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