!FINAL {
if (c->building->nkeys >= MAX_SIG_KEYS) DOSKIP("too many public keys");
struct sigpubkey_if *pubkey;
+ closure_t *cl;
bool_t ok=c->scheme->loadpub(c->scheme,c->data_buf,
- &pubkey,c->log,c->loc);
+ &pubkey,&cl,c->log,c->loc);
if (!ok) break;
if (pubkey->sethash) {
if (!c->defhash) {
}
pubkey->sethash(pubkey->st,c->defhash);
}
- memcpy(c->building->keys[c->building->nkeys].id.b,
- c->grpid,
- GRPIDSZ);
+ struct peer_pubkey *fill=&c->building->keys[c->building->nkeys];
+ memcpy(fill->id.b,c->grpid,GRPIDSZ);
assert(ALGIDSZ==1); /* otherwise need htons or htonl or something */
- c->building->keys[c->building->nkeys].id.b[GRPIDSZ]=
- c->scheme->algid;
- c->building->keys[c->building->nkeys++].pubkey=pubkey;
+ fill->id.b[GRPIDSZ]=c->scheme->algid;
+ fill->pubkey=pubkey;
+ c->building->nkeys++;
!}
!KEYWORD serial