teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone

Blame rpm-4.7.0-rsa-v4.patch

Panu Matilainen 9ea2c1
commit 452f162ef51d4c6484e93c2b0bc5866c10c8b734
Panu Matilainen 9ea2c1
Author: Panu Matilainen <pmatilai@redhat.com>
Panu Matilainen 9ea2c1
Date:   Wed Mar 4 13:08:30 2009 +0200
Panu Matilainen 9ea2c1
Panu Matilainen 9ea2c1
    Handle V4 signature trailer for RSA too (ticket #34)
Panu Matilainen 9ea2c1
    (cherry picked from commit d50db40ceed7083467f7b548da7b2fbe96aaec61)
Panu Matilainen 9ea2c1
Panu Matilainen 9ea2c1
diff --git a/lib/signature.c b/lib/signature.c
Panu Matilainen 9ea2c1
index feafc5e..9ca8da5 100644
Panu Matilainen 9ea2c1
--- a/lib/signature.c
Panu Matilainen 9ea2c1
+++ b/lib/signature.c
Panu Matilainen 9ea2c1
@@ -1194,17 +1194,16 @@ verifyRSASignature(rpmKeyring keyring, rpmtd sigtd, pgpDig dig, char ** msg,
Panu Matilainen 9ea2c1
 	if (sigp->hash != NULL)
Panu Matilainen 9ea2c1
 	    xx = rpmDigestUpdate(ctx, sigp->hash, sigp->hashlen);
Panu Matilainen 9ea2c1
 
Panu Matilainen 9ea2c1
-#ifdef	NOTYET	/* XXX not for binary/text signatures as in packages. */
Panu Matilainen 9ea2c1
-	if (!(sigp->sigtype == PGPSIGTYPE_BINARY || sigp->sigtype == PGP_SIGTYPE_TEXT)) {
Panu Matilainen 9ea2c1
-	    size_t nb = dig->nbytes + sigp->hashlen;
Panu Matilainen 9ea2c1
+	if (sigp->version == 4) {
Panu Matilainen 9ea2c1
+	    /* V4 trailer is six octets long (rfc4880) */
Panu Matilainen 9ea2c1
 	    uint8_t trailer[6];
Panu Matilainen 9ea2c1
+	    uint32_t nb = sigp->hashlen;
Panu Matilainen 9ea2c1
 	    nb = htonl(nb);
Panu Matilainen 9ea2c1
-	    trailer[0] = 0x4;
Panu Matilainen 9ea2c1
+	    trailer[0] = sigp->version;
Panu Matilainen 9ea2c1
 	    trailer[1] = 0xff;
Panu Matilainen 9ea2c1
-	    memcpy(trailer+2, &nb, sizeof(nb));
Panu Matilainen 9ea2c1
+	    memcpy(trailer+2, &nb, 4);
Panu Matilainen 9ea2c1
 	    xx = rpmDigestUpdate(ctx, trailer, sizeof(trailer));
Panu Matilainen 9ea2c1
 	}
Panu Matilainen 9ea2c1
-#endif
Panu Matilainen 9ea2c1
 
Panu Matilainen 9ea2c1
 	xx = rpmDigestFinal(ctx, (void **)&dig->md5, &dig->md5len, 0);
Panu Matilainen 9ea2c1