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