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
Requires
- php: ^8.2
- ext-openssl: *
- guzzlehttp/guzzle: ^7.9.0
Requires (Dev)
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