My C is rusty I have never written CPython before, but I think it's correct.
The first commit in this PR uses SSL_set1_sigalgs_list() which just takes a string. The final implementation with explicit typing seemed nicer to me.
Not sure whether this is the right place for these new values/enums, or best naming. Definitely might be a bit sloppy to have non-EC in OpenSslEvpPkeyEnum which lives in ephemeral_key_info.py
There's some duplication between nassl_SSL_set1_sigalgs and nassl_SSL_set1_groups now. I tried to extract it to python_utils, but felt it was not saving much. Might not be worth it at this time.
Reference: https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set1_sigalgs.html
Some thoughts: