docs: def decrypt(**kwargs):
      """Deserializes and decrypts provided ciphertext.
  
      .. note::
          When using this function, the entire ciphertext message is decrypted into memory before returning
          any data.  If streaming is desired, see :class:`aws_encryption_sdk.stream`.
  
      .. code:: python
  
          >>> import aws_encryption_sdk
          >>> kms_key_provider = aws_encryption_sdk.KMSMasterKeyProvider(key_ids=[
          ...     'arn:aws:kms:us-east-1:2222222222222:key/22222222-2222-2222-2222-222222222222',
          ...     'arn:aws:kms:us-east-1:3333333333333:key/33333333-3333-3333-3333-333333333333'
          ... ])
          >>> my_ciphertext, encryptor_header = aws_encryption_sdk.decrypt(
          ...     source=my_ciphertext,
          ...     key_provider=kms_key_provider
          ... )
  
      :param config: Client configuration object (config or individual parameters required)
      :type config: aws_encryption_sdk.streaming_client.DecryptorConfig
      :param source: Source data to encrypt or decrypt
      :type source: str, bytes, io.IOBase, or file
      :param materials_manager: `CryptoMaterialsManager` from which to obtain cryptographic materials
          (either `materials_manager` or `key_provider` required)
      :type materials_manager: aws_encryption_sdk.materials_managers.base.CryptoMaterialsManager
      :param key_provider: `MasterKeyProvider` from which to obtain data keys for decryption
          (either `materials_manager` or `key_provider` required)
      :type key_provider: aws_encryption_sdk.key_providers.base.MasterKeyProvider
      :param int source_length: Length of source data (optional)
  
          .. note::
              If source_length is not provided and read() is called, will attempt to seek()
              to the end of the stream and tell() to find the length of source data.
  
      :param int max_body_length: Maximum frame size (or content length for non-framed messages)
          in bytes to read from ciphertext message.
      :returns: Tuple containing the decrypted plaintext and the message header object
      :rtype: tuple of bytes and :class:`aws_encryption_sdk.structures.MessageHeader`
      """
      with StreamDecryptor(**kwargs) as decryptor:
          plaintext = decryptor.read()
      return plaintext, decryptor.header