| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- <?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];
 
-     }
 
- }
 
 
  |