Skip to main content

Проверка подписи

Наш сервер отправляет вам нотификации, которые содержат HTTP-заголовок x-request-signature.

x-request-signature содержит JWT-токен в формате EdDSA. Вам необходимо выполнить следующие шаги для проверки подписи:

  1. Проверить токен с использованием публичного ключа (выдается при подключении).
  2. Извлечь свойство hash из тела токена.
  3. Получить SHA256 тела запроса (в формате JSON) и перевести его в HEX.
  4. Сравнить созданный хэш с извлеченным hash из подписанного токена.

Пример функции проверки подписи на разных языках

main.js
import path from 'node:path'
import { readFileSync } from 'fs'
import { createVerifier } from 'fast-jwt'

const API_PUBLIC_KEY_PATH = path.join('keys', 'api-ed25519-public.pem')

const verifyJwt = createVerifier({
algorithms: 'EdDSA',
key: readFileSync(API_PUBLIC_KEY_PATH),
})

const verifyRequest = (token, jsonBody) => {
const decoded = verifyJwt(token)
const hashedBody = createHash('sha256').update(jsonBody).digest('hex')
const verified = hashedBody === decoded.hash
return verified
}