diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2017-04-06 13:35:31 +0300 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2017-04-06 13:37:25 +0300 |
commit | 00d5f3a18f4b998e12235eb62f8d0a12e40ed37f (patch) | |
tree | 248cd4e54caec71350de377ad36a171d4eda2e10 | |
parent | 9a0afef3397ea0899303b4bbb722cdf4fd2bd6ff (diff) | |
download | rpm-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.c | 6 | ||||
-rw-r--r-- | lib/signature.c | 3 | ||||
-rw-r--r-- | lib/signature.h | 1 |
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; |