Создание аутентификации AWS S4 в python - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь создать подписи S4, как указано здесь , используя фрагмент кода Python.Документация сбивает меня с толку, поэтому я хотел получить некоторую ясность в следующем

1) Метод getSignatureKey подписывает 4 входа, но показанный ими вывод имеет дополнительный kSecret.Что это за kSecret?

2) Когда я запускаю программу, вывод, который я получаю, выглядит следующим образом:

kDate = '\x96\x9f\xbb\x94\xfe\xb5B\xb7\x1e\xdeo\x87\xfeM_\xa2\x9cx\x93B\xb0\xf4\x07GFp\xf0\xc2H\x9e\n\r'

, тогда как вывод согласно документации выглядит следующим образом:

kDate    = '969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d'

Какой правильный формат будет использоваться?Как получить одно из другого?

3) Похоже, что выходные значения тоже разные (если я уберу \ x).Это ошибка документации?

Я использую Python 2.7

1 Ответ

0 голосов
/ 11 мая 2018

kSecret - это шестнадцатеричное представление вашего исходного aws-access-key-secret.В некоторых других языковых примерах для этого есть промежуточная переменная.

Вывод, показанный для различных ключей, показан только для удобства:

Обратите внимание, что это шестнадцатеричные представлениядвоичные данные;сам ключ и промежуточные значения должны быть в двоичном формате.

Я не разбираюсь в Python 2, но похоже, что binascii.hexlify было бы способом выполнитьпреобразование.Просто помните, что это преобразование только для пользы ваших глаз.Фактический код использует двоичные представления промежуточных ключей.

...