chiark
/
gitweb
/
~ianmdlvl
/
secnet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
priv-cache etc.: private key algorithm is specified in key id
[secnet.git]
/
privcache.c
diff --git
a/privcache.c
b/privcache.c
index 4291e12623cec2e238115bea014a8f5be19ac383..b8dc2adee323ce23b2625ac6fe9a313901d0b388 100644
(file)
--- 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) {
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 {
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;
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)) {
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)) {
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;
}
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++) {
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;
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) {
if (ok) {
if (sigpriv->sethash) {
if (!st->defhash) {
@@
-93,9
+97,11
@@
static struct sigprivkey_if *uncached_get(struct privcache *st,
}
goto out;
}
}
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:
st->path.buffer);
out: