Is it possible to calculate a public key from the message hash and signature?
2 Answers
It is possible to create a public key from the signature. It will be equivalent to the key used to generate the signature but not necessarily identical.
You can find an example implementation here.
BIP143 implies it is possible per the No FindAndDelete example.
I think the following pseudocode would do it
pubkey = get_pubkey(generate_key())
while not verify_sig(signature, pubkey, msg_hash):
pubkey = get_pubkey(generate_key())
and as David suggested, I suppose not necessarily identical but equivalent for signature verification purposes.