Verifies an ECDSA signature against a message hash and public key.
Note: the verification algorithm implemented by this function slightly deviates from the
standard ECDSA.
While this does not allow to create valid signatures if one does not possess the private key,
it means that the signature algorithm used should be modified accordingly.
This function validates that s and r are not 0 or equal to the curve order,
but does not check that `r, s bool