#artifact #download #url #sha #hash #file #signatures

bin+lib artc

一个用于下载工件并验证 sha 散列和 pgp 签名的程序

2 个版本

使用旧的 Rust 2015

0.1.1 2018年9月27日
0.1.0 2018年9月10日

#1178 in 密码学

Apache-2.0LGPL-2.1

34KB
618

工件配置

一个用于下载工件和验证 sha 散列和 pgp 签名的程序。

下载工件

要开始构建过程,您需要创建一个输入文件,例如 urls.txt。

https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom
https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar
https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom
https://maven.google.com/com/android/tools/repository/26.0.1/repository-26.0.1.pom
https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar

然后运行以下命令

artc download --input urls.txt

这将生成目标目录下的文件:./target/artc

asc.tsv 文件包含主要工件的指纹和 URL

3872ED7D5904493D23D78FA2C4C8CB73B1435348 	 https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom
694621A7227D8D5289699830ABE9F3126BB741C1 	 https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar
694621A7227D8D5289699830ABE9F3126BB741C1 	 https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom

keys 目录包含用于验证签名的任何下载的密钥

-rw-r--r-- 1 shane shane  2020 Sep  7 23:11 0374CF2E8DD1BDFD
-rw-r--r-- 1 shane shane  1700 Sep  7 23:08 0DA8A5EC02D11EAD
-rw-r--r-- 1 shane shane  3136 Sep  7 23:04 16AE34E5C9C3E2BB
-rw-r--r-- 1 shane shane 12289 Sep  7 23:09 205C8673DC742C7C

最后,pubring.kbx 文件是包含导入的密钥的密钥库。

sha.tsv 文件包含 sha256,后面跟着一个 gen/ver 字段值。

c3c99bf58182889fe86315e9a01473ee2c95540b9dedef898cec64554d925c54 	 gen 	 https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom
1158e94c7de4da480873f0b4ab4a1da14c0d23d4b1902cc94a58a6f0f9ab579e 	 ver 	 https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar
bfadb3b40f65dd6de1666d6b29f8bb54031396c76eeef4146cf9f28255f8bf33 	 ver 	 https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom
a20fb26c8de5b0ff7a3069e681fcf01ebefd2f3d24b832c3af22d981d7d4376b 	 gen 	 https://maven.google.com/com/android/tools/repository/26.0.1/repository-26.0.1.pom
7e8bdca281bdcb6dad48a80854837f1c0ab46f31a0b292370e320f471f5b9cfd 	 gen 	 https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar

gen 值表示 sha256 是由构建生成的。没有关联的 ${url}.sha2 文件可供下载和验证。

例如,此 URL 不存在,因此其字段值为 gen

https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar.sha2

ver 字段值表示 ${url}.sha2 文件存在,构建已将主工件的 sha256 与此值进行验证。

RBM

此命令生成 Tor RBM 配置文件。

artc rbm --keyring android.gpg

keyring 选项指定您将用于下载的工件的密钥圈名称。例如,如果您指定密钥圈为 android.gpg,则 pubring.kbx 文件将重命名为 android.gpg

rbm/config 文件中可以发现以下条目。请注意,如果 sha 未经过验证,配置中有一个注释。如果 asc 文件无法使用,则构建将仅使用 sha256。

    #Sha not verified from original source
  - URL:  https://maven.google.com/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.jar
    sha256Sum: 7e8bdca281bdcb6dad48a80854837f1c0ab46f31a0b292370e320f471f5b9cfd 
  - URL:  https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.jar
    sig_ext: asc
    file_gpg_id: 694621A7227D8D5289699830ABE9F3126BB741C1 
    gpg_keyring: android.gpg
  - URL:  https://jcenter.bintray.com/com/google/guava/guava/22.0/guava-22.0.pom
    sig_ext: asc
    file_gpg_id: 694621A7227D8D5289699830ABE9F3126BB741C1 
    gpg_keyring: android.gpg
  - URL:  https://jcenter.bintray.com/com/android/tools/annotations/24.5.0/annotations-24.5.0.pom
    sig_ext: asc
    file_gpg_id: 3872ED7D5904493D23D78FA2C4C8CB73B1435348 
    gpg_keyring: android.gpg
    #Sha not verified from original source
  - URL:  https://maven.google.com/com/android/tools/repository/26.0.1/repository-26.0.1.pom
    sha256Sum: a20fb26c8de5b0ff7a3069e681fcf01ebefd2f3d24b832c3af22d981d7d4376b 

由于 RBM 使用扁平目录结构进行下载,因此还生成一个脚本来将工件放置在 Maven 仓库结构中。它位于 rbm/create_maven_repo.sh

# TODO: Set $M2_REPO to location of maven repository
mkdir -p $M2_REPO/com/android/tools/sdk-common/26.0.1 && cp "sdk-common-26.0.1.jar" "$_"
mkdir -p $M2_REPO/com/google/guava/guava/22.0 && cp "guava-22.0.jar" "$_"
mkdir -p $M2_REPO/com/google/guava/guava/22.0 && cp "guava-22.0.pom" "$_"
mkdir -p $M2_REPO/com/android/tools/annotations/24.5.0 && cp "annotations-24.5.0.pom" "$_"
mkdir -p $M2_REPO/com/android/tools/repository/26.0.1 && cp "repository-26.0.1.pom" "$_"

打包

作为生成 RBM 文件的替代方案,您可以将工件打包成 Maven 仓库格式。

artc package

这将从 artifacts 目录复制工件到 m2 目录,然后将 m2 目录存档为 maven-repo.tar.gz

它输出用于 RBM 配置(或其他构建)的哈希值。

请注意,对于 RBM 构建,此存档需要上传到某个位置。然后需要将存档的 URL 添加到配置文件中。

  - URL:  https://example.com/repo/maven-repo.tar.gz
    sha256Sum: a20fb26c8de5b0ff7a3069e681fcf01ebefd2f3d24b832c3af22d981d7d4376b 

附加信息

可重复构建管理器 - https://rbm.torproject.org/

依赖项

~18–29MB
~518K SLoC