gnupg 签名使用

nix-shell -p pinentry
gpg --full-generate-key --pinentry-mode=loopback
# 输入密码

# gpg: /home/jcleng/.gnupg/trustdb.gpg: 建立了信任度数据库
# gpg: 目录'/home/jcleng/.gnupg/openpgp-revocs.d'已创建
# gpg: 吊销证书已被存储为'/home/jcleng/.gnupg/openpgp-revocs.d/C269601F607FCEE7C3DBA7FC60B2AD5B6A7040F4.rev'
# 公钥和私钥已经生成并被签名。

# pub   rsa3072 2023-05-12 [SC]
#       C269601F607FCEE7C3DBA7FC60B2AD5B6A7040F4
# uid                      jcleng (for flatpak prv) <[email protected]>
# sub   rsa3072 2023-05-12 [E]
ls ~/.gnupg/

# 输入密码并导出PRIVATE KEY私钥
gpg --export-secret-key --pinentry-mode=loopback -a "jcleng" > secret.key
# 导出PUBLIC KEY公钥
gpg --armor --export "jcleng" > public.key
# 导出公钥为public.gpg文件
gpg --output public.gpg --export "jcleng"

配置flathub自建仓库: https://docs.flatpak.org/zh_CN/latest/hosting-a-repository.html?highlight=%E4%BB%93%E5%BA%93

.flatpakrepo 文件

[Flatpak Repo]
[Flatpak Repo]
Title=Flathub
Url=自己的repo地址,重要
Homepage=主页地址
Comment=简介
Description=说明
Icon=https://dl.flathub.org/repo/logo.svg
GPGKey=用base64-encoded GPG密钥公钥
# 把公钥base64编码,用作 GPGKey
base64 --wrap=0 < public.key
  • 往Flatpak仓库中的每一次提交都需要使用GPG签名

flatpak-builder --gpg-sign=<key> --repo=<repository> <manifest>
# --gpg-sign是使用的GPG秘钥的ID。也可以使用 --gpg-homedir 指定使用的秘钥的家目录
# 输入密码,导入是私钥
gpg --pinentry-mode=loopback --import secret.key
# 查看ID,40位
gpg --list-keys

# 重新指定pinentry文件位置并重新进行守护进程
pkill gpg-agent
gpg-agent --pinentry-program=/nix/store/cimiy8spnpfjv14c7pf3qr7s0lp80vrg-pinentry-1.2.1/bin/pinentry --daemon

# 输入密码并打包
flatpak-builder --gpg-sign=ED63B5F25131466DEE0BE01DD4A3D993A99869B1  --repo=jclenghub --force-clean build-dir wine6soft.json