以前,git 存储库包含doc/crypt.pdf
以获取详细文档。这已更改,该文件现在只能从相应版本的 tarball 或页面 https://github.com/libtom/libtomcrypt/releases 中获取。
掌握:
发展:
掌握:
发展:
API/ABI 更改:检查此处
如果您想提交补丁,请从开发中分支出来。
如果包含测试和文档,补丁集成将会更快。
请在单独的提交中更新 makefile。要更新它们,只需运行updatemakes.sh
脚本即可。
如果您有更大的事情要提交,请随时与我们联系。然后我们可以为您提供对此存储库的写入权限,以便您可以基于此存储库打开您的 PR,并且我们可以更轻松地遵循我们正在使用的 rebase-before-merge 方法(甚至可以自己进行 rebase)。
我们使用 Pull Request 审查来确保代码与现有代码库一致。
请查看此处以了解该方法。
请注意,除了master和development之外的所有分支都可以并且将会被强制推送、重新建立基础和/或删除!
如果您想依赖这样一个不稳定的分支,请创建您自己的此存储库的分支,以确保不会出现任何问题。
默认情况下,该库以(或多或少取决于您的需求)最佳方式构建其整个功能集(除了katja
)。
如果您想缩减库的功能,可以使用许多配置选项。
请查看src/headers/tomcrypt_custom.h
以了解所有可用的配置选项。
以下列表是可用但最常需要的配置开关的一小部分。
旗帜 | 行为 |
---|---|
LTC_NO_TEST | 从库中删除所有算法自测试 |
LTC_NO_FILE | 删除所有需要预定义FILE 数据类型的 API 函数(主要对嵌入式目标有用) |
GMP_DESC | 启用 gmp 作为 MPI 提供程序*1 |
LTM_DESC | 启用 libtommath 作为 MPI 提供程序*1 |
TFM_DESC | 启用 tomsfastmath 作为 MPI 提供程序*1 *2 |
USE_GMP | 构建二进制文件时使用gmp 作为 MPI 提供程序*3 |
USE_LTM | 构建二进制文件时使用libtommath 作为 MPI 提供程序*3 |
USE_TFM | 构建二进制文件时使用tomsfastmath 作为 MPI 提供程序*3 |
*1可以针对所有 MPI 提供程序并行构建库,并在启动时选择应使用哪个数学库。
*2请注意tomsfastmath
对 MPI 的固定最大大小有限制。
*3目前仅支持一个,并且仅在构建二进制文件时才需要,而不是在构建库本身时。
提供了几个makefile
。请选择最适合您的一种。
生成文件 | 用例 |
---|---|
makefile | 构建静态库(需要 GNU Make) |
makefile.shared | 构建共享(静态)库(需要 GNU Make) |
makefile.unix | 对于不常见的 UNIX 平台,或者如果您没有 GNU Make |
makefile.mingw | 用于 MS Windows 上的 mingw 编译器 |
makefile.msvc | 用于 MS Windows 上的 MSVC 编译器 |
libtomcrypt_VS2008.sln | 适用于 MS Windows 的 VisualStudio 2008 项目 |
makefile
提供了多个要构建的目标(VS 项目除外)。以下列表并未声称是完整的。可用于所有makefile
变体。
目标 | 应用 |
---|---|
空目标/未给出 | cf library |
library | 仅构建库 |
hashsum | 构建hashsum 二进制文件,类似于shasum ,但支持库中包含的所有哈希算法*4 |
crypt | 构建crypt 二进制文件,实现类似于crypt *4的东西 |
sizes | 构建sizes 二进制文件,在调用时打印所有内部数据大小*4 |
constants | 构建constants 二进制文件,在调用时打印所有内部常量*4 |
openssl-enc | 构建openssl-enc 二进制文件,它或多或少兼容openssl enc *4 *5 |
test | 构建test 二进制文件,运行所有算法自测试 + 一些扩展测试*4 |
timing | 构建timing 二进制文件,可用于测量算法和模式的时序*4 |
bins | 构建hashsum *4 |
all_test | 构建test 、 hashsum 、 crypt 、 small 、 tv_gen 、 sizes 和constants *4 |
docs | 构建开发人员文档doc/crypt.pdf |
install | 安装library 和头文件*7 *8 |
install_bins | 安装bins 目标创建的二进制文件*7 *8 |
install_docs | 安装docs 目标创建的文档*7 *8 |
install_test | 安装由test 目标创建的测试应用程序*7 *8 |
install_all | 安装所有内容(即library 、 bins 、 docs 和test ) *8 |
uninstall | 卸载library 和头文件 |
*4还建立library
*5某些配置中的构建被破坏,因此默认情况下不会构建
*7还在安装之前构建必要的工件
*8另请查看此文件的“安装”部分
您想将库构建为静态库
make
您想将库构建为共享库
make -f makefile.shared
您的系统上安装了libtommath
,并且想要构建静态库和test
二进制文件来运行自测试。
make CFLAGS="-DUSE_LTM -DLTM_DESC" EXTRALIBS="-ltommath" test
您的系统上安装了tomsfastmath
,并且想要构建共享库和所有二进制文件
make -f makefile.shared CFLAGS="-DUSE_TFM -DTFM_DESC" EXTRALIBS="-ltfm" all demos
您的系统上安装了gmp
、 libtommath
和tomsfastmath
,并且想要构建一个静态库和timing
二进制文件来根据gmp
测量计时。
make CFLAGS="-DUSE_GMP -DGMP_DESC -DLTM_DESC -DTFM_DESC" EXTRALIBS="-lgmp" timing
如果您的libtommath
位于非标准位置:
make CFLAGS="-DUSE_LTM -DLTM_DESC -I/opt/devel/ltm" EXTRALIBS="/opt/devel/ltm/libtommath.a" all
您想要启用 AES-NI 支持:
make CFLAGS=-DLTC_AES_NI
存在上表中描述的多个安装make 目标。
这些目标支持标准方法(参见 [GNU]、[FreeBSD])通过以下变量集修改安装路径:
DESTDIR
PREFIX
LIBPATH
INCPATH
DATAPATH
BINPATH
整个变量集仅在makefile
、 makefile.shared
和makefile.unix
中受支持。
如果您必须使用其他 makefile 之一,请检查该文件支持哪些变量。
您要将静态库安装到默认路径
make install
您想要将共享库安装到特殊路径并从此路径使用它
make -f makefile.shared PREFIX=/opt/special/path
查看开发人员文档、[GNU] 或 [FreeBSD] 以获取所有变量的详细说明。
该项目提供对 CMake 构建系统的支持。
git clone https://github.com/libtom/libtomcrypt.git
mkdir -p libtomcrypt/build
cd libtomcrypt/build
cmake ..
make -j$(nproc)
有关使用 CMake 进行构建的更多详细信息,请参阅开发人员文档。