Files
WPS3Media/vendor/Aws3/Aws/Crypto/MetadataEnvelope.php

54 lines
1.7 KiB
PHP
Raw Permalink Normal View History

<?php
namespace DeliciousBrains\WP_Offload_Media\Aws3\Aws\Crypto;
use DeliciousBrains\WP_Offload_Media\Aws3\Aws\HasDataTrait;
use ArrayAccess;
use IteratorAggregate;
use InvalidArgumentException;
use JsonSerializable;
/**
* Stores encryption metadata for reading and writing.
*
* @internal
*/
class MetadataEnvelope implements ArrayAccess, IteratorAggregate, JsonSerializable
{
use HasDataTrait;
const CONTENT_KEY_V2_HEADER = 'x-amz-key-v2';
const IV_HEADER = 'x-amz-iv';
const MATERIALS_DESCRIPTION_HEADER = 'x-amz-matdesc';
const KEY_WRAP_ALGORITHM_HEADER = 'x-amz-wrap-alg';
const CONTENT_CRYPTO_SCHEME_HEADER = 'x-amz-cek-alg';
const CRYPTO_TAG_LENGTH_HEADER = 'x-amz-tag-len';
const UNENCRYPTED_CONTENT_LENGTH_HEADER = 'x-amz-unencrypted-content-length';
private static $constants = [];
public static function getConstantValues()
{
if (empty(self::$constants)) {
$reflection = new \ReflectionClass(static::class);
foreach (\array_values($reflection->getConstants()) as $constant) {
self::$constants[$constant] = \true;
}
}
return \array_keys(self::$constants);
}
/**
* @return void
*/
#[\ReturnTypeWillChange]
public function offsetSet($name, $value)
{
$constants = self::getConstantValues();
if (\is_null($name) || !\in_array($name, $constants)) {
throw new InvalidArgumentException('MetadataEnvelope fields must' . ' must match a predefined offset; use the header constants.');
}
$this->data[$name] = $value;
}
#[\ReturnTypeWillChange]
public function jsonSerialize()
{
return $this->data;
}
}