diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Signature/SignatureTrait.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/Signature/SignatureTrait.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Signature/SignatureTrait.php b/vendor/aws/aws-sdk-php/src/Signature/SignatureTrait.php new file mode 100644 index 0000000..5dcfe9d --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/Signature/SignatureTrait.php @@ -0,0 +1,48 @@ +<?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]; + } +} |