One of the issues that we got from our lab was regarding to their attempt to use SHAKE digests with the new digest&sign API, which was failing in unexpected ways. Given that this should not work in FIPS mode, it was not an issue, but it still leaves a question whether this should be a valid use case outside of the FIPS Mode or whether we want to improve the error reporting of this case. Currently, the SHAKE digests will fail with the following error when we try to get the read method from them, which is not present:
_gcry_fatal_error (GPG_ERR_DIGEST_ALGO, "requested algo has no fixed digest length");
We have similar use in the PBKDF2 which rejects SHAKE a bit nicer:
hlen = _gcry_md_get_algo_dlen (hashalgo); if (!hlen) return GPG_ERR_DIGEST_ALGO;
So the proposal here is to implement something similar in the new digest&sign API to fail more gracefully (with error code instead of fatal error).