docs: def aes_encrypt(base64_encryption_key, data):
      """Encrypt data with AES-CBC and sign it with HMAC-SHA256
  
      Arguments:
          base64_encryption_key (str): a base64-encoded string containing an AES encryption key
              and HMAC signing key as generated by generate_encryption_key()
          data (str): a byte string containing the data to be encrypted
  
      Returns:
          str: the encrypted data as a byte string with the HMAC signature appended to the end
  
      """
      if isinstance(data, text_type):
          data = data.encode("UTF-8")
      aes_key_bytes, hmac_key_bytes = _extract_keys(base64_encryption_key)
      data = _pad(data)
      iv_bytes = os.urandom(AES_BLOCK_SIZE)
      cipher = AES.new(aes_key_bytes, mode=AES.MODE_CBC, IV=iv_bytes)
      data = iv_bytes + cipher.encrypt(data)  # prepend init vector
      hmac_signature = hmac.new(hmac_key_bytes, data, hashlib.sha256).digest()
      return as_base64(data + hmac_signature)