summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php b/vendor/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php
new file mode 100644
index 0000000..5a7c692
--- /dev/null
+++ b/vendor/aws/aws-sdk-php/src/Crypto/MetadataEnvelope.php
@@ -0,0 +1,61 @@
+<?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;
+ }
+}