使用 gpgme 更改密钥信任级别(有效性)
changing key trust level (validity) with gpgme
GPGME provides information about a key's trust level as the owner_trust
field which is of gpgme_validity_t
type。但是,我无法在文档或 gpgme.h
头文件中找到允许我 更改 密钥有效性的函数。
GnuPG 命令行工具确实允许更改密钥的信任级别:
$ gpg --edit-key alice@example.com
> trust
GPGME 库甚至支持更改 owner_trust
字段吗?如果可以,我该如何使用它?
我正在使用最新版本的 GPGME 1.16.0
(提交哈希值 1021c8645555502d914afffaa3707609809c9459
)。
应该可以使用 gpgme_op_interact
来完成这个。
下面演示了使用 Python 绑定的过程,但是使用 C API.
应该可以编写类似的代码
import gpg
def trust_at(level):
done = False
def interact_cb(status, arg):
nonlocal done
if status in ('KEY_CONSIDERED', 'GOT_IT', ''):
return
if status == 'GET_LINE':
if arg == 'keyedit.prompt':
if done:
return 'quit'
done = True
return 'trust'
if arg == 'edit_ownertrust.value':
return level
# needed if we set trust level to 5
if (status, arg) == ('GET_BOOL', 'edit_ownertrust.set_ultimate.okay'):
return 'y'
assert False
return interact_cb
with gpg.Context() as gnupg:
key = gnupg.get_key(FINGERPRINT)
gnupg.interact(key, trust_at('4'))
GPGME provides information about a key's trust level as the owner_trust
field which is of gpgme_validity_t
type。但是,我无法在文档或 gpgme.h
头文件中找到允许我 更改 密钥有效性的函数。
GnuPG 命令行工具确实允许更改密钥的信任级别:
$ gpg --edit-key alice@example.com
> trust
GPGME 库甚至支持更改 owner_trust
字段吗?如果可以,我该如何使用它?
我正在使用最新版本的 GPGME 1.16.0
(提交哈希值 1021c8645555502d914afffaa3707609809c9459
)。
应该可以使用 gpgme_op_interact
来完成这个。
下面演示了使用 Python 绑定的过程,但是使用 C API.
应该可以编写类似的代码import gpg
def trust_at(level):
done = False
def interact_cb(status, arg):
nonlocal done
if status in ('KEY_CONSIDERED', 'GOT_IT', ''):
return
if status == 'GET_LINE':
if arg == 'keyedit.prompt':
if done:
return 'quit'
done = True
return 'trust'
if arg == 'edit_ownertrust.value':
return level
# needed if we set trust level to 5
if (status, arg) == ('GET_BOOL', 'edit_ownertrust.set_ultimate.okay'):
return 'y'
assert False
return interact_cb
with gpg.Context() as gnupg:
key = gnupg.get_key(FINGERPRINT)
gnupg.interact(key, trust_at('4'))