larfeus / signature
v1.0.1
2018-11-28 14:35 UTC
Requires
- php: >=7.0
- illuminate/contracts: ^5.5
- illuminate/http: ^5.5
- illuminate/support: ^5.5
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 5.*
README
Use HMAC or RSA to sign data for Laravel and lumen;
Install
composer require larfeus/signature
laravel
php artisan vendor:publish
lumen
copy vendor/larfeus/signature/src/config/signature.php config/signature.php
// bootstrap/app.php $app->withFacades(true, [ Larfeus\Signature\Facade\Signature::class => 'Signature' ]); $app->register(Larfeus\Signature\SignatureServiceProvider::class);
Configuration
// config/signature.php return [ 'api' => [ 'driver' => 'HMAC', 'options' => [ // hash algorithm 'algo' => env('SIGNATURE_API_ALGO', 'sha1'), // hash secret key 'secret' => env('SIGNATURE_API_SECRET'), // base64 encoding generating signature 'base64' => true, // sort and filter array data (only for arrays) 'normalize' => false, // raw_output parameter for hash_hmac function calling 'raw' => true, ], ], ];
Usage
Make signature:
// using default signer (see configuration file) $signature = Signature::sign('foobar'); // using specified signer $signature = Signature::signer('hmac') ->sign(['foo'=>'bar']); $signature = Signature::signer('rsa') ->setPrivateKey('./private.pem') ->sign(['foo'=>'bar']);
Manual verification:
Signature::verify($signature, 'foobar'); Signature::signer('hmac') ->verify($signature, ['foo'=>'bar']); Signature::signer('rsa') ->setPublicKey('./public.pem') ->verify($signature, ['foo'=>'bar']);
Middleware in laravel or lumen application:
Route::group(['prefix' => 'api', 'middleware' => 'signature:api'], function () { Route::get('/user/:id', function($id) { return User::findOrFail($id); }); });