Openpgp:使用 python 包装器 python-gnupg 'error - sign-encrypt 17' - 仅在签名时出错

问题描述

为了加密和签署消息,我想使用 python-gnupgp 模块。该模块是 gnupgp 的包装器。 加密工作正常,但如果我指定签名选项,我会收到错误消息。

gpg: 警告: homedir '/home//Programming/GnuPGP/pgphome' 上的权限不安全\ngpg: 警告: 不使用 'xxx' 作为默认密钥: 无密钥\ngpg: 所有值都传递给 '--default -key' 忽略\n[GNUPG:] KEY_CONSIDERED xxx 0\n[GNUPG:] KEY_CONSIDERED AADFCABF9D6B54C7938195737DC2E276767872B0 0\ngpg: 无默认密钥:无密钥\n[GNUPGURE:] INV_CONSIDERED AADFCABF9D6B54C7938195737DC2E276767872B0 encrypt 17\ngpg: [stdin]: sign+encrypt failed: No secret key\n"

但我已经导入了一个秘密密钥并想使用 other_public.asc 进行加密并使用我自己的私有密钥进行签名。

我使用模块 python-openpgp。这是我的代码:

import gnupg
import os 


pgp_home = os.path.join(os.getcwd(),'pgphome')
gpg = gnupg.GPG(gnupghome=pgp_home)

cwd = os.getcwd()

own_priv_key_path = os.path.join(cwd,'assets/keys/own_secret.asc')
own_priv_key_data = open(own_priv_key_path).read()
own_priv_key = gpg.import_keys(own_priv_key_data,passphrase="hellomatthias1")

own_public_key_path = os.path.join(cwd,'assets/keys/own_public.asc')
own_public_key_data = open(own_public_key_path).read()
own_public_key = gpg.import_keys(own_public_key_data)

other_public_key_path = os.path.join(cwd,'assets/keys/other_pub.asc')
other_public_key_data = open(other_public_key_path).read()
other_public_key = gpg.import_keys(other_public_key_data)


gpg.trust_keys(own_public_key.fingerprints,trustlevel="TRUST_ULTIMATE")
gpg.trust_keys(own_priv_key.fingerprints,trustlevel="TRUST_ULTIMATE")
gpg.trust_keys(other_public_key.fingerprints,trustlevel="TRUST_ULTIMATE")

dummy_file_path = os.path.join(cwd,'assets/dummyfiles/hello.txt')
output_file_path = os.path.join(cwd,'assets/dummyfiles/encrypted_hello.txt')


res = gpg.encrypt("hello how are you",recipients=other_public_key.fingerprints[0],sign=own_priv_key.fingerprints[0],passphrase='passphraseofownprivatekey1')

我在这里做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)