vrtc / whatsapp-media-stream-crypto
PSR-7 stream decorators for WhatsApp-compatible media encryption and decryption
1.0
2026-02-26 09:38 UTC
Requires
- php: ^8.1
- ext-openssl: *
- guzzlehttp/psr7: ^2.7
- psr/http-message: ^1.1 || ^2.0
Requires (Dev)
- phpunit/phpunit: ^10.5
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— генерация sidecartests— unit/integration тесты