2010-09-20 6 views
5

Come visualizzato da rpm -qi package?C'è un modo per ottenere l'ID chiave della firma RPM installato in modo programmatico?

In realtà non voglio analizzare l'output di rpm -qi. Preferisco usare lo rpm -q --qf, di cui posso controllare il formato e non è soggetto ai capricci estetici di una versione futura.

Ma l'unico tag utile che posso trovare nella pagina man è SIGPGP, che mi ottiene l'intera firma, non solo l'ID della chiave breve. Vedi la differenza:

$ rpm -qi coreutils 
Name  : coreutils     Relocations: (not relocatable) 
Version  : 8.4        Vendor: Fedora Project 
Release  : 8.fc13      Build Date: Tue 20 Jul 2010 05:21:15 AM BRT 
Install Date: Tue 03 Aug 2010 01:58:53 PM BRT  Build Host: x86-17.phx2.fedoraproject.org 
Group  : System Environment/Base  Source RPM: coreutils-8.4-8.fc13.src.rpm 
Size  : 12659257       License: GPLv3+ 
Signature : RSA/SHA256, Tue 20 Jul 2010 03:14:09 PM BRT, Key ID 7edc6ad6e8e40fde 
Packager : Fedora Project 
URL   : http://www.gnu.org/software/coreutils/ 
Summary  : A set of basic GNU tools commonly used in shell scripts 
Description : 
These are the GNU core utilities. This package is the combination of 
the old GNU fileutils, sh-utils, and textutils packages. 

$ rpm -q --qf '%{NAME}\t%{VERSION}\t%{RELEASE}\t%{ARCH}\t%{EPOCH}\t%{SIGPGP}\n' coreutils 
coreutils  8.4  8.fc13 i686 (none) 8902150305004c45e7717edc6ad6e8e40fde010824c50fff6af998d5b67a663e6c165bbb3ff888afbe0961b7a60bab3d9a1605b271bbfaccc2eda4bc121e7bc8300efa0208100eb0961c021db2f0be52d422d21c0906a3252df125454fd4886af63574ed729c1370f583c0d46e4a97ee007b72966d965eed1891aaacf296ba31cb44fb46a20c5b39031b79c4eff66948aa3e79090a5f1ce969d3319ebbd47ff38ef382c64c1d59ba5c4d40b3d31a02620bd26005910ca98b7115ac24a30c2198f194bebb2347041ea094be23f5af2e6bb397736e8aff0dd95b4ebd2301ce00663180bbcf214559c72bc74a902102cdb2485b60c78e90c07ed76ecc78d44fd2ec710eb59937e513a37383b5f79a9a1a3996b614a8c1dc81eb8bd468b24aeceac378ee2da659978b5ebe7ab8b52ddb9342e45b2aa5d7b46c40904b57fd6e5ecf26e651c0dce46edb65ef54d26b73fbe99ac5757648c2e509e00887bb1373d30202a30e978407d9db3426d1f468ed4f88f3b379b14ac74b98167860fa36adc0768d6f33958e17c08a896f5aadcb6b70ce2c104454ab4d5b2e6166de465905d8aac14d5257324d50d78e9dc0b3836adc0817eacf5cd026e53330afefe24c6ad549d29b46f9bef544abfa4a87c66fc64c5281b453f72b3c6e660098c856d18031abb725792788ca6061603046170bfdfffb7772ee55299a2f92c996cd140470dba1b99f3c8e5e4a4f7c159fd0fae3fd1854335615e577fb5d05f5 
+0

programmazione sulla quale lingua? * pacchetto rpm -qi | grep "ID chiave" | cut -d '' -f15 * – karlphillip

risposta

2

Per rispondere alla domanda effettiva, no, non è possibile interrogare direttamente il keyid. Mi sono imbattuto nello stesso problema che hai riscontrato e ho trovato che qualcuno ha effettivamente creato un bug report with redhat per una funzione per richiedere l'aggiunta di questa funzionalità.

Nella segnalazione di bug, il risponditore dice di usare qualcosa come di seguito:

rpm -q --qf "%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{(none}|}| %{NVRA}\n" emacs | cut -d' ' -f11 
1

Qual è il motivo non è possibile agganciare la quota di competenza di SIGPGP con taglio? Ho il forte sospetto che si trovi allo stesso offset in ogni intestazione di rpm, ma è necessario verificare gli RPM da più fonti solo per essere sicuri.

+0

Ora che dici, è lì! Ma è valido per ogni tipo di chiave possibile, allo stesso offset? – JCCyC

+0

Alcuni RPM hanno SIGPGP, altri hanno SIGGPG. L'offset per uno sembra essere 20 e per gli altri 36, rispettivamente. O forse la differenza è perché uno è RSA/SHA256 e l'altro è DSA/SHA1. – JCCyC

+0

Se vuoi davvero seguire questa strada, [this] (http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html#S2-RPM-FILE -FORMAT-HEADER) ti mostrerà il formato del file rpm, la sezione Firma è il dato in cui stai guardando. – vincentleest

Problemi correlati