Piszę bezpieczny program do obsługi wiadomości błyskawicznych w języku C++ za pomocą biblioteki libtomcrypt C dla jego funkcji RSA i SPRNG. Dostałem libtomcrypt skompilowany jako statyczną bibliotekę i udało mi się połączyć z nim i uruchomić funkcje sprng i zobaczyć i użyć losowych danych, które generuje.Nie można połączyć tomsfastmath do libtomcrypt
Problem, który mam, próbuje użyć funkcji rsa_make_key(), która ma zależności od połączonej biblioteki matematycznej.
W tym przypadku próbuję użyć Tomsfastmath (tfm), którą próbuję również połączyć jako bibliotekę statyczną. Obie te biblioteki znajdują się w folderze z własnym folderem projektu z mojego folderu projektu (tj. ../libtomcrypt)
W moim kodzie, gdy próbuję uzyskać dostęp do tombfast deskryptora matematycznego "tfm_desc", pojawia się błąd test_crypt.cpp:8:11: error: 'tfm_desc' was not declared in this scope
. Co sprawia, że myślę, że tfm nie jest poprawnie połączony z libtomcrypt. Przeczytałem dokumentację obu tych rzeczy, nie bardzo jasne.
Jestem na końcu rozumu tutaj. Co robię źle?
Oto mój make plik
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)
i tu jest moja funkcja test_crypt
#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
}
To błąd kompilatora, a nie błąd łącznika. – melpomene