【发布时间】:2021-03-14 13:04:30
【问题描述】:
为了加密和签署消息,我想使用 python-gnupgp 模块。该模块是 gnupgp 的包装器。 加密工作正常,但如果我指定签名选项,我会收到错误。
gpg: WARNING: unsafe permissions on homedir '/home//Programming/GnuPGP/pgphome'\ngpg: Warning: not using 'xxx' as default key: No secret key\ngpg: 所有值都传递给'--default -key' 被忽略\n[GNUPG:] KEY_CONSIDERED xxx 0\n[GNUPG:] KEY_CONSIDERED AADFCABF9D6B54C7938195737DC2E276767872B0 0\ngpg: 没有默认密钥:没有密钥\n[GNUPG:] INV_SGNR 9\n[GNUPG:] FAILURE sign-加密 17\ngpg: [stdin]: 签名+加密失败:没有密钥\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')
我在这里做错了什么?
【问题讨论】:
标签: pgp openpgp python-gnupgp