生成主密钥

1
gpg --expert --full-gen-key

选择 (11) ECC (set your own capabilities)(S) Toggle the sign capability ,让主密钥仅有签名功能

生成三个子密钥

获取主密钥指纹

gpg --fingerprint --keyid-format long -K

使用quick-add-key参数快速添加子密钥

1
2
3
gpg --quick-add-key <fingerprint> cv25519 encr
gpg --quick-add-key <fingerprint> ed25519 auth
gpg --quick-add-key <fingerprint> ed25519 sign

如需设定密钥有效期,可在命令行最后加入时间,去1y

备份密钥

导出公钥

1
gpg -ao public-key.pub --export <key id>

导出私钥

1
2
3
4
gpg -ao sec-key.asc --export-secret-key <key id>!
gpg -ao sign-key.asc --export-secret-key <key id>!
gpg -ao auth-key.asc --export-secret-key <key id>!
gpg -ao encr-key.asc --export-secret-key <key id>!

不同的表示不同的子密钥
!表示仅导出一个私钥,否则将导出所有私钥

导入Canokey

  1. 查看智能卡设备状态
    1
    gpg --card-status
  2. 写入子密钥
    1
    gpg --edit-key <key id>
  3. 选中第一个子密钥
    1
    key 1
  4. 写入到智能卡
    1
    keytocard
  5. 取消选择
    1
    key 1
  6. 保存修改并退出
    1
    save
  7. 再次查看设备状态
    1
    gpg --card-status
    此时子密钥前的标识改为ssb>表示私钥已经不在本地

删除本地私钥

1
gpg --delete-secret-keys <key id>