Ich schreibe ein sicheres Instant-Messaging-Programm in C++ mit der Bibliothek libtomcrypt C für seine RSA- und SPRNG-Funktionen. Ich habe libtomcrypt kompiliert als eine statische Bibliothek und ich war in der Lage, mit ihm zu verknüpfen und die Sprng-Funktionen ausführen und sehen und verwenden Sie die zufälligen Daten, die es generiert.Ich kann tomsfastmath nicht in libtomcrypt einbinden
Das Problem, das ich habe, versucht, die rsa_make_key() -Funktion zu verwenden, die Abhängigkeiten zu einer verknüpften Math-Bibliothek zu funktionieren hat.
In diesem Fall versuche ich Tomsfastmath (tfm) zu verwenden, die ich auch versuche, als eine statische Bibliothek zu verknüpfen. Beide Bibliotheken befinden sich in ihrem eigenen Projektordner, ein Verzeichnis oberhalb meines Projektordners (zB ../libtomcrypt)
In meinem Code bekomme ich den Fehler test_crypt.cpp:8:11: error: 'tfm_desc' was not declared in this scope
, wenn ich versuche, auf den tomsfast Mathedeskriptor "tfm_desc" zuzugreifen. Das lässt mich denken, dass tfm nicht korrekt in libtomcrypt eingebunden wird. Ich habe die Dokumentation für diese beiden Dinge gelesen, es ist nicht sehr klar.
Ich bin am Ende hier. Was mache ich falsch?
Hier ist mein Make-Datei
CC:=gcC#C Compiler
CFLAGS:=-std=c99 -O0 -I/home/k3rb3ros/csci484-CMU-/libtomcrypt-1.17/src/headers -g - Wall -Wextra#C Compiler flags
CPP:=g++ #C++ Compiler
CPPFLAGS:=-std=gnu++0x -O0 -I/home/k3rb3ros/csci484/csci484-CMU-/libtomcrypt- 1.17/src/headers -L. -g -Wall -Wextra#C++ Compiler flags
#CPPFLAGS:=-std=gnu++0x -O0 -g -Wall -Wextra #C++ Compiler flags
LDFLAGS:= -lSDL -lSDL_net -ltfm -ltomcrypt
CSOURCES= #C files used in this program
CPPSOURCES=connection.cpp chat.cpp test_crypt.cpp #CPP files used in this prgram
#COBJECTS=$(CSOURCES:.c=.o)libtfm.a libtomcrypt.a
COBJECTS=$(CSOURCES:.c=.o)
CPPOBJECTS=$(CPPSOURCES:.cpp=.o)
BINARY=down_low
all: $(BINARY) $(COBJECTS) $(CPPOBJECTS)
.c.o:
$(CC) $(CFLAGS) -c $< -o [email protected]
.cpp.o:
$(CPP) $(CPPFLAGS) -c $< -o [email protected]
$(BINARY): $(COBJETS) $(CPPOBJECTS)
$(CPP) $(CPPFLAGS) $(COBJECTS) $(CPPOBJECTS) -o [email protected] $(LDFLAGS)
clean:
rm -rv $(BINARY) $(COBJECTS) $(CPPOBJECTS)
und hier ist meine test_crypt Funktion
#include "headers/test_crypt.h"
using namespace std;
void test_crypt()
{
int err = 0;
int rng_idx = -1; //rng index, not sure if I need this
ltc_mp = tfm_desc; //tell tomcrypt to use toms fast math
rsa_key pub_key;
prng_state random_gen;
if((err = sprng_start(&random_gen)) != CRYPT_OK) //start the rng and check for errors
{
cout << "start error " << error_to_string(err) << endl;
}
rng_idx = find_prng("sprng");
if((err = sprng_ready(&random_gen)) != CRYPT_OK)
{
cout << "Ready error " << error_to_string(err) << endl;
}
//test toms fast math present and working
//fp_int test;
//fp_init(&test);
//sprng_read(entropy, size, &random_gen);
/*
if((err = rsa_make_key(NULL, //PRNG state
rng_idx, //PRNG idx
1024/8, //Size of key
65537, //e
&pub_key) //RSA key
) != CRYPT_OK) //if conditon test
{
cout << "RSA Key Generation error " << error_to_string(err) << endl;
}
rsa_free(&pub_key); //free the key when we are done with it;
*/
sprng_done(&random_gen); //done generating random numbers
}
Das ist ein Compiler-Fehler, kein Linker-Fehler. – melpomene