Задать вопрос
@karpo518

Как на сервере проверить подлинность публичного ключа VAPID?

Скрипт js на стороне клиента хранит VAPID public key в виде строки, но отправляет его на сервере, пропустив через функцию urlBase64ToUint8Array
Функция urlBase64ToUint8Array
function urlBase64ToUint8Array(base64String) {
    const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
    const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');

    const rawData = window.atob(base64);
    const outputArray = new Uint8Array(rawData.length);

    for (let i = 0; i < rawData.length; ++i) {
      outputArray[i] = rawData.charCodeAt(i);
    }
    return outputArray;
  }

Непонятно, как сопоставить на сервере ключ из настроек и ключ, полученный в запросе. Сами ключи создаются с помощью php-скрипта https://github.com/web-push-libs/web-push-php/blob...
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Средний Комментировать
Решение пользователя Daria Motorina К ответам на вопрос (1)
glaphire
@glaphire Куратор тега PHP
PHP developer
Функция urlBase64ToUint8Array() высылает зашифрованные ключи на сторонний сервер (от имени которого будут лететь уведомления в браузер пользователя), а не на ваш сервер (код демки автора этого пакета), вам нужно получать эти ключи сырыми на бекенде самому (по-сути - читать из файла). Вам не нужно самому преобразовывать ключи на бекенде, это решается на уровне вендорного кода.
Ответ написан