Re: Re: Invalid checksums in repodata

Jeff Johnson <[email protected]>
Newsgroups gmane.linux.rpm.metadata
Message-ID <[email protected]>
On Oct 11, 2006, at 10:00 AM, Mark McLoughlin wrote:

> On Wed, 2006-10-11 at 09:48 -0400, Jeff Johnson wrote:
>
>> Use a digest on the *.rpm is you truly want to detect any change
>> whatsoever to the package file.
>
> 	Right, but this is a cache of that digest :-)
>

So what is needed is a unique key (based on repo and header metadata,  
not package content) to
retrieve the package file digest from cache that is guaranteed to  
change when the
package file digest changes?

That's more like a tie-breaking, collision avoidance problem then.

I'd generate a key from a digest of constant (not variable as in the  
original patch) set of tag values
from metadata. I.e. hash *all* of
	RPMTAG_SIG*
substituting constant default values for tags that are not present. A  
constant algorithm with missing
data substituted is more appealing (to me) than a variable algorithm  
with variable data, but I 'spose
It Doesn't Really Matter.

A possibly cheap (as in invariant to the details of signature header  
constituent tag values)
way to achieve the above would be to hash the concatenation of  
RPMTAG_PKGID + the offset
of the metadata header.

A hash of  RPMTAG_PKGID+offset will miss certain resigning events  
(and possibly not trigger downloads) but
will catch newly signed packages because the additional signature  
will move the header origin.

> 	(Not disagreeing with anything you've said - i.e. we can fix the  
> cache
> key to use the signature, thereby avoiding cache mis-hits from  
> packages
> using different signatures, but whatever we do will just be a
> heurisitic)
>

Keying off possibly missing signature tags was where this problem  
started.

73 de Jeff
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.