summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/rpmchecksig.c6
-rw-r--r--lib/signature.c3
-rw-r--r--lib/signature.h1
3 files changed, 7 insertions, 3 deletions
diff --git a/lib/rpmchecksig.c b/lib/rpmchecksig.c
index 42656d890..79b6947cf 100644
--- a/lib/rpmchecksig.c
+++ b/lib/rpmchecksig.c
@@ -232,7 +232,7 @@ static void initDigests(FD_t fd, Header sigh, int range, rpmQueryFlags flags)
continue;
if (sinfo.hashalgo && (sinfo.range & range))
- fdInitDigestID(fd, sinfo.hashalgo, sigtd.tag, 0);
+ fdInitDigestID(fd, sinfo.hashalgo, sinfo.id, 0);
}
headerFreeIterator(hi);
}
@@ -264,10 +264,10 @@ static int verifyItems(FD_t fd, Header sigh, int range, rpmQueryFlags flags,
continue;
if (sinfo.hashalgo && sinfo.range == range && rc == RPMRC_OK) {
- DIGEST_CTX ctx = fdDupDigest(fd, sigtd.tag);
+ DIGEST_CTX ctx = fdDupDigest(fd, sinfo.id);
rc = rpmVerifySignature(keyring, &sigtd, sig, ctx, &result);
rpmDigestFinal(ctx, NULL, NULL, 0);
- fdFiniDigest(fd, sigtd.tag, NULL, NULL, 0);
+ fdFiniDigest(fd, sinfo.id, NULL, NULL, 0);
}
if (result) {
diff --git a/lib/signature.c b/lib/signature.c
index 5d4391f71..f249c0ea0 100644
--- a/lib/signature.c
+++ b/lib/signature.c
@@ -131,6 +131,9 @@ rpmRC rpmSigInfoParse(rpmtd td, const char *origin,
sinfo->keyid = pgpGrab(sig->signid+4, 4);
}
+ if (sinfo->hashalgo)
+ sinfo->id = td->tag;
+
rc = RPMRC_OK;
if (sigp)
*sigp = sig;
diff --git a/lib/signature.h b/lib/signature.h
index 1d592e363..c44daa8e0 100644
--- a/lib/signature.h
+++ b/lib/signature.h
@@ -22,6 +22,7 @@ enum {
};
struct sigtInfo_s {
+ int id;
int hashalgo;
int range;
int type;