Невозможно импортировать ключ pgp с помощью gnupg - PullRequest
1 голос
/ 15 января 2020

Я пытаюсь импортировать ключ publi c, предоставленный мне в python, но по какой-то причине в коде всегда написано "нет отпечатка пальца" для этого ключа. Я смог использовать тот же код для импорта другого ключа publi c gpg. Единственное отличие состоит в том, что тот, который я смог импортировать, выглядит нормально при открытии в текстовом файле

-----BEGIN PGP MESSAGE-----
hQIMA4KP8a3P3lh+ARAArIKl7NQQ2nwLrbScEXB4YwHK8PaBU/zvcO4flo9XHfhj
... 
-----END PGP MESSAGE-----

, тогда как другой выглядит как набор перемешанных символов. фрагмент перемешанного файла

Вот код python, который я использую для импорта

import boto3
import os
import gnupg
from pprint import pprint


gpg = gnupg.GPG()
#commented out part where i pull file from s3 to /tmp/Public_key.txt

public_keys = gpg.list_keys()
private_keys = gpg.list_keys(True)
print ('public keys:')
pprint(public_keys)
print ('private keys:')
pprint(private_keys)


# import
key_data = open('/tmp/Public_Key.txt').read()

import_result = gpg.import_keys(key_data)

for k in import_result.results:
    print("printing import results public key")
    print(k)

То, что я пробовал: чтение файла в двоичном виде вместо этого, который также не работал

with open('/tmp/Public_Key.txt', mode='rb') as file: # b is important -> binary
    key_data = file.read()

Еще одна вещь, которую нужно отметить, ключ может быть легко импортирован, когда я использую CLI из моего терминала, используя

gpg --import Public_Key.txt

Так же, потому что мне нужно сначала преобразовать его в строку, которая все испортила?

Результат попытки импорта в python равен

{'fingerprint': None, 'status': 'No valid data found'}
...