gpt4 book ai didi

c++ - 无法将 tomsfastmath 链接到 libtomcrypt

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:47:58 26 4
gpt4 key购买 nike

我正在用 C++ 使用 libtomcrypt C 库为其 RSA 和 SPRNG 函数编写一个安全的即时消息传递程序。我将 libtomcrypt 编译为静态库,我已经能够链接到它并运行 sprng 函数并查看和使用它生成的随机数据。

我遇到的问题是尝试使用 rsa_make_key() 函数,该函数依赖于链接的数学库来运行。

在这种情况下,我尝试使用 Tomsfastmath (tfm),我还尝试将其链接为静态库。这两个库都位于它们自己的项目文件夹中,比我的项目文件夹高一个目录(即 ../libtomcrypt)

在我的代码中,当我尝试访问 tomsfast 数学描述符“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 $@

.cpp.o:
$(CPP) $(CPPFLAGS) -c $< -o $@

$(BINARY): $(COBJETS) $(CPPOBJECTS)
$(CPP) $(CPPFLAGS) $(COBJECTS) $(CPPOBJECTS) -o $@ $(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
}

最佳答案

-DTFM_DESC 添加到您的 makefile 的 CFLAGSCPPFLAGS 变量中,以便 header 将 tfm_desc 声明为 外部变量。

tfm_desc 变量应该从库中提取。

关于c++ - 无法将 tomsfastmath 链接到 libtomcrypt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com