无法将 tomsfastmath 链接到 libtomcrypt

2024-02-28

我正在用 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
}

Add -DTFM_DESC到你的 makefile 的CFLAGS and CPPFLAGS变量,以便标题将声明tfm_desc as an extern多变的。

The tfm_desc然后应该从库中提取变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法将 tomsfastmath 链接到 libtomcrypt 的相关文章

随机推荐

  • 未找到 System.Data 程序集

    我有一个参考System Data在我的Windows服务项目中 我不断得到Exception 无法加载文件或程序集 System Data Version 4 0 0 0 Culture neutral PublicKeyToken b7
  • SkipList 与 Dictionary

    我最近一直在阅读有关跳过列表的内容 我有一个 Web 应用程序 它对静态数据集执行相当复杂的 Sql 查询 我想实现一个缓存系统 生成 sql 查询的 md5 哈希值 然后返回查询的缓存数据集 如果集合中存在该数据集 哪种算法更好 字典还是
  • 如何在android中列表视图为空时显示消息

    我是 Android 方面的新手 我正在创建一个应用程序 其中包含将动态填充的列表视图 我的要求是当列表为空时 我想显示一条消息 我不想仅仅为了显示此消息而创建其他视图 有什么好的方法可以做到这一点吗 有什么建议么 ListActivity
  • 语法错误:插入“enum Identifier”,插入“EnumBody”,插入“}”

    我编写了一个枚举类型 当我运行为其创建的 JUnit 测试时 该类型会出现以下语法错误 java lang Error Unresolved compilation problems Syntax error insert enum Ide
  • 需要 python lxml 语法帮助来解析 html

    我是 python 的新手 我需要一些有关使用 lxml 查找和迭代 html 标签的语法的帮助 以下是我正在处理的用例 HTML 文件的格式相当好 但并不完美 屏幕上有多个表格 其中一个包含一组搜索结果 每个表格包含页眉和页脚 每个结果行
  • 每天第一次调用网络服务很慢

    在构建此 Web 服务和调用它的应用程序时 我们注意到每天对该 Web 服务的第一次调用非常慢 有时甚至会超时 然而 此后的每一次通话都效果很好 有人能解释一下为什么会这样以及我们如何摆脱这种痛苦吗 提前致谢 如果是 ASP NET Web
  • 更改seaborn箱线图线彩虹颜色

    I found this beautiful graph online apparently made with plotly and wanted to recreate it with seaborn 到目前为止 这是我的代码 impo
  • AngularJS 实现模板本地化

    我想实现视图的本地化 也应该包括正文 我之前通过加载 JSON 文件并通过键进行迭代来完成此操作 键是类名 比我简单地将键的值分配给 元素与类 语言文件 JSON Header Title My Title Header Text Lore
  • Jersey 2 + HK2 - @ApplicationScoped 不工作

    我有课 ApplicationScoped public class Service private Map
  • (bool) 可靠地转换为 0 或 1 吗? [复制]

    这个问题在这里已经有答案了 来自一些reading https stackoverflow com questions 6627178 c99 why are false and true defined as 0 and 1 and no
  • iOS 中可用的路径目录

    NSSearchPathDirectory 这些常量指定各种目录的位置 enum NSApplicationDirectory 1 NSDemoApplicationDirectory NSDeveloperApplicationDirec
  • 将Angular2项目集成到Tomcat服务器中

    我为我的项目开发了一个 Spring maven Rest api 对于客户端 我使用 Angular2 和 typescript 作为 Angular 的新手 参考 Angular 网站进行开发 使用 npm 和 lite server
  • C# Winform 网格渲染在 Windows 7 上缓慢

    我注意到 C winform datagrid 在我的 windows 7 64 位机器上非常慢 对于具有 1000 行 足够的列 文本以适合屏幕宽度的标准网格 我看到滚动时出现明显的渲染延迟 即滚动 滚动条移动滞后约 0 5 秒而不是平滑
  • 当超过 6 个参数时 Observable.forkJoin 返回错误类型

    我遇到 Observable forkJoin 的问题 它推断出错误的返回类型 然后在传递超过 6 个参数时导致错误 Observable forkJoin service getType1 service getType2 service
  • 如何在 shell 脚本中即时解释变量?

    我正在使用 JQ 在 shell 脚本中读取 JSON 在这里 我无法动态解释 shell 脚本中的变量 HOME HOST PEMFILE JSON 文件 script install HOME lib install sh HOST P
  • 新的默认VB.NET项目立即报错

    我刚刚在 Mac 上安装了 Mono 版本 2 10 8 和 MonoDevelop 2 8 6 5 当我创建一个新项目 文件 gt 新解决方案 gt VBNet gt ASP NET gt Web 应用程序 时 创建后出现错误 尝试加载项
  • C 函数 fwrite() 不写入文件

    我正在尝试编写结构tempGroupFile into GroupFile fwrite 写入时返回1 但实际上文件中没有写入数据GroupFile 功能printRec 在屏幕上打印出结构 data是结构变量 文件GroupFile这些操
  • Android 上的 HTML5

    根据 http developer android com sdk android 2 0 highlights html http developer android com sdk android 2 0 highlights html
  • 如何在关闭钩子中获取返回码

    我需要根据我的应用程序结果修改JVM返回代码 但显式调用 System exit code 是有风险的 因为应用程序很复杂 并且很难识别正在运行的线程的结束 所以我想出了在 JVM 退出之前使用 shutdown hook 来修改返回代码
  • 无法将 tomsfastmath 链接到 libtomcrypt

    我正在用 c 编写一个安全的即时消息程序 使用 libtomcrypt C 库来实现 RSA 和 SPRNG 函数 我将 libtomcrypt 编译为静态库 并且能够链接到它并运行 sprng 函数并查看和使用它生成的随机数据 我遇到的问