16个版本 (稳定)
1.7.0 | 2024年7月9日 |
---|---|
1.6.0 | 2024年1月25日 |
1.5.0 | 2023年8月29日 |
1.4.1 | 2023年6月27日 |
0.2.0 | 2022年5月12日 |
#1057 in 加密学
每月下载 272次
120KB
2.5K SLoC
配置
此库的加密策略可以自定义。它通过依次检查以下内容来查找配置文件
- 环境变量
RPM_SEQUOIA_CRYPTO_POLICY
, /etc/crypto-policies/back-ends/rpm-sequoia.config
,- 环境变量
SEQUOIA_CRYPTO_POLICY
,最后是, /etc/crypto-policies/back-ends/sequoia.config
.
仅使用存在的第一个配置文件。如果环境设置为空字符串,则使用空配置文件。也就是说,使用默认策略。
因此,如果未设置 RPM_SEQUOIA_CRYPTO_POLICY
,并且 /etc/crypto-policies/back-ends/rpm-sequoia.config
,则将使用后者。在这种情况下,将完全忽略 SEQUOIA_CRYPTO_POLICY
和 /etc/crypto-policies/back-ends/sequoia.config
。
有关加密策略的信息,请参阅Fedora Crypto Policy项目。
构建
要构建,您需要rustc(版本1.73或更高版本)、cargo以及Sequoia默认使用的加密库nettle-devel。
以下是构建rpm-sequoia和使用它的rpm版本的方法
$ sudo dnf install cargo rustc clang pkg-config nettle-devel
$ mkdir /tmp/rpm
$ cd /tmp/rpm
$ git clone [email protected]:rpm-software-management/rpm-sequoia.git
Cloning into 'rpm-sequoia'...
done.
$ cd rpm-sequoia
$ PREFIX=/usr LIBDIR="\${prefix}/lib64" \
cargo build --release && cargo test --release
Updating crates.io index
...
test result: ok. ...
$ cd /tmp/rpm
$ git clone [email protected]:rpm-software-management/rpm.git
Cloning into 'rpm'...
done.
$ cd rpm
$ git checkout rpm-4.18.1-release
Switched to a new branch 'rpm-4.18.1-release'
$ sudo dnf install automake autoconf gettext-devel libtool tar zlib-devel file-devel libarchive-devel popt-devel sqlite-devel lua-devel fakechroot
$ autoreconf -fis
...
$ mkdir b
$ cd b
$ export PKG_CONFIG_PATH=/tmp/rpm/rpm-sequoia/target/release
$ export LD_LIBRARY_PATH=/tmp/rpm/rpm-sequoia/target/release
$ ../configure --prefix=/ --with-crypto=sequoia
$ make
$ make check
注意:这构建了rpm
的4.18版本,这是rpm
的当前稳定版本。当前rpm
的开发分支已切换到使用cmake
而不是autoconf
。请参阅rpm
的INSTALL
文件,了解如何构建master
。
要使用不同的加密后端,您需要禁用默认后端,并选择您首选的后端。例如,要使用Sequoia的OpenSSL后端,您需要按照以下方式编译 rpm-sequoia
$ cargo build --release --no-default-features --features crypto-openssl
有关目前支持的加密后端列表,请参阅 sequoia-openpgp
的 README。
rpm-sequoia工件(.a、.so和.pc文件)放置在构建目录中,在本例中为 /tmp/rpm/rpm-sequoia/target/release
。
在调用 cargo build
时,我们还设置了两个环境变量
-
PREFIX
是用于生成的rpm-sequoia.pc
文件的前缀。默认为/usr/local
。 -
LIBDIR
是在生成的元数据中列出的安装库路径。它可以是一个绝对路径,也可以基于${prefix}
的路径,默认为${prefix}/lib
。
要运行一个或两个测试,请执行以下类似操作
注意:在构建或运行测试套件时,必须确保已正确设置 PKG_CONFIG_PATH
和 LD_LIBRARY_PATH
(如上述转储所示)。
$ cd /tmp/rpm/rpm/b/tests
$ export PKG_CONFIG_PATH=/tmp/rpm/rpm-sequoia/target/release
$ export LD_LIBRARY_PATH=/tmp/rpm/rpm-sequoia/target/release
$ make populate_testing
$ T="266 273"; for t in $T; do if ! ../../tests/rpmtests $t; then cat rpmtests.dir/$t/rpmtests.log; fi; done
要获取跟踪输出,请将 RPM_TRACE 设置为 1
$ cd /tmp/rpm/rpm/b/tests
$ export PKG_CONFIG_PATH=/tmp/rpm/rpm-sequoia/target/release
$ export LD_LIBRARY_PATH=/tmp/rpm/rpm-sequoia/target/release
$ make populate_testing
$ export RPM_TRACE=1
$ ../../tests/rpmtests 273
$ cat rpmtests.dir/273/rpmtests.log
...
+pgpDigParamsFree: -> success
+rpmFreeCrypto: entered
+rpmFreeCrypto: -> success
273. rpmsigdig.at:495: 273. rpmsign --addsign (rpmsigdig.at:495): FAILED (rpmsigdig.at:503)
...
依赖关系
~13-25MB
~302K SLoC