async def METHOD_NAME(hardened_sign_config, folder):
    """Caches all external resources needed for a signing task"""
    # Get unique entitlement urls
    entitlement_urls = set()
    for cfg in hardened_sign_config:
        if not cfg.get("entitlements", None):
            continue
        entitlement_urls.add(cfg["entitlements"])
    # Async download and set url -> file location mapping
    url_map = {}
    futures = []
    for url in entitlement_urls:
        filename = url.split("/")[-1]
        dest = folder / filename
        url_map[url] = dest
        log.info(f"Downloading resource: {filename} from {url}")
        futures.append(
            asyncio.ensure_future(
                retry_async(
                    download_file,
                    retry_exceptions=(DownloadError, TimeoutError),
                    args=(url, dest),
                    attempts=5,
                )
            )
        )
    await raise_future_exceptions(futures)
    # Return map of url to file location
    return url_map