| Server IP : 54.94.228.101 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/vendor/aws/aws-sdk-php/src/S3/ |
Upload File : |
<?php
namespace Aws\S3;
use Aws\CommandInterface;
use Psr\Http\Message\RequestInterface;
/**
* Simplifies the SSE-C process by encoding and hashing the key.
* @internal
*/
class SSECMiddleware
{
private $endpointScheme;
private $nextHandler;
/**
* Provide the URI scheme of the client sending requests.
*
* @param string $endpointScheme URI scheme (http/https).
*
* @return callable
*/
public static function wrap($endpointScheme)
{
return function (callable $handler) use ($endpointScheme) {
return new self($endpointScheme, $handler);
};
}
public function __construct($endpointScheme, callable $nextHandler)
{
$this->nextHandler = $nextHandler;
$this->endpointScheme = $endpointScheme;
}
public function __invoke(
CommandInterface $command,
RequestInterface $request = null
) {
// Allows only HTTPS connections when using SSE-C
if (($command['SSECustomerKey'] || $command['CopySourceSSECustomerKey'])
&& $this->endpointScheme !== 'https'
) {
throw new \RuntimeException('You must configure your S3 client to '
. 'use HTTPS in order to use the SSE-C features.');
}
// Prepare the normal SSE-CPK headers
if ($command['SSECustomerKey']) {
$this->prepareSseParams($command);
}
// If it's a copy operation, prepare the SSE-CPK headers for the source.
if ($command['CopySourceSSECustomerKey']) {
$this->prepareSseParams($command, 'CopySource');
}
$f = $this->nextHandler;
return $f($command, $request);
}
private function prepareSseParams(CommandInterface $command, $prefix = '')
{
// Base64 encode the provided key
$key = $command[$prefix . 'SSECustomerKey'];
$command[$prefix . 'SSECustomerKey'] = base64_encode($key);
// Base64 the provided MD5 or, generate an MD5 if not provided
if ($md5 = $command[$prefix . 'SSECustomerKeyMD5']) {
$command[$prefix . 'SSECustomerKeyMD5'] = base64_encode($md5);
} else {
$command[$prefix . 'SSECustomerKeyMD5'] = base64_encode(md5($key, true));
}
}
}