i2crm/psr-7-stream-hkdf

Encrypting and decrypting streams

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Forks: 0

pkg:composer/i2crm/psr-7-stream-hkdf

v1.0.3 2024-11-21 08:11 UTC

This package is not auto-updated.

Last update: 2025-12-19 02:30:27 UTC


README

This package provides decorators for PSR-7 streams to encrypt, decrypt, and generate sidecar files for media streams using algorithms similar to those used by WhatsApp.

Install

Install via Composer:

composer require "i2crm/psr-7-stream-hkdf"
use GuzzleHttp\Psr7\Utils;
use i2crm\EncryptionStreams\Decorators\MediaStreamDecrypting;
use i2crm\EncryptionStreams\Decorators\MediaStreamEncrypting;
use i2crm\EncryptionStreams\Services\Crypt;
use i2crm\EncryptionStreams\ValueObjects\HKDF;

$mediaKey = file_get_contents(__DIR__.'/../samples/IMAGE.key');

$applicationInfo = 'WhatsApp Image Keys';

$data = file_get_contents(__DIR__.'/../samples/IMAGE.original');

// Streams for data example, client code decides where to write
$inputStream = Utils::streamFor($data);
$encryptedStream = Utils::streamFor('');
$decryptedStream = Utils::streamFor('');

$hkdf = HKDF::make($mediaKey, $applicationInfo);

// Encrypt the data
(new Crypt($encryptedStream))->process(MediaStreamEncrypting::make($inputStream, $hkdf->split()));

$encryptedStream->rewind();

// Decrypt
(new Crypt($decryptedStream))->process(MediaStreamDecrypting::make($encryptedStream, $hkdf->split()));

$decryptedStream->rewind();

Tests

php vendor/bin/codecept run