_ssl_data.h contains static tables with OpenSSL error names and reasons. The stables are created by scrapping header files. The current approach has two issues:
error codes are version dependent. OpenSSL 1.1.1 uses different codes and has a different set of error reasons as 3.0.0.
parsing header files with regular expressions is err-prone.
I'm going to introduce version-specific data tables and re-write the current make_ssl_data.py script to use OpenSSL's crypto/err/openssl.txt and crypto/err/openssl.ec. The text files exist since OpenSSL 1.1.