RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ package.c signature.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Thu 16 Aug 2007 - 22:50:26 CEST
Message-Id: <20070816205026.EB6A4348455@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   16-Aug-2007 22:50:26
  Branch: HEAD                             Handle: 2007081621502501

  Modified files:
    rpm                     CHANGES
    rpm/lib                 package.c signature.c

  Log:
    - functional sign/verify on --nolead --newmagic packages.

  Summary:
    Revision    Changes     Path
    1.1578      +1  -0      rpm/CHANGES
    2.146       +6  -4      rpm/lib/package.c
    2.177       +2  -3      rpm/lib/signature.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1577 -r1.1578 CHANGES
  --- rpm/CHANGES	16 Aug 2007 19:04:48 -0000	1.1577
  +++ rpm/CHANGES	16 Aug 2007 20:50:25 -0000	1.1578
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: functional sign/verify on --nolead --newmagic packages.
       - jbj: no-operation code paths for --nolead --nosigh packages.
       - jbj: functional sign/verify on --nolead packages.
       - jbj: add rpmkey, a keyctl(1) clone.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/package.c
  ============================================================================
  $ cvs diff -u -r2.145 -r2.146 package.c
  --- rpm/lib/package.c	14 Aug 2007 17:35:55 -0000	2.145
  +++ rpm/lib/package.c	16 Aug 2007 20:50:26 -0000	2.146
  @@ -584,7 +584,7 @@
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrmd5ctx = rpmDigestInit(dig->signature.hash_algo, RPMDIGEST_NONE);
   
  -	b = (unsigned char *) header_magic;
  +	b = (unsigned char *) (_newmagic ? meta_magic : header_magic);
   	nb = sizeof(header_magic);
           (void) rpmDigestUpdate(dig->hdrmd5ctx, b, nb);
           dig->nbytes += nb;
  @@ -628,7 +628,7 @@
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrsha1ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
   
  -	b = (unsigned char *) header_magic;
  +	b = (unsigned char *) (_newmagic ? meta_magic : header_magic);
   	nb = sizeof(header_magic);
           (void) rpmDigestUpdate(dig->hdrsha1ctx, b, nb);
           dig->nbytes += nb;
  @@ -986,12 +986,13 @@
       {	void * uh = NULL;
   	int_32 uht;
   	int_32 uhc;
  +	unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
   
   	if (!headerGetEntry(h, RPMTAG_HEADERIMMUTABLE, &uht, &uh, &uhc))
   	    break;
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrmd5ctx = rpmDigestInit(dig->signature.hash_algo, RPMDIGEST_NONE);
  -	(void) rpmDigestUpdate(dig->hdrmd5ctx, header_magic, sizeof(header_magic));
  +	(void) rpmDigestUpdate(dig->hdrmd5ctx, hmagic, sizeof(header_magic));
   	dig->nbytes += sizeof(header_magic);
   	(void) rpmDigestUpdate(dig->hdrmd5ctx, uh, uhc);
   	dig->nbytes += uhc;
  @@ -1014,12 +1015,13 @@
       {	void * uh = NULL;
   	int_32 uht;
   	int_32 uhc;
  +	unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
   
   	if (!headerGetEntry(h, RPMTAG_HEADERIMMUTABLE, &uht, &uh, &uhc))
   	    break;
   	(void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_DIGEST), 0);
   	dig->hdrsha1ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
  -	(void) rpmDigestUpdate(dig->hdrsha1ctx, header_magic, sizeof(header_magic));
  +	(void) rpmDigestUpdate(dig->hdrsha1ctx, hmagic, sizeof(header_magic));
   	dig->nbytes += sizeof(header_magic);
   	(void) rpmDigestUpdate(dig->hdrsha1ctx, uh, uhc);
   	dig->nbytes += uhc;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/signature.c
  ============================================================================
  $ cvs diff -u -r2.176 -r2.177 signature.c
  --- rpm/lib/signature.c	16 Aug 2007 18:36:04 -0000	2.176
  +++ rpm/lib/signature.c	16 Aug 2007 20:50:26 -0000	2.177
  @@ -153,12 +153,10 @@
   	0x8e, 0xad, 0xe8, 0x3e, 0x00, 0x00, 0x00, 0x00
   };
   
  -#ifdef	NOTYET
   /*@observer@*/ /*@unchecked@*/
   static unsigned char meta_magic[8] = {
   	0x8e, 0xad, 0xe8, 0x3f, 0x00, 0x00, 0x00, 0x00
   };
  -#endif
   
   rpmRC rpmReadSignature(void * _fd, Header * sighp, sigType sig_type,
   		const char ** msg)
  @@ -700,6 +698,7 @@
   	(void) Fclose(fd);	fd = NULL;
   
   	if (headerIsEntry(h, RPMTAG_HEADERIMMUTABLE)) {
  +	    unsigned char * hmagic = (_newmagic ? meta_magic : header_magic);
   	    DIGEST_CTX ctx;
   	    void * uh;
   	    int_32 uht, uhc;
  @@ -711,7 +710,7 @@
   		goto exit;
   	    }
   	    ctx = rpmDigestInit(PGPHASHALGO_SHA1, RPMDIGEST_NONE);
  -	    (void) rpmDigestUpdate(ctx, header_magic, sizeof(header_magic));
  +	    (void) rpmDigestUpdate(ctx, hmagic, sizeof(header_magic));
   	    (void) rpmDigestUpdate(ctx, uh, uhc);
   	    (void) rpmDigestFinal(ctx, &SHA1, NULL, 1);
   	    uh = headerFreeData(uh, uht);
  @@ .
Received on Thu Aug 16 22:50:27 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.