| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- <?php
 
- namespace Aws;
 
- /**
 
-  * Incremental hashing using PHP's hash functions.
 
-  */
 
- class PhpHash implements HashInterface
 
- {
 
-     /** @var resource|\HashContext */
 
-     private $context;
 
-     /** @var string */
 
-     private $algo;
 
-     /** @var array */
 
-     private $options;
 
-     /** @var string */
 
-     private $hash;
 
-     /**
 
-      * @param string $algo Hashing algorithm. One of PHP's hash_algos()
 
-      *     return values (e.g. md5, sha1, etc...).
 
-      * @param array  $options Associative array of hashing options:
 
-      *     - key: Secret key used with the hashing algorithm.
 
-      *     - base64: Set to true to base64 encode the value when complete.
 
-      */
 
-     public function __construct($algo, array $options = [])
 
-     {
 
-         $this->algo = $algo;
 
-         $this->options = $options;
 
-     }
 
-     public function update($data)
 
-     {
 
-         if ($this->hash !== null) {
 
-             $this->reset();
 
-         }
 
-         hash_update($this->getContext(), $data);
 
-     }
 
-     public function complete()
 
-     {
 
-         if ($this->hash) {
 
-             return $this->hash;
 
-         }
 
-         $this->hash = hash_final($this->getContext(), true);
 
-         if (isset($this->options['base64']) && $this->options['base64']) {
 
-             $this->hash = base64_encode($this->hash);
 
-         }
 
-         return $this->hash;
 
-     }
 
-     public function reset()
 
-     {
 
-         $this->context = $this->hash = null;
 
-     }
 
-     /**
 
-      * Get a hash context or create one if needed
 
-      *
 
-      * @return resource|\HashContext 
 
-      */
 
-     private function getContext()
 
-     {
 
-         if (!$this->context) {
 
-             $key = isset($this->options['key']) ? $this->options['key'] : '';
 
-             $this->context = hash_init(
 
-                 $this->algo,
 
-                 $key ? HASH_HMAC : 0,
 
-                 $key
 
-             );
 
-         }
 
-         return $this->context;
 
-     }
 
- }
 
 
  |