Я могу запросить открытый ключ сервера и использовать этот ключ для зашифруйте мой запрос через библиотеку PGPy, и сервер сможет его расшифровать и ответить.
Зашифрованный запрос сценария содержит открытый ключ, который сервер ожидает как часть это API, поэтому он берет этот ключ, шифрует ответ и отправляет его обратно в мой скрипт. Мой сценарий нормально получает этот зашифрованный ответ, но у PGPy, похоже, нет средств для его расшифровки.
Насколько я могу судить, PGPy может расшифровать только зашифрованное им сообщение, потому что PGPKey. decrypt() принимает объект PGPMessage, а не бронированную строку, и я не могу найти метод, который принимает бронированную строку и либо расшифровывает ее, либо превращает в PGPMessage, чтобы я мог расшифровать его.
Это все, что мне удалось:
Код: Выделить всё
def get_token_from_payload(encrypted_payload):
print("Payload: ", encrypted_payload)
privkey, _ = pgpy.PGPKey.from_file('private.key')
message_blob = pgpy.PGPMessage.new(encrypted_payload)
token_string = privkey.decrypt(message_blob).message
print("Token: ", token_string)
return json.load(token_string)
Наверное, я что-то упускаю. Эта библиотека по сути бесполезна, если она не может этого сделать. Как мне либо расшифровать бронированную строку, либо преобразовать бронированную строку в PGPMessage, который затем можно расшифровать?
Обновление:
Код: Выделить всё
def get_token_from_payload(encrypted_payload):
ep_file = open("ep.pgp", "w")
ep_file.write(encrypted_payload)
ep_file.close()
privkey, _ = pgpy.PGPKey.from_file('private.key')
message = pgpy.PGPMessage.from_file("ep.pgp")
token_string = privkey.decrypt(message).message
return json.loads(token_string)
Подробнее здесь: https://stackoverflow.com/questions/727 ... -isnt-from