12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- namespace Aws\Crypto;
- use 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;
- }
- }
|