X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=pubkeys.c;h=6dc741b7f5f9e63480b09151c1d684c6d5a5c0bc;hb=4d9d6e20e19c1aaa0d138e70897d136b36d673c0;hp=903103f8399ae487f4f31ef92a6f26f5d9d30658;hpb=2798941e7a1a60e385f51bde9fde6c41e6012eea;p=secnet.git diff --git a/pubkeys.c b/pubkeys.c index 903103f..6dc741b 100644 --- a/pubkeys.c +++ b/pubkeys.c @@ -49,15 +49,8 @@ const struct sigscheme_info *sigscheme_lookup(const char *name) static list_t *makepublic_apply(closure_t *self, struct cloc loc, dict_t *context, list_t *args) { -#define ARG(ix,vn,what) \ - item_t *vn##_i=list_elem(args,ix); \ - if (!vn##_i) cfgfatal(loc,"make-public","need " what); \ - if (vn##_i->type!=t_string) cfgfatal(vn##_i->loc,"make-public", \ - what "must be string"); \ - const char *vn=vn##_i->data.string - - ARG(0,algname,"algorithm name"); - ARG(1,b91d,"base91s-encoded public key"); + CL_GET_STR_ARG(0,algname,"algorithm name"); + CL_GET_STR_ARG(1,b91d,"base91s-encoded public key"); const struct sigscheme_info *sch=sigscheme_lookup(algname); if (!sch) cfgfatal(algname_i->loc,"make-public", @@ -77,17 +70,14 @@ static list_t *makepublic_apply(closure_t *self, struct cloc loc, buf.size += base91s_decode_end(&b91,buf.start+buf.size); assert(buf.size <= buf.alloclen); + struct cfgfile_log log; + cfgfile_log_init(&log,loc,"make-public"); + struct sigpubkey_if *pubkey; closure_t *cl; - bool_t ok=sch->loadpub(sch,&buf,&pubkey,&cl,system_log,loc); + bool_t ok=sch->loadpub(sch,&buf,&pubkey,&cl,&log.log,loc); if (!ok) cfgfatal(loc,"make-public","public key loading failed"); - if (pubkey->sethash) { - struct hash_if *defhash= - find_cl_if(context,"hash",CL_HASH,True,"make-public",loc); - pubkey->sethash(pubkey->st,defhash); - } - BUF_FREE(&buf); buffer_destroy(&buf); return new_closure(cl);