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