summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2017-04-06 13:35:31 +0300
committerPanu Matilainen <pmatilai@redhat.com>2017-04-06 13:37:25 +0300
commit00d5f3a18f4b998e12235eb62f8d0a12e40ed37f (patch)
tree248cd4e54caec71350de377ad36a171d4eda2e10
parent9a0afef3397ea0899303b4bbb722cdf4fd2bd6ff (diff)
downloadrpm-00d5f3a18f4b998e12235eb62f8d0a12e40ed37f.tar.gz
Give signatures and digests a per-package unique id internally
For now this is just the tag, but gives us a single place to change it when it becomes necessary to do so.
-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;