Отпечаток gnupg не идентифицирован как действительный получатель для шифрования

Отпечаток ключа gnupg не идентифицирован как допустимый получатель для шифрования. Согласно этому документу https://pythonhosted.org/python-gnupg/#encryption мы можем использовать отпечаток пальца. Но это не работает.

      >>> import gnupg
>>> gpg = gnupg.GPG(gnupghome="/home/user/.gnupg")
>>> key_data = open('/home/user/path/to/public_key.pgp').read()
>>> import_result = gpg.import_keys(key_data)
>>> test_status = gpg.encrypt('test', import_result.fingerprints[0])
>>> test_status.status
'invalid recipient'
>>> 

1 ответ

Если бы вы попытались выполнить тот же процесс из командной строки, вы бы увидели следующую ошибку при попытке зашифровать сообщение получателю ( gpg -ea -r <fingerprint>):

      It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N)

Необходимо «доверить» ключу, прежде чем вы сможете использовать его в качестве получателя. Вы можете сделать это с помощью trust_keysметод:

      >>> import_result = gpg.import_keys(key_data)
>>> gpg.trust_keys(import_result.fingerprints[0], 'TRUST_ULTIMATE')
<gnupg.TrustResult object at 0x7f2ab0b22e30>
>>> test_status = gpg.encrypt('test', import_result.fingerprints[0])
>>> test_status.status
'encryption ok'

В качестве альтернативы вы можете установить параметр:

      >>> import_result = gpg.import_keys(key_data)
>>> test_status = gpg.encrypt('test', import_result.fingerprints[0], always_trust=True)
>>> test_status.status
'encryption ok'

В always_trustВариант описан в документации .

Другие вопросы по тегам