Как расшифровать уведомление Mastodon Web Push в PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Гость
 Как расшифровать уведомление Mastodon Web Push в PHP

Сообщение Гость »


Я создаю прослушиватель уведомлений PHP Web Push для Mastodon. Я успешно создал подписку, отправив следующие данные публикации на URL-адрес API подписки Mastodon:

$post_data = массив( "подписка" => массив( "endpoint" => $env["endpoint"], // URL конечной точки, где находится PHP-скрипт "ключи" => массив( "p256dh" => $env["vapid_public"], // Открытый ключ "auth" => $env["vapid_private"] // Закрытый ключ ) ), "данные" => массив( "оповещения" => массив( "mention" => true // получать уведомления об упоминаниях ) ) ); Когда я упоминаю или отправляю личное сообщение учетной записи, для которой настроена подписка, сценарий PHP получает запрос POST с уведомлением Web Push. Полезная нагрузка уведомления извлекается с помощью file_get_contents("php://input"). Это двоичные данные.

Мой вопрос теперь заключается в том, как мне расшифровать эти двоичные данные. Я попытался сначала преобразовать полезную нагрузку в шестнадцатеричный формат, а затем передать ее в openssl_decrypt(), но я не уверен, какие ключи использовать, и поэтому я здесь как бы в неведении. Любая помощь приветствуется.

Вот копия заголовков POST, полученных веб-уведомлением от Mastodon. Фактические значения ключей заменяются некоторыми словами из соображений безопасности. Точки [.], идентификаторы [xx=] и точки с запятой[;] остаются на месте.

[Авторизация] => WebPush some_key_1.some_key_2.some_key_3 // Это веб-токен JSON https://web.dev/articles/push-notificat ... _web_token [Крипто-ключ] => dh=crypto_key_1;p256ecdsa=crypto_key_2 [Шифрование] => salt=salt_key [Кодирование контента] => aesgcm [Срочно] => нормально [Ттл] => 172800 [Content-Type] => приложение/октет-поток [Дайджест] => SHA-256=дайджест_ключ [Accept-Encoding] => gzip [Дата] => Ср, 22 ноября 2023 г., 16:02:27 GMT [Агент пользователя] => http.rb/5.1.1 (Mastodon/4.2.1; +https://hidden_url.com/) [Content-Length] => 334 [Соединение] => закрыть [Хост] =>other_hidden_url.com [X-Real-Port] => ххххх [X-Порт] => 443 [X-Https] => вкл. [X-Real-Ip] => скрытый_ip [X-Forwarded-By] =>other_hidden_ip openssl_decrypt() использует следующие параметры:

функция openssl_decrypt( строка $данные, строка $cipher_algo, строка $парольная фраза, int $options = 0, строка $iv = "", строка|ноль $тег = ноль, строка $аад = "" ): строка|ложь Полагаю, сейчас задача состоит в том, чтобы сопоставить ключи из заголовков и ключи, которые я использовал для создания подписки, с этими параметрами. Я пробовал разные комбинации, но пока безуспешно.

Использованная документация:
[*]API Mastodon Web Push: https://docs.joinmastodon.org/methods/push/ [*]openssl_decrypt() PHP: https://www.php.net/manual/en/function. ... ecrypt.php [*]API Mozilla Push: https://developer.mozilla.org/en-US/doc ... I/Push_API
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»