Кстати да, к твоей идее. Я в своем том посте немного криво объяснил, но извлекать публичный ключ из сигнатуры можно только зная саму подпись + тело сообщения + вид использованой кривой. Это может добавить лишнего геммора для аутентификации. Сервер должен отправить сообщение, сохранить его, получить подпись и тогда уже работать (в итоге он получит два публичных ключа, один из которых наш искуемый)
В общем-то, эти три параметра можно определить по
формату подписанного сообщения. Например, если речь о Bitcoin или Ethereum, то эллиптической кривой будет secp256k1 (разумеется, с различными методами хеширования публичного ключа). Если же речь о Monero, то кривая будет ed25519, и так далее.
А ты уверен что кривая ed25519 позволяет восстанавливать публичный ключ таким образом? Я напомню, что к примеру в RSA это невозможно (по телу сообщения и подписи. в PGP можно только KEY ID найти таким образом, но это не публичный ключ) именно так (там надо как минимум две пары
сообщение-подпись) а DSA вообще невозможно никак.
Я в этот вопрос немного углубился, и могусказать следующее:
большинство эллиптических кривых позволяют восстанавливать публичный ключ таким образом, через подпись тело и вид кривой. Но большинство это не все. Насчет Монеро есть сомнения.