Decide header sigtag based on what was actually written
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 28 Sep 2010 11:55:29 +0000 (14:55 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 28 Sep 2010 11:55:29 +0000 (14:55 +0300)
- makeGPGSignature() figures the signature type by parsing the
  created signature, use that instead of the rather bogus tag
  based on %_signature macro value passed from the cli level.

lib/signature.c

index e025dcf..dd7b508 100644 (file)
@@ -576,12 +576,12 @@ int rpmAddSignature(Header sigh, const char * file, rpmSigTag sigTag,
     case RPMSIGTAG_PGP5:       /* XXX legacy */
     case RPMSIGTAG_PGP:
     case RPMSIGTAG_GPG: {
-       rpmSigTag hdrtag = (sigTag == RPMSIGTAG_GPG) ?
-                           RPMSIGTAG_DSA : RPMSIGTAG_RSA;
+       rpmSigTag hdrtag;
        if (makeGPGSignature(file, &sigTag, &pkt, &pktlen, passPhrase)
         || !sighdrPut(sigh, sigTag, RPM_BIN_TYPE, pkt, pktlen))
            break;
        /* XXX Piggyback a header-only DSA/RSA signature as well. */
+       hdrtag = (sigTag == RPMSIGTAG_GPG) ?  RPMSIGTAG_DSA : RPMSIGTAG_RSA;
        ret = makeHDRSignature(sigh, file, hdrtag, passPhrase);
        } break;
     case RPMSIGTAG_RSA: