gpt4 book ai didi

GitHub API OpenPGP key 格式

转载 作者:行者123 更新时间:2023-12-02 06:58:39 26 4
gpt4 key购买 nike

GitHub REST API v3 for GPG Keys 返回的 public_key 字段的格式是什么? ?

例如,命令curl -v -H "Accept: application/vnd.github.cryptographer-preview"https://api.github.com/users/DurandA/gpg_keys 返回以下按键:

pub   dsa2048/403094DF 2017-09-03 [SC] [expires: 2018-09-03]
uid [ultimate] Arnaud Durand <arnaud.durand@unifr.ch>
sub elg2048/A454F414 2017-09-03 [E] [expires: 2018-09-03]

根据API doc :

The data returned in the public_key response field is not a GPG formatted key. When a user uploads a GPG key, it is parsed and the cryptographic public key is extracted and stored. This cryptographic key is what is returned by the APIs on this page. This key is not suitable to be used directly by programs like GPG.

是否可以通过 CLI 或以编程方式使用这些 key ?

最佳答案

返回的 key 是一个裸 key (RSA、DSA...),如果不再次将其“包装”在正确的 OpenPGP key 数据包中,OpenPGP 的实现就无法使用该 key 。我不建议这样做,为什么你应该能够再次构建key数据包,你将没有机会构建子 key 和用户ID的绑定(bind)签名(这需要访问私钥)并且不会成功并为此构建一些有用的东西。

在社区中共享 key 的“OpenPGP 模型”是从 key 服务器网络获取当前副本(包括所有当前的认证和撤销),而不是依赖于 GitHub 等“第三方位置”中可能过时的版本。这可以通过指纹和 key ID(或多或少唯一,见下文)寻址特定 key 来实现 - 不搜索邮件地址,每个人都可以使用任意用户 ID 创建 key ,并且 key 服务器不执行任何 验证。

相反,再看看 API 输出,它返回 keyid所有键的对象(一些用于子键):

[
{
"id": 3,
"primary_key_id": null,
"key_id": "3262EFF25BA0D270",
"public_key": "xsBNBFayYZ...",
"emails": [
{
"email": "mastahyeti@users.noreply.github.com",
"verified": true
}
],
[snip]
}
]

要使用此类 key ID,请运行 gpg --recv-keys <key-id> 。并在 GitHub 上留言以遵循最佳实践并包含完整的指纹:

这些 64 位十六进制值(本例中为 3262EFF25BA0D270)是长 key ID。虽然任何对键的编程引用应该 always include the key's fingerprint, not abbreviated key IDs ,至少他们不提供short key IDs that heavily suffer under collision attacks .

关于GitHub API OpenPGP key 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com