vrtc/whatsapp-media-stream-crypto

PSR-7 stream decorators for WhatsApp-compatible media encryption and decryption

Maintainers

Package info

github.com/vrtc/media-stream-crypto

pkg:composer/vrtc/whatsapp-media-stream-crypto

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0 2026-02-26 09:38 UTC

This package is not auto-updated.

Last update: 2026-03-27 08:25:23 UTC


README

PHP-пакет для шифрования и дешифрования медиа-данных в формате WhatsApp с использованием PSR-7 потоков.

Возможности

  • Расширение mediaKey (32 байта) через HKDF SHA-256 в 112 байт.
  • Шифрование через AES-256-CBC + PKCS#7.
  • Подпись iv + ciphertext через HMAC SHA-256 с усечением до 10 байт.
  • Дешифрование с обязательной проверкой MAC до расшифровки.
  • Генерация sidecar для streamable media (audio/video).
  • Декораторы StreamInterface для шифрования и дешифрования.

Примечание: текущая реализация декораторов выполняет полную буферизацию исходного потока в память при первом чтении/инициализации.

Установка

composer require vrtc/whatsapp-media-stream-crypto

или для локальной разработки:

php composer.phar install

Быстрый старт

php composer.phar install
php composer.phar test
php /tmp/verify_test3_final.php

Требования

  • PHP 8.1+
  • ext-openssl

Быстрый пример

<?php

use App\WhatsAppCrypto\Crypto\AesCbcCryptor;
use App\WhatsAppCrypto\Crypto\HkdfSha256KeyExpander;
use App\WhatsAppCrypto\Crypto\MacSigner;
use App\WhatsAppCrypto\Domain\MediaType;
use App\WhatsAppCrypto\Stream\EncryptingStreamDecorator;
use GuzzleHttp\Psr7\Utils;

$mediaKey = random_bytes(32);
$stream = Utils::streamFor('hello world');

$encrypting = new EncryptingStreamDecorator(
    stream: $stream,
    mediaKey: $mediaKey,
    mediaType: MediaType::AUDIO,
    keyExpander: new HkdfSha256KeyExpander(),
    cryptor: new AesCbcCryptor(),
    macSigner: new MacSigner(),
);

$encrypted = (string) $encrypting;

Тесты

php composer.phar test

или напрямую:

php vendor/bin/phpunit

Структура

  • src/Contract — контракты
  • src/Crypto — криптографические сервисы
  • src/Domain — доменные объекты
  • src/Stream — декораторы PSR-7 потоков
  • src/Sidecar — генерация sidecar
  • tests — unit/integration тесты