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/buyease.com.ng/wp-content/plugins/yaysmtp/vendor_amazon/Aws/Crypto/Cipher/Cbc.php
<?php

namespace YaySMTP\Aws3\Aws\Crypto\Cipher;

use InvalidArgumentException;
use LogicException;
/**
 * An implementation of the CBC cipher for use with an AesEncryptingStream or
 * AesDecrypting stream.
 */
class Cbc implements \YaySMTP\Aws3\Aws\Crypto\Cipher\CipherMethod
{
    const BLOCK_SIZE = 16;
    /**
     * @var string
     */
    private $baseIv;
    /**
     * @var string
     */
    private $iv;
    /**
     * @var int
     */
    private $keySize;
    /**
     * @param string $iv Base Initialization Vector for the cipher.
     * @param int $keySize Size of the encryption key, in bits, that will be
     *                     used.
     *
     * @throws InvalidArgumentException Thrown if the passed iv does not match
     *                                  the iv length required by the cipher.
     */
    public function __construct($iv, $keySize = 256)
    {
        $this->baseIv = $this->iv = $iv;
        $this->keySize = $keySize;
        if (strlen($iv) !== openssl_cipher_iv_length($this->getOpenSslName())) {
            throw new \InvalidArgumentException('Invalid initialization vector');
        }
    }
    public function getOpenSslName()
    {
        return "aes-{$this->keySize}-cbc";
    }
    public function getAesName()
    {
        return 'AES/CBC/PKCS5Padding';
    }
    public function getCurrentIv()
    {
        return $this->iv;
    }
    public function requiresPadding()
    {
        return true;
    }
    public function seek($offset, $whence = SEEK_SET)
    {
        if ($offset === 0 && $whence === SEEK_SET) {
            $this->iv = $this->baseIv;
        } else {
            throw new \LogicException('CBC initialization only support being' . ' rewound, not arbitrary seeking.');
        }
    }
    public function update($cipherTextBlock)
    {
        $this->iv = substr($cipherTextBlock, self::BLOCK_SIZE * -1);
    }
}