में tomsfastmath को जोड़ने में असमर्थ मैं अपने आरएसए और एसपीआरएनजी कार्यों के लिए libtomcrypt सी लाइब्रेरी का उपयोग कर सी ++ में एक सुरक्षित त्वरित संदेश प्रोग्राम लिख रहा हूं। मुझे एक स्थिर लाइब्रेरी के रूप में संकलित libtomcrypt मिला है और मैं इसे लिंक करने और sprng कार्यों को चलाने में सक्षम हूं और उत्पन्न होने वाले यादृच्छिक डेटा को देख और उपयोग कर रहा हूं।libtomcrypt
समस्या जो मैं कर रहा हूं वह rsa_make_key() फ़ंक्शन का उपयोग करने का प्रयास कर रहा है जिसमें कार्य करने के लिए एक लिंक की गई गणित लाइब्रेरी पर निर्भरता है।
इस मामले में मैं Tomsfastmath (tfm) का उपयोग करने की कोशिश कर रहा हूं जिसे मैं एक स्थिर पुस्तकालय के रूप में जोड़ने का भी प्रयास कर रहा हूं। इन दोनों पुस्तकालयों में से मेरे प्रोजेक्ट फ़ोल्डर में एक ही निर्देशिका है जो मेरे प्रोजेक्ट फ़ोल्डर (यानी ../libtomcrypt)
मेरे कोड में जब मैं टॉस्फास्ट गणित वर्णनकर्ता "tfm_desc" तक पहुंचने का प्रयास करता हूं तो मुझे त्रुटि test_crypt.cpp:8:11: error: 'tfm_desc' was not declared in this scope
मिलती है। जो मुझे लगता है कि tfm libtomcrypt में सही ढंग से लिंक नहीं हो रहा है। मैंने इन दोनों चीजों के लिए प्रलेखन पढ़ा है, यह बहुत स्पष्ट नहीं है।
मैं यहां अंत में हूं। क्या मैं गलत हूं?
यहाँ मेरी मेकअप फ़ाइल
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)
और यहाँ मेरी 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
}
यह एक कंपाइलर त्रुटि है, लिंकर त्रुटि नहीं। – melpomene