docs: async def get_encryption_aes_key(self) -> Tuple[bytes, Dict[str, str], str]:
          """
          Get encryption key to encrypt an S3 object
  
          :return: Raw AES key bytes, Stringified JSON x-amz-matdesc, Base64 encoded x-amz-key
          """
          if self.public_key is None:
              raise ValueError('Public key not provided during initialisation, cannot encrypt key encrypting key')
  
          random_bytes = os.urandom(32)
  
          ciphertext = await self._loop.run_in_executor(
              None, lambda: (self.public_key.encrypt(random_bytes, padding.PKCS1v15())))
  
          return random_bytes, {}, base64.b64encode(ciphertext).decode()