HEX
Server: LiteSpeed
System: Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User: swifizcd (1555)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/swifizcd/shoppers-joy.com.ng/wp-content/plugins/yaysmtp/vendor_amazon/Aws/PhpHash.php
<?php

namespace YaySMTP\Aws3\Aws;

/**
 * Incremental hashing using PHP's hash functions.
 */
class PhpHash implements \YaySMTP\Aws3\Aws\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'] : null;
      $this->context = hash_init($this->algo, $key ? HASH_HMAC : 0, $key);
    }
    return $this->context;
  }
}