e.g. the HMAC digestion currently takes up half of the whole runtime. This should be run in `asyncio.to_thread`