【问题标题】:Deleting keys using python-gnupg使用 python-gnupg 删除密钥
【发布时间】:2015-09-07 09:00:01
【问题描述】:

这是我的工作流程的快速测试案例:

from tempfile import gettempdir
from os import path
from shutil import rmtree

from gnupg import GPG

gnupghome = path.join(gettempdir(), 'foo')
gpg = GPG(gnupghome=gnupghome)
gpg.encoding = 'utf-8'


def raise_f(error):
    raise error


assert_equal = lambda first, second: first == second or raise_f(
    AssertionError('Expected {first!r} to be {second!r}'.format(
        first=first, second=second)
    )
)

try:
    assert_equal(len(gpg.list_keys()), 0)
    key = gpg.gen_key(
        gpg.gen_key_input(key_type='RSA', key_length=2048, name_real=u'foo')
    )
    assert gpg.export_keys(key.fingerprint).startswith(
        '-----BEGIN PGP PUBLIC KEY BLOCK-----'
    )
    assert_equal(len(gpg.list_keys()), 1)
    assert_equal(
        gpg.delete_keys(fingerprints=key.fingerprint, secret=True).status, 'ok')
    assert_equal(len(gpg.list_keys()), 0)
finally:
    rmtree(gnupghome)

最后的assert_equal(len(gpg.list_keys()), 0) 引发AssertionError

我做错了什么?

【问题讨论】:

  • @larsks 最后的assert_equal(len(gpg.list_keys()), 0) 引发了AssertionError

标签: python gnupg


【解决方案1】:

您正在删除密钥(您正在使用secret=True 调用delete_keys),但您正在检查公共 密钥列表。考虑:

assert_equal(len(gpg.list_keys(secret=True)), 1)
assert_equal(gpg.delete_keys(fingerprints=key.fingerprint,
                             secret=True).status, 'ok')
assert_equal(len(gpg.list_keys(secret=True)), 0)

这不会产生错误。

【讨论】:

  • 谢谢,你是对的。解决方案是将这一行添加到最后一个 assert_equal: assert_equal(gpg.delete_keys(fingerprints=key.fingerprint).status, 'ok') 之上
猜你喜欢
  • 1970-01-01
  • 2014-05-21
  • 2021-08-14
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多