summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2017-04-19 16:35:28 +0300
committerPanu Matilainen <pmatilai@redhat.com>2017-04-19 16:35:28 +0300
commit5aeb8ed1cf5462ddc703b6d04838cc7d8b46b747 (patch)
treeaba66451b564e9d1f6c9b0e95244bd167285a62d
parentc6dfbece5fd4d6be9ab97ceb01203d2a27a827c0 (diff)
downloadrpm-5aeb8ed1cf5462ddc703b6d04838cc7d8b46b747.tar.gz
Add signature/digest disabler info to rpmsinfo struct
-rw-r--r--lib/signature.c13
-rw-r--r--lib/signature.h1
2 files changed, 12 insertions, 2 deletions
diff --git a/lib/signature.c b/lib/signature.c
index 19265bc94..d99d1a806 100644
--- a/lib/signature.c
+++ b/lib/signature.c
@@ -8,6 +8,7 @@
#include <netinet/in.h>
#include <rpm/rpmtypes.h>
+#include <rpm/rpmts.h> /* XXX: verify flags */
#include <rpm/rpmstring.h>
#include <rpm/rpmfileutil.h>
#include <rpm/rpmlog.h>
@@ -38,22 +39,26 @@ rpmRC rpmsinfoInit(rpmtd td, const char *origin,
tagtype = RPM_BIN_TYPE;
sinfo->type = RPMSIG_SIGNATURE_TYPE;
sinfo->range = (RPMSIG_HEADER|RPMSIG_PAYLOAD);
+ sinfo->disabler = RPMVSF_NODSA;
break;
case RPMSIGTAG_PGP5: /* XXX legacy */
case RPMSIGTAG_PGP:
tagtype = RPM_BIN_TYPE;
sinfo->type = RPMSIG_SIGNATURE_TYPE;
sinfo->range = (RPMSIG_HEADER|RPMSIG_PAYLOAD);
+ sinfo->disabler = RPMVSF_NORSA;
break;
- case RPMSIGTAG_RSA:
+ case RPMSIGTAG_DSA:
tagtype = RPM_BIN_TYPE;
sinfo->type = RPMSIG_SIGNATURE_TYPE;
sinfo->range = RPMSIG_HEADER;
+ sinfo->disabler = RPMVSF_NODSAHEADER;
break;
- case RPMSIGTAG_DSA:
+ case RPMSIGTAG_RSA:
tagtype = RPM_BIN_TYPE;
sinfo->type = RPMSIG_SIGNATURE_TYPE;
sinfo->range = RPMSIG_HEADER;
+ sinfo->disabler = RPMVSF_NORSAHEADER;
break;
case RPMSIGTAG_SHA256:
tagsize = 65; /* includes trailing \0 */
@@ -63,6 +68,7 @@ rpmRC rpmsinfoInit(rpmtd td, const char *origin,
sinfo->hashalgo = PGPHASHALGO_SHA256;
sinfo->type = RPMSIG_DIGEST_TYPE;
sinfo->range = RPMSIG_HEADER;
+ sinfo->disabler = RPMVSF_NOSHA256HEADER;
break;
case RPMSIGTAG_SHA1:
tagsize = 41; /* includes trailing \0 */
@@ -72,6 +78,7 @@ rpmRC rpmsinfoInit(rpmtd td, const char *origin,
sinfo->hashalgo = PGPHASHALGO_SHA1;
sinfo->type = RPMSIG_DIGEST_TYPE;
sinfo->range = RPMSIG_HEADER;
+ sinfo->disabler = RPMVSF_NOSHA1HEADER;
break;
case RPMSIGTAG_MD5:
tagtype = RPM_BIN_TYPE;
@@ -79,6 +86,7 @@ rpmRC rpmsinfoInit(rpmtd td, const char *origin,
sinfo->hashalgo = PGPHASHALGO_MD5;
sinfo->type = RPMSIG_DIGEST_TYPE;
sinfo->range = (RPMSIG_HEADER|RPMSIG_PAYLOAD);
+ sinfo->disabler = RPMVSF_NOMD5;
break;
case RPMSIGTAG_SIZE:
case RPMSIGTAG_PAYLOADSIZE:
@@ -106,6 +114,7 @@ rpmRC rpmsinfoInit(rpmtd td, const char *origin,
sinfo->hashalgo = PGPHASHALGO_SHA256;
sinfo->type = RPMSIG_DIGEST_TYPE;
sinfo->range = RPMSIG_PAYLOAD;
+ sinfo->disabler = RPMVSF_NOPAYLOAD;
/* XXX: get the last element, fail due to tagcount is arbitrary */
if (rpmtdSetIndex(td, rpmtdCount(td)-1) == -1)
tagcount = 0;
diff --git a/lib/signature.h b/lib/signature.h
index 4a7bf7c61..3de3d64f0 100644
--- a/lib/signature.h
+++ b/lib/signature.h
@@ -27,6 +27,7 @@ struct rpmsinfo_s {
int hashalgo;
int range;
int type;
+ int disabler;
unsigned int keyid;
union {
pgpDigParams sig;