Page tree
Skip to end of metadata
Go to start of metadata

Создать  нормализованную  строку  запроса  для  использования  на  следующих стадиях:

  1. Отсортировать параметры по имени в utf­8, сравнивая побайтово. Параметры берутся  из  GET  URI  или  из  тела  POST­ запроса (когда  Content­Type  равен application/x­www­form­urlencoded)
  2. URL­кодировать имена и значения параметров по следующим правилам:
    • Не кодировать определённые в RFC 3986 незарезервированные символы. Эти символы: A­z, a­z, 0­9, минус (­-), подчёркивание (_), точка (.) и тильда (~).
    • Все остальные символы должны быть закодированы как %XY, где X и Y ­это шестнадцатеричные символы от 0 до 9 и от A до F (заглавные). Расширенные utf­8 символы кодируются как %XY%ZA…
    • Пробел кодируется как %20 (и не как +, как обычно делается в URL)
    • Кодированные имена параметров отделяются от кодированных значений знаком равно (=, ASCII­код 61), даже если параметр имеет пустое значение.
    • Пары имя – значение разделяются символом амперсанда (&, ASCII – код 38).
  3. Создать строку для подписи в соответствии со следующей псевдо – грамматикой (где “\n” это ASCII – символов перевода строки):
  4. Рассчитать совместимый с RFC 2104 HMAC по только что созданной строке StringToSign, используя секретный ключ партёра как ключ алгоритма, и SHA256 как способ хэширования.
  5. Сконвертировать полученную подпись в base64.
  6. Использовать результат как значение параметра check.

    Пример расчета:php
  • No labels