!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;
- 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
int r=pkyylex();
if (r) goto err_bad;
- if (!c->had_serial) {
- slilog(LI,M_ERR,"missing serial number in %s",path);
- goto err_bad;
- }
if (!c->building->nkeys) {
slilog(LI,M_ERR,"no useable keys in %s",path);
goto err_bad;