RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   11-Apr-2016 00:19:57
  Branch: rpm-5_4                          Handle: 2016041022195700

  Modified files:           (Branch: rpm-5_4)
    rpm/rpmio               rpmhkp.c rpmhkp.h

  Log:
    - rpmhkp: rewrite algorithm parameter loading, avoid pgpPrtPkts()
    laziness.

  Summary:
    Revision    Changes     Path
    2.20.2.14   +25 -12     rpm/rpmio/rpmhkp.c
    2.9.2.3     +1  -1      rpm/rpmio/rpmhkp.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmhkp.c
  ============================================================================
  $ cvs diff -u -r2.20.2.13 -r2.20.2.14 rpmhkp.c
  --- rpm/rpmio/rpmhkp.c        4 Apr 2016 18:31:28 -0000       2.20.2.13
  +++ rpm/rpmio/rpmhkp.c        10 Apr 2016 22:19:57 -0000      2.20.2.14
  @@ -399,9 +399,6 @@
       }
   
       if (p) {
  -#ifdef       DYING
  -     p = pgpPrtPubkeyParams(dig, pp, pubkey_algo, p);
  -#else
        const rpmuint8_t * pend = pp->u.h + pp->hlen;
        const char * rsalbl[] =
                { "    n =", "    e =", NULL };
  @@ -456,7 +453,6 @@
   
        if (p != pend || i != nmpis)
            goto exit;
  -#endif
        rc = 0;
       }
   
  @@ -534,8 +530,13 @@
        goto exit;
       }
       sigp->version = pp->u.h[0];
  +    sigp->pubkey_algo = 0;
  +    sigp->hash_algo = 0;
   
       switch (pp->u.h[0]) {
  +    default:
  +     goto exit;
  +     break;
       case 3: {
        sigp->version = pp->u.r->version;
        sigp->pubkey_algo = pp->u.r->pubkey_algo;
  @@ -624,10 +625,6 @@
   
       /* XXX Load signature paramaters. */
       if (p) {
  -#ifdef       DYING
  -     pgpPrtSigParams(dig, pp,
  -             (pgpPubkeyAlgo)sigp->pubkey_algo, (pgpSigType)sigp->sigtype, p);
  -#else
        const rpmuint8_t * pend = pp->u.h + pp->hlen;
        const char * rsalbl[] = { " m**d =", NULL };
        const char * dsalbl[] = { "    r =", "    s =", NULL };
  @@ -639,8 +636,8 @@
        switch (sigp->pubkey_algo) {
        case PGPPUBKEYALGO_EDDSA:
        default:
  -             goto exit;
  -             break;
  +         goto exit;
  +         break;
        case PGPPUBKEYALGO_RSA:
            lbl = rsalbl; nmpis = 1; mpix = 10;
            break;
  @@ -652,6 +649,23 @@
            break;
        }
   
  +     switch (sigp->hash_algo) {
  +     default:
  +         goto exit;
  +         break;
  +     case PGPHASHALGO_MD5:
  +     case PGPHASHALGO_SHA1:
  +     case PGPHASHALGO_RIPEMD160:
  +     case PGPHASHALGO_MD2:
  +     case PGPHASHALGO_TIGER192:
  +     case PGPHASHALGO_HAVAL_5_160:
  +     case PGPHASHALGO_SHA256:
  +     case PGPHASHALGO_SHA384:
  +     case PGPHASHALGO_SHA512:
  +     case PGPHASHALGO_SHA224:
  +         break;
  +     }
  +
        for (i = 0; i < nmpis && p+2 <= pend; i++) {
            int mpil = pgpMpiLen(p);
            if (mpil < 0)
  @@ -665,12 +679,11 @@
   
        if (p != pend || i != nmpis)
            goto exit;
  -#endif
        rc = 0;
       }
   
   exit:
  -HKPDEBUG((stderr, "<-- %s(%p,%p,%p) rc %d V%u\n", __FUNCTION__, hkp, dig, 
pp, rc, sigp->version));
  +HKPDEBUG((stderr, "<-- %s(%p,%p,%p) rc %d V%u %u/%u\n", __FUNCTION__, hkp, 
dig, pp, rc, sigp->version, sigp->pubkey_algo, sigp->hash_algo));
   
       return rc;
   }
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmhkp.h
  ============================================================================
  $ cvs diff -u -r2.9.2.2 -r2.9.2.3 rpmhkp.h
  --- rpm/rpmio/rpmhkp.h        20 Jul 2014 00:08:43 -0000      2.9.2.2
  +++ rpm/rpmio/rpmhkp.h        10 Apr 2016 22:19:57 -0000      2.9.2.3
  @@ -126,7 +126,6 @@
   rpmRC rpmhkpValidate(/*@null@*/ rpmhkp hkp, /*@null@*/ const char * keyname)
        /*@*/;
   
  -#if defined(_RPMHKP_INTERNAL)
   /**
    * Load values into pubkey params from packet.
    * @param hkp                hkp handle
  @@ -149,6 +148,7 @@
   int rpmhkpLoadSignature(/*@null@*/ rpmhkp hkp, pgpDig dig, pgpPkt pp)
        /*@*/;
   
  +#if defined(_RPMHKP_INTERNAL)
   /**
    * Retrieve/Load the pubkey associated with a signature.
    * @param hkp                hkp handle
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to