1. Go to this page and download the library: Download rysonliu/http-signature library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rysonliu / http-signature example snippets
use Jasny\HttpSignature\HttpSignature;
$keys = [
'hmac-key-1' => 'secret',
'hmac-key-2' => 'god',
];
$service = new HttpSignature(
'hmac-sha256',
function (string $message, string $keyId) use ($keys): string {
if (!isset($keys[$keyId])) {
throw new OutOfBoundsException("Unknown sign key '$keyId'");
}
$key = $keys[$keyId];
return hash_hmac('sha256', $message, $key, true);
},
function (string $message, string $signature, string $keyId) use ($keys): bool {
if (!isset($keys[$keyId])) {
return false;
}
$key = $keys[$keyId];
$expected = hash_hmac('sha256', $message, $key, true);
return hash_equals($expected, $signature);
}
);
$request = new Request(); // Any PSR-7 compatible Request object
$signedRequest = $service->sign($request, $keyId);
$request = new Request(); // Any PSR-7 compatible Request object
$service->verify($request);
use Jasny\HttpSignature\HttpSignature;
$service = new HttpSignature(
['hmac-sha256', 'rsa', 'rsa-sha256'],
function (string $message, string $keyId, string $algorithm): string {
// ...
},
function (string $message, string $signature, string $keyId, string $algorithm): bool {
// ...
}
);
$service = $service->withClockSkew(1800); // Accept requests up to 30 minutes old
use Jasny\HttpSignature\HttpSignature;
use Jasny\HttpSignature\ServerMiddleware;
use Zend\Stratigility\MiddlewarePipe;
use Zend\Diactoros\ResponseFactory;
$service = new HttpSignature(/* ... */);
$responseFactory = new ResponseFactory();
$middleware = new ServerMiddleware($service, $responseFactory);
$app = new MiddlewarePipe();
$app->pipe($middleware);
use Jasny\HttpSignature\HttpSignature;
use Jasny\HttpSignature\ServerMiddleware;
use Relay\RelayBuilder;
$service = new HttpSignature(/* ... */);
$middleware = new ServerMiddleware($service);
$relayBuilder = new RelayBuilder($resolver);
$relay = $relayBuilder->newInstance([
$middleware->asDoublePass(),
]);
$response = $relay($request, $baseResponse);
$keyId = $request->getAttribute(`signature_key_id`);
if ($keyId === null) {
$errorResponse = $response
->withStatus(401)
->withHeader('Content-Type', 'text/plain');
$errorResponse = $service->setAuthenticateResponseHeader($errorResponse);
$errorResponse->getBody()->write('request not signed');
}
// Request is signed and signature is valid
// ...
use Jasny\HttpSignature\HttpSignature;
use Jasny\HttpSignature\ClientMiddleware;
$service = new HttpSignature(/* ... */);
$middleware = new ClientMiddleware($service, $keyId);
$middleware = new ClientMiddleware($service->withAlgorithm('hmac-sha256'));
use Relay\RelayBuilder;
$relayBuilder = new RelayBuilder($resolver);
$relay = $relayBuilder->newInstance([
$middleware->asDoublePass(),
]);
$response = $relay($request, $baseResponse);
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Client;
use Jasny\HttpSignature\HttpSignature;
use Jasny\HttpSignature\ClientMiddleware;
$service = new HttpSignature(/* ... */);
$middleware = new ClientMiddleware($service);
$stack = new HandlerStack();
$stack->push($middleware->forGuzzle());
$client = new Client(['handler' => $stack, 'signature_key_id' => $keyId]);
$client->get('/foo'); // Sign with default key
$client->get('/foo', ['signature_key_id' => $altKeyId]); // Sign with other key
$client->get('/foo', ['signature_key_id' => null]); // Don't sign
use Http\Discovery\HttpClientDiscovery;
use Http\Client\Common\PluginClient;
use Jasny\HttpSignature\HttpSignature;
use Jasny\HttpSignature\ClientMiddleware;
$service = new HttpSignature(/* ... */);
$middleware = new ClientMiddleware($service, $keyId);
$pluginClient = new PluginClient(
HttpClientDiscovery::find(),
[
$middleware->forHttplug(),
]
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.