Hello,

I would like to propose a new attempt at Manifest signatures. Instead
of using a single per-Manifest signature, we would keep separate
signatures for each of the files, as an additional (optional) hash
type.


Motivation
----------
The current signing approach gives all the responsibility for Manifest
signature to the developer who committed last update to the ebuild
directory regardless of the actual commit significance.

Consider the following: Dev A is the primary package maintainer. He/she
reviewed all the ebuilds and committed a signed Manifest. Then Dev B
performs a slight cleanup of the ebuild directory. He/she modifies
metadata.xml a little and/or removes an old ebuild.

The actual ebuilds weren't modified -- yet Dev B has to sign all
of them once again. Moreover, if Dev B doesn't use Manifest signing,
the signature from Dev A is lost.


The solution
------------
As a solution for this I suggest making the GPG signatures per-file,
simply creating an additional hash type for them. For example,
a single Manifest line would look like:

EBUILD foo-1.ebuild 1000 RMD160 ... SHA1 ... SHA256 ... GPG ...

Where the GPG signature will be an explicit signature done by the dev
modifying (or reviewing) a particular file. Then, if another dev
modifies a single file, the signatures for other files would be
untouched.


Potential issues
----------------
This signing model does not provide a mechanism for signing file
removals. In other words, if a dev does remove files only, he/she won't
leave any signature changes at all. If there's a reason to do that, we
can consider using a complete Manifest file signature in parallel.

-- 
Best regards,
Michał Górny

Attachment: signature.asc
Description: PGP signature

Reply via email to