В коде реализовано вычисление Signature Version 4.
Тестовые сценарии в виде архива можно скачать с Amazon по ссылке https://docs.aws.amazon.com/en_us/general/latest/gr/signature-v4-test-suite.html
Детализация шагов вычисления сигнатуры описано здесь: https://docs.aws.amazon.com/en_us/general/latest/gr/sigv4_signing.html
Код модуля обработки представлен в файле "src_DataProcessors_ТестированиеИнтеграцииСS3_Forms_Форма_Module.bsl", код общего серверного модуля в файле "src_CommonModules_ОбъектноеХранилищеИнтеграцияСервер_Module.bsl".
Точка входа для начала тестирования процедура
ТестированиеВычисленияСигнатурыПодписиНаСервере();
Тестовые сценарии задаются в серверном модуле. Сейчас их два:
//get-vanilla-query-order-key-case
//get-vanilla-query
По каждому сценарию сравнивается промежуточный результат с эталоном:
Для Каждого ТестовыйПример Из ТаблицаТестовыхПримеров Цикл
ИнициализироватьТестовуюСтруктуруДанныхДляЗапросаS3(Данные, ТестовыйПример.ИмяТеста);
СигнатураШаг1СоздатьИПодписатьКаноническийЗапрос(Данные);
СигнатураШаг2СоздатьСтрокуДляПодписи(Данные);
СигнатураШаг3СоздатьКлючПодписиИПодписатьСтроку(Данные);
СигнатураШаг4СоздатьЗаголовокАвторизации(Данные);
ТестовыйПример.Результат = Данные["CanonicalQueryStringHash"] = ТестовыйПример.CanonicalQueryStringHash;
ТестовыйПример.Результат = Данные["StringToSign"] = ТестовыйПример.StringToSign;
ТестовыйПример.Результат = Данные["Signature"] = ТестовыйПример.Signature;
ТестовыйПример.Результат = Данные["Authorization"] = ТестовыйПример.Authorization;
КонецЦикла;
В коде не реализован возврат результата тестирования. Работа с тестом проводилась в отладчике.
Код не является самодостаточным и служит только для примера для собственных проверок.
Работа проверялась на версии платформы 8.3.14.
Проверка это только часть функционала по реализации протокола AWS S3, который планирую выложить отдельной публикацией.
P.S. есть готовая библиотека "Коннектор" (//infostart.ru/public/709325/), которая dв т.ч. включает реализацию вычисления сигнатуры AWS4-HMAC-SHA256.