I think i see a bug: line 273 of key.cpp if (rec<0 || rec>=3) return false; Afaict, 3 is a perfectly valid value, meaning 25% of sig-> key recoveries would fail erroneously...