diff options
author | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
commit | 0c8af4992cb0f7589dcafaad65ada12753c64594 (patch) | |
tree | 18e83d068c3e7dd2499331de977782b382279396 /vendor/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php |
initial
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php b/vendor/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php new file mode 100644 index 0000000..2c7e7c2 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/Crypto/AbstractCryptoClientV2.php @@ -0,0 +1,119 @@ +<?php +namespace Aws\Crypto; + +use Aws\Crypto\Cipher\CipherMethod; +use GuzzleHttp\Psr7\Stream; + +/** + * @internal + */ +abstract class AbstractCryptoClientV2 +{ + public static $supportedCiphers = ['gcm']; + + public static $supportedKeyWraps = [ + KmsMaterialsProviderV2::WRAP_ALGORITHM_NAME + ]; + + public static $supportedSecurityProfiles = ['V2', 'V2_AND_LEGACY']; + + public static $legacySecurityProfiles = ['V2_AND_LEGACY']; + + /** + * Returns if the passed cipher name is supported for encryption by the SDK. + * + * @param string $cipherName The name of a cipher to verify is registered. + * + * @return bool If the cipher passed is in our supported list. + */ + public static function isSupportedCipher($cipherName) + { + return in_array($cipherName, self::$supportedCiphers, true); + } + + /** + * Returns an identifier recognizable by `openssl_*` functions, such as + * `aes-256-gcm` + * + * @param string $cipherName Name of the cipher being used for encrypting + * or decrypting. + * @param int $keySize Size of the encryption key, in bits, that will be + * used. + * + * @return string + */ + abstract protected function getCipherOpenSslName($cipherName, $keySize); + + /** + * Constructs a CipherMethod for the given name, initialized with the other + * data passed for use in encrypting or decrypting. + * + * @param string $cipherName Name of the cipher to generate for encrypting. + * @param string $iv Base Initialization Vector for the cipher. + * @param int $keySize Size of the encryption key, in bits, that will be + * used. + * + * @return CipherMethod + * + * @internal + */ + abstract protected function buildCipherMethod($cipherName, $iv, $keySize); + + /** + * Performs a reverse lookup to get the openssl_* cipher name from the + * AESName passed in from the MetadataEnvelope. + * + * @param $aesName + * + * @return string + * + * @internal + */ + abstract protected function getCipherFromAesName($aesName); + + /** + * Dependency to provide an interface for building an encryption stream for + * data given cipher details, metadata, and materials to do so. + * + * @param Stream $plaintext Plain-text data to be encrypted using the + * materials, algorithm, and data provided. + * @param array $options Options for use in encryption. + * @param MaterialsProviderV2 $provider A provider to supply and encrypt + * materials used in encryption. + * @param MetadataEnvelope $envelope A storage envelope for encryption + * metadata to be added to. + * + * @return AesStreamInterface + * + * @internal + */ + abstract public function encrypt( + Stream $plaintext, + array $options, + MaterialsProviderV2 $provider, + MetadataEnvelope $envelope + ); + + /** + * Dependency to provide an interface for building a decryption stream for + * cipher text given metadata and materials to do so. + * + * @param string $cipherText Plain-text data to be decrypted using the + * materials, algorithm, and data provided. + * @param MaterialsProviderInterface $provider A provider to supply and encrypt + * materials used in encryption. + * @param MetadataEnvelope $envelope A storage envelope for encryption + * metadata to be read from. + * @param array $options Options used for decryption. + * + * @return AesStreamInterface + * + * @internal + */ + abstract public function decrypt( + $cipherText, + MaterialsProviderInterfaceV2 $provider, + MetadataEnvelope $envelope, + array $options = [] + ); +} |