跳转到主要内容

GNUPG Shell

项目描述

概述

gpgkeys 是一个Python程序,允许您从命令行方便地管理GnuPG密钥和密钥环。它以Shell的形式提供,命令类似于GnuPG CLI命令及其选项。其主要功能是端到端自动补全。

gpgkeys 还作为 kmdrl Python 库的开发测试平台。

动机

GNUPG CLI非常强大 - 而强大的力量伴随着难以理解。

gpgkeys 通过以下方式使密钥管理变得简单:

  1. 提供一组合理的GnuPG命令,

  2. 并使用自动补全来简化输入过程并引导用户完成密钥管理任务。

示例会话

gpgkeys 中的所有内容都可以自动补全:命令、帮助主题、选项标志、密钥ID、用户名、文件名、Shell命令和密钥服务器URL。

$ gpgkeys
gpgkeys 2.2 (type help for help)

gpgkeys> help

Available commands (type help <topic>):
=======================================
checksig  dump    fdump   genrevoke  list     quit     search  sign
clear     edit    fetch   help       listsig  recv     send    version
del       export  genkey  import     lsign    refresh  shell

Shortcut commands (type help <topic>):
======================================
!  .  ?  e  ll  ls

gpgkeys> help export
Usage: export <keyspec>
Options: --armor --clean --minimal --output --secret

Export keys to stdout or to a file

gpgkeys> ls Stefan
pub   1024R/E1F438AD 1995-10-03
uid                  Stefan H. Holek (RSA) <stefan@epy.co.at>

pub   1024D/355A2D28 2001-11-04
uid                  Stefan H. Holek <stefan@epy.co.at>
sub   2048g/A27E0DBC 2004-10-27

gpgkeys> export --armor 355A2D28 > stefan.asc
gpgkeys> .ls
alice.asc             stefan.asc

功能

命令行上选项和参数的顺序并不重要

gpgkeys> export 355A2D28 --armor > stefan.asc

以“.”或“!”开头的命令行由shell执行。您可以使用cd来更改当前目录,使用umask来更改umask,当然还有其他所有内容。

gpgkeys> .cd subdir/
gpgkeys> .pwd
/home/stefan/subdir

您可以使用输入/输出重定向和管道。

gpgkeys> export 355A2D28 | pgpdump | less

要查看发送给GnuPG的命令,请使用带有-v选项的gpgkeys。

$ gpgkeys -v
gpgkeys 2.2 (type help for help)

gpgkeys> ls 355A2D28
gpgkeys: gpg --list-keys 355A2D28
pub   1024D/355A2D28 2001-11-04
uid                  Stefan H. Holek <stefan@epy.co.at>
sub   2048g/A27E0DBC 2004-10-27

要了解有关GnuPG命令的所有信息,请输入

gpgkeys> .man gpg

gpgkeys可以用参数调用,在这种情况下,它不会进入命令循环。

$ gpgkeys export --armor 355A2D28 > stefan.asc

密钥服务器

为了使send、recv、search和refresh命令生效,至少应在gpg.conf中配置一个密钥服务器。例如

keyserver ldap://keyserver.pgp.com
keyserver hkps://hkps.pool.sks-keyservers.net

gpg.conf中的最后一个密钥服务器成为默认密钥服务器。所有密钥服务器在--keyserver选项后都可用于自动完成。

Unicode

OpenPGP允许用户ID使用Latin-1或UTF-8编码。要查找非ASCII ID的密钥,GnuPG需要将搜索字符串正确编码。

gpgkeys的密钥自动完成功能会跟踪原始编码,并且每次您使用Tab键自动完成名称时,都会自动以GnuPG期望的方式编码。有时您可能会在命令行上看到代替非ASCII字符的“?”字符,这是上述情况的结果,无需担心。

开发

gpgkeys的开发托管在GitHub上。它还有一个问题跟踪器

安装

安装需要Python 2.7或更高版本。

注意:gpgkeys使用rl库,该库包含一个C扩展。建议您查看其安装说明并确保所有依赖项都已就绪。

要安装gpgkeys脚本,请输入

pip install gpgkeys

然后将其放在您的系统PATH中,例如通过将其符号链接到/usr/local/bin

要求

系统PATH中必须可用gpg2命令或gpg命令。

变更日志

2.2 - 2022-11-17

  • 升级到rl 3.1和kmd 2.4。[stefan]

  • 在tox.ini中替换已废弃的python setup.py test。[stefan]

  • 从setup.py中删除已废弃的test_suite。[stefan]

  • 添加一个pyproject.toml文件。[stefan]

  • 在sdist中包含测试,但在wheel中不包含。[stefan]

2.1 - 2019-03-20

  • 修复导入错误。[stefan]

2.0 - 2019-03-20

  • 首先尝试gpg2二进制文件,如果找不到,则回退到gpg。[stefan]

  • 始终将--fixed-list-mode添加到--with-colons。[stefan]

  • 添加--ask-cert-level选项。[stefan]

  • 停止使用2to3。[stefan]

  • 修复文档错误:send命令仅接受密钥ID。[stefan]

  • 修复在sign和lsign命令中的换行符问题。[stefan]

1.23 - 2012-10-07

  • 改进代码,以利于2to3。[stefan]

  • 重写Unicode支持。[stefan]

  • 升级到rl 2.4以支持Python 3.3。[stefan]

1.22 - 2012-06-24

  • --keyserver选项现在将覆盖为密钥配置的任何首选密钥服务器。[stefan]

1.21 - 2012-05-10

  • 修复详细输出。[stefan]

  • 切换到一个更令人愉悦的Sphinx主题。[stefan]

  • 当gpgkeys用参数调用时,不尊重字符串和文件名引号。通过要求kmd >= 2.2修复。[stefan]

1.20 - 2012-04-27

  • 在执行子进程之前保存tty状态,之后恢复。[stefan]

  • 支持Python 2.5。[stefan]

  • 要求term >= 2.0。[stefan]

1.19 - 2012-04-14

  • 在帮助屏幕中包含命令别名。[stefan]

  • 当gpgkeys用参数调用时,返回有用的退出代码。[stefan]

  • 修复在用^D退出编辑菜单时的“双重提示”问题。[stefan]

  • 现在,import和fdump命令支持通过“<”进行输入重定向。[stefan]

1.18 - 2011-11-05

  • 在Python 3中,确保输入函数接受代理。也请参阅Python 问题13342。[stefan]

  • 当找不到gpg.conf文件时,密钥服务器完成功能损坏。[stefan]

  • 导入命令在从stdin读取时忽略了选项标志。[stefan]

  • 添加基于Sphinx的漂亮文档。[stefan]

  • 要求kmd >= 2.1。[stefan]

1.17 - 2011-10-06

  • 使用新的别名字典来设置命令别名。[stefan]

  • 确保错误消息输出到stderr。[stefan]

  • 当分页应用程序在前台时忽略信号。[stefan]

  • 要求kmd >= 2.0。[stefan]

1.16.1 - 2011-07-25

  • 修复1.16版本中静默损坏的历史文件处理。[stefan]

1.16 - 2011-07-14

  • 使用kmd.Kmd而不是cmd.Cmd作为基类。[stefan]

  • 仅通过kmd依赖项依赖rl。[stefan]

1.15 - 2011-05-05

  • 要求rl >= 1.14。[stefan]

1.14 - 2011-03-24

  • 将“!”和“.”添加到快捷命令中,以便在帮助中显示。[stefan]

  • 为了支持较快的字节字符串操作,在后续Python版本中放弃对Python 2.5的支持。[stefan]

1.13 - 2011-03-11

  • 要求rl >= 1.13。[stefan]

1.12 - 2010-05-21

  • 当缺少必需的命令参数时打印帮助。[stefan]

  • 要求rl >= 1.11。[stefan]

1.11 - 2010-05-07

  • 更改导入语句,以便2to3能够解决它。[stefan]

1.10 - 2010-05-05

  • 重构完成:将通用部分提取到基类中。[stefan]

  • 要求rl >= 1.10。[stefan]

1.9 - 2010-03-07

  • 将del命令的–all选项重命名为–secret-and-public。[stefan]

  • 要求rl >= 1.6。[stefan]

1.8.2 - 2010-03-01

  • 修复在Linux上Python 3下失败的测试。[stefan]

1.8.1 - 2010-02-25

  • 恢复Python 2.5兼容性。唉。[stefan]

1.8 - 2010-02-25

  • 通过distribute支持Python 3。[stefan]

  • –fingerprint选项可以多次给出。[stefan]

1.7.1 - 2010-02-13

  • 显式依赖rl >= 1.4.1,以便setuptools不会忘记升级它。[stefan]

1.7 - 2010-02-13

  • 将许可证更改为GPL。[stefan]

1.6 - 2010-01-31

  • 将–clean和–minimal导入/导出选项添加到相应命令。[stefan]

  • 修复密钥服务器命令的–merge-only导入选项。[stefan]

  • 再次删除–yes选项,因为它没有明显的影响。[stefan]

1.5 - 2010-01-26

  • 从导入命令中删除过时的–secret选项。[stefan]

  • 用户ID完成现在由任何类型的引号触发。[stefan]

  • 允许在参数之后指定命令行选项。[stefan]

1.4 - 2010-01-20

  • 扩展引号和解引号API,使其更易于(重)使用。[stefan]

  • 当默认引号字符为单引号时,解引号不正确。[stefan]

  • 引号中的波浪号可能导致引号关闭,即使波浪号展开的名称匹配目录。[stefan]

1.3 - 2010-01-03

  • 减少文件名完成的架构冗余。个别策略非常小。[stefan]

  • 删除日志记录,因为它使代码杂乱。[stefan]

  • 将示例会话添加到README中。[stefan]

1.2 - 2009-11-24

  • 扩展keyid完成,以便也完成用户ID和名称。[stefan]

  • 将文件名完成功能提取到函数中,因为它在其他地方也很有用。[stefan]

1.1 - 2009-11-16

  • 允许在命令行上指定文件名引号样式,以简化实验。[stefan]

  • 文件名完成:通过早期解引号,我们可以跳过一个有问题的钩子并重新获得对波浪号展开的控制。另请参阅rl 问题/3。[stefan]

1.0 - 2009-11-08

  • 初始发布。

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

gpgkeys-2.2.tar.gz (40.5 kB 查看哈希值)

上传时间 源代码

构建分发

gpgkeys-2.2-py2.py3-none-any.whl (31.7 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者