summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php')
-rw-r--r--vendor/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php66
1 files changed, 66 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php b/vendor/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php
new file mode 100644
index 0000000..685cbf5
--- /dev/null
+++ b/vendor/aws/aws-sdk-php/src/Crypto/MaterialsProviderV2.php
@@ -0,0 +1,66 @@
+<?php
+namespace Aws\Crypto;
+
+abstract class MaterialsProviderV2 implements MaterialsProviderInterfaceV2
+{
+ private static $supportedKeySizes = [
+ 128 => true,
+ 256 => true,
+ ];
+
+ /**
+ * Returns if the requested size is supported by AES.
+ *
+ * @param int $keySize Size of the requested key in bits.
+ *
+ * @return bool
+ */
+ public static function isSupportedKeySize($keySize)
+ {
+ return isset(self::$supportedKeySizes[$keySize]);
+ }
+
+ /**
+ * Returns the wrap algorithm name for this Provider.
+ *
+ * @return string
+ */
+ abstract public function getWrapAlgorithmName();
+
+ /**
+ * Takes an encrypted content encryption key (CEK) and material description
+ * for use decrypting the key according to the Provider's specifications.
+ *
+ * @param string $encryptedCek Encrypted key to be decrypted by the Provider
+ * for use decrypting other data.
+ * @param string $materialDescription Material Description for use in
+ * decrypting the CEK.
+ * @param string $options Options for use in decrypting the CEK.
+ *
+ * @return string
+ */
+ abstract public function decryptCek($encryptedCek, $materialDescription, $options);
+
+ /**
+ * @param string $keySize Length of a cipher key in bits for generating a
+ * random content encryption key (CEK).
+ * @param array $context Context map needed for key encryption
+ * @param array $options Additional options to be used in CEK generation
+ *
+ * @return array
+ */
+ abstract public function generateCek($keySize, $context, $options);
+
+ /**
+ * @param string $openSslName Cipher OpenSSL name to use for generating
+ * an initialization vector.
+ *
+ * @return string
+ */
+ public function generateIv($openSslName)
+ {
+ return openssl_random_pseudo_bytes(
+ openssl_cipher_iv_length($openSslName)
+ );
+ }
+}