VERIFY-SIG.ECLASS

部分: eclass-manpages (5)
更新时间: 2024 年 11 月
索引 返回主内容

名称

verify-sig.eclass - 用于验证分发文件上游签名的 Eclass

描述

verify-sig eclass 提供了一种简化的方式来验证分发文件上游签名。它的主要目的是允许开发人员在更新软件包时轻松验证签名。Eclass 消除了开发人员忘记执行验证或以不正确的方式执行验证(例如,由于本地密钥环中存在额外的密钥)的风险。它还允许用户验证开发人员的工作。

要使用此 Eclass,首先将上游的密钥打包为 sec-keys/openpgp-keys-*。然后继承此 Eclass,将分离的签名添加到 SRC_URI 并设置 VERIFY_SIG_OPENPGP_KEY_PATH。Eclass 提供 verify-sig USE 标志来切换验证。

如果您需要使用 signify,您可能需要将分发文件复制到 WORKDIR 以解决“符号链接层级过多”错误。

更完整的指南可以在以下网址找到: https://mgorny.pl/articles/verify-sig-by-example.html

支持的 EAPIS

7 8

示例

示例用法

inherit verify-sig

SRC_URI="https://example.org/${P}.tar.gz
  verify-sig? ( https://example.org/${P}.tar.gz.sig )"
BDEPEND="
  verify-sig? ( sec-keys/openpgp-keys-example )"

VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/example.asc

函数

verify-sig_verify_detached <文件> <签名文件> [<密钥文件>]
从 <签名文件> 读取分离的签名,并使用它验证 <文件>。<密钥文件> 可以直接传递,或者默认为 VERIFY_SIG_OPENPGP_KEY_PATH。如果验证失败,该函数将终止。
verify-sig_verify_message <文件> <输出文件> [<密钥文件>]
验证文件('-' 代表标准输入)是否包含有效的已签名的 PGP 消息,并将消息写入 <输出文件>('-' 代表标准输出)。<密钥文件> 可以直接传递,或者默认为 VERIFY_SIG_OPENPGP_KEY_PATH。如果验证失败,该函数将终止。请注意,使用 <输出文件> 的输出很重要,因为它可以防止注入未签名的数据。
verify-sig_verify_unsigned_checksums <校验和文件> <格式> <文件>
使用 <校验和文件> 验证在空格分隔的列表 <文件>(类似于 ${A})中列出的所有文件的校验和。<格式> 指定校验和文件格式。<校验和文件> 可以是 '-' 代表标准输入。

支持以下格式
 - sha256 -- sha256sum (<哈希> <文件名>)
 - openssl-dgst -- openssl dgst (<算法>(<文件名>)=<哈希>)

如果其中一个文件与校验和不匹配或在校验和文件中缺失,该函数将终止。

请注意,此函数本身只能验证文件的完整性。为了验证其真实性,<校验和文件> 必须先针对签名进行验证,例如使用 verify-sig_verify_detached。如果它包含内联签名,请使用 verify-sig_verify_signed_checksums 代替。

verify-sig_verify_signed_checksums <校验和文件> <算法> <文件> [<密钥文件>]
使用签名的 <校验和文件> 验证在空格分隔的列表 <文件>(类似于 ${A})中列出的所有文件的校验和。<算法> 指定校验和算法(例如 sha256)。<密钥文件> 可以直接传递,或者默认为 VERIFY_SIG_OPENPGP_KEY_PATH。

如果签名验证失败,校验和文件包含未签名的数据,其中一个文件与校验和不匹配或在校验和文件中缺失,该函数将终止。

verify-sig_src_unpack
默认的 src_unpack 覆盖,如果启用了 'verify-sig' 标志,则会验证所有分发文件的签名。如果任何签名验证失败或任何分发文件未签名,该函数将终止。如果您需要执行部分验证,请自己编写 src_unpack()。

Eclass 变量

VERIFY_SIG_METHOD ?= openpgp (在继承之前设置)
要使用的签名验证方法。允许的值是


 - minisig -- 使用 (base64) Ed25519 公钥使用 app-crypt/minisign 验证签名
 - openpgp -- 使用 app-crypt/gnupg 验证 PGP 签名(默认值)
 - sigstore -- 使用 dev-python/sigstore 验证签名
 - signify -- 使用 Ed25519 公钥使用 app-crypt/signify 验证签名

VERIFY_SIG_OPENPGP_KEY_PATH
用于执行验证的密钥捆绑包的路径。这在使用默认的 src_unpack 时是必需的。或者,密钥路径可以直接传递给验证函数。

BROOT 的值将自动添加到此路径的前面。

此变量也用于非 OpenPGP 签名。名称包含 "OPENPGP" 是出于历史原因。它不用于 sigstore,因为它使用单个受信任的根。

VERIFY_SIG_CERT_IDENTITY
传递给 sigstore 调用的 --cert-identity。
VERIFY_SIG_CERT_OIDC_ISSUER
传递给 sigstore 调用的 --cert-oidc-issuer。
VERIFY_SIG_OPENPGP_KEYSERVER
用于刷新密钥的密钥服务器。如果未指定,将使用密钥中的密钥服务器首选项。如果密钥未指定首选项,将使用 GnuPG 默认值。

仅支持 OpenPGP。

VERIFY_SIG_OPENPGP_KEY_REFRESH ?= no (用户变量)
尝试通过 WKD/密钥服务器刷新密钥。在 make.conf 中将其设置为 "yes" 以启用。请注意,这需要有效的互联网连接。

支持 OpenPGP 和 sigstore。

维护者

Michał Górny <[email protected]>

报告 Bug

请通过 https://bugs.gentoo.org/ 报告 Bug

文件

verify-sig.eclass

另请参见

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/verify-sig.eclass


索引

名称
描述
支持的 EAPIS
示例
函数
Eclass 变量
维护者
报告 Bug
文件
另请参见

此文档由 man2html 使用手册页创建。
时间: 2024 年 11 月 12 日,格林威治标准时间 03:27:00