Hi I recently migrated an application from OpenSSL 1.1.1 to OpenSSL 3.0, and I'm wondering how best to handle DSA signatures - specifically, the 'r' and 's' values - in OpenSSL 3.0.
In OpenSSL 1.1.1, it was pretty easy: DSA_do_sign() - gets you a DSA_SIG DSA_SIG_get0() - gets you the 'r' and 's' values from the DSA_SIG This still works in OpenSSL 3.0, but the DSA_* functions are deprecated, and so to avoid that I'm doing this instead: EVP_DIgestSign() - gets you a DER-encoded signature blob BN_bin2bn() - grabs 'r' or 's' from the signature blob, so long as you point it at the right place in the blob Which seems very cumbersome, and requires intimate knowledge of the layout of the signature blob. Is there a better way to get the 'r' and 's' values from a DSA signature in OpenSSL 3.0 without using deprecated functions? Thanks. Richard