Seditio Source
Root |
./othercms/dle15_0/upload/engine/classes/composer/vendor/aws/aws-sdk-php/src/Signature/SignatureTrait.php
<?php
namespace Aws\Signature;

/**
 * Provides signature calculation for SignatureV4.
 */
trait SignatureTrait
{
   
/** @var array Cache of previously signed values */
   
private $cache = [];

   
/** @var int Size of the hash cache */
   
private $cacheSize = 0;

    private function
createScope($shortDate, $region, $service)
    {
        return
"$shortDate/$region/$service/aws4_request";
    }

    private function
getSigningKey($shortDate, $region, $service, $secretKey)
    {
       
$k = $shortDate . '_' . $region . '_' . $service . '_' . $secretKey;

        if (!isset(
$this->cache[$k])) {
           
// Clear the cache when it reaches 50 entries
           
if (++$this->cacheSize > 50) {
               
$this->cache = [];
               
$this->cacheSize = 0;
            }

           
$dateKey = hash_hmac(
               
'sha256',
               
$shortDate,
               
"AWS4{$secretKey}",
               
true
           
);
           
$regionKey = hash_hmac('sha256', $region, $dateKey, true);
           
$serviceKey = hash_hmac('sha256', $service, $regionKey, true);
           
$this->cache[$k] = hash_hmac(
               
'sha256',
               
'aws4_request',
               
$serviceKey,
               
true
           
);
        }

        return
$this->cache[$k];
    }
}