X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=privcache.c;h=b8dc2adee323ce23b2625ac6fe9a313901d0b388;hb=87af7c8c0f58eea212ec1207d0d343a509c5e7df;hp=4291e12623cec2e238115bea014a8f5be19ac383;hpb=37ab3875a5c386cb7dfedf679f7e6685ef275217;p=secnet.git diff --git a/privcache.c b/privcache.c index 4291e12..b8dc2ad 100644 --- a/privcache.c +++ b/privcache.c @@ -48,10 +48,10 @@ static struct sigprivkey_if *uncached_get(struct privcache *st, f = fopen(st->path.buffer,"rb"); if (!f) { if (errno == ENOENT) { - slilog(log,M_DEBUG,"private key %s not found\n", + slilog(log,M_DEBUG,"private key %s not found", st->path.buffer); } else { - slilog(log,M_ERR,"failed to open private key file %s\n", + slilog(log,M_ERR,"failed to open private key file %s", st->path.buffer); } goto out; @@ -61,12 +61,12 @@ static struct sigprivkey_if *uncached_get(struct privcache *st, buffer_init(&st->databuf,0); ssize_t got=fread(st->databuf.base,1,st->databuf.alloclen,f); if (ferror(f)) { - slilog(log,M_ERR,"failed to read private-key file %s\n", + slilog(log,M_ERR,"failed to read private-key file %s", st->path.buffer); goto out; } if (!feof(f)) { - slilog(log,M_ERR,"private key file %s longer than max %d\n", + slilog(log,M_ERR,"private key file %s longer than max %d", st->path.buffer, (int)st->databuf.alloclen); goto out; } @@ -76,9 +76,13 @@ static struct sigprivkey_if *uncached_get(struct privcache *st, for (const struct sigscheme_info *scheme=sigschemes; scheme->name; scheme++) { + if (scheme->algid != id->b[GRPIDSZ]) + continue; + st->databuf.start=st->databuf.base; st->databuf.size=got; - ok=scheme->loadpriv(scheme, &st->databuf, &sigpriv, log); + struct cloc loc = { .file=st->path.buffer, .line=0 }; + ok=scheme->loadpriv(scheme, &st->databuf, &sigpriv, log, loc); if (ok) { if (sigpriv->sethash) { if (!st->defhash) { @@ -93,9 +97,11 @@ static struct sigprivkey_if *uncached_get(struct privcache *st, } goto out; } + /* loadpriv will have logged */ + goto out; } - slilog(log,M_ERR,"private key file %s not loaded (not recognised?)\n", + slilog(log,M_ERR,"private key file %s not loaded (unknown algid)", st->path.buffer); out: