| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | 
							- <?php
 
- namespace Aws\Crypto;
 
- abstract class MaterialsProvider implements MaterialsProviderInterface
 
- {
 
-     private static $supportedKeySizes = [
 
-         128 => true,
 
-         192 => 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]);
 
-     }
 
-     /**
 
-      * Performs further initialization of the MaterialsProvider based on the
 
-      * data inside the MetadataEnvelope.
 
-      *
 
-      * @param MetadataEnvelope $envelope A storage envelope for encryption
 
-      *                                   metadata to be read from.
 
-      *
 
-      * @return MaterialsProvider
 
-      *
 
-      * @throws \RuntimeException Thrown when there is an empty or improperly
 
-      *                           formed materials description in the envelope.
 
-      *
 
-      * @internal
 
-      */
 
-     abstract public function fromDecryptionEnvelope(MetadataEnvelope $envelope);
 
-     /**
 
-      * Returns the material description for this Provider so it can be verified
 
-      * by encryption mechanisms.
 
-      *
 
-      * @return string
 
-      */
 
-     abstract public function getMaterialsDescription();
 
-     /**
 
-      * Returns the wrap algorithm name for this Provider.
 
-      *
 
-      * @return string
 
-      */
 
-     abstract public function getWrapAlgorithmName();
 
-     /**
 
-      * Takes a content encryption key (CEK) and description to return an
 
-      * encrypted key according to the Provider's specifications.
 
-      *
 
-      * @param string $unencryptedCek Key for use in encrypting other data
 
-      *                               that itself needs to be encrypted by the
 
-      *                               Provider.
 
-      * @param string $materialDescription Material Description for use in
 
-      *                                    encrypting the $cek.
 
-      *
 
-      * @return string
 
-      */
 
-     abstract public function encryptCek($unencryptedCek, $materialDescription);
 
-     /**
 
-      * 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
 
-      *                                    encrypting the $cek.
 
-      *
 
-      * @return string
 
-      */
 
-     abstract public function decryptCek($encryptedCek, $materialDescription);
 
-     /**
 
-      * @param string $keySize Length of a cipher key in bits for generating a
 
-      *                        random content encryption key (CEK).
 
-      *
 
-      * @return string
 
-      */
 
-     public function generateCek($keySize)
 
-     {
 
-         return openssl_random_pseudo_bytes($keySize / 8);
 
-     }
 
-     /**
 
-      * @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)
 
-         );
 
-     }
 
- }
 
 
  |