diff --git a/libpcp/ed.c b/libpcp/ed.c index 1ac87cc..9f2dffc 100644 --- a/libpcp/ed.c +++ b/libpcp/ed.c @@ -403,6 +403,21 @@ pcp_pubkey_t *pcp_ed_detachverify_buffered(PCPCTX *ptx, Pcpstream *in, Pcpstream if(verifiedhash != NULL) break; } + + /* no pubkey found yet, try our own */ + pcp_key_t *k; + pcp_pubkey_t *pub; + pcphash_iterate(ptx, k) { + if(k->type == PCP_KEY_TYPE_MAINSECRET) { + pub = pcpkey_pub_from_secret(k); + verifiedhash = pcp_ed_verify(ptx, sighash, mlen, pub); + if(verifiedhash != NULL) { + /* good, self-signed */ + p = pub; + break; + } + } + } } else { verifiedhash = pcp_ed_verify(ptx, sighash, mlen, p);