When I implemented the backends for cryptographic operations, I didn't pay that much attention to avoiding unnecessary allocations. Someone should look over all the interface traits, where / how they are used,