rpm
5.4.15
|
Verify the signature of a package. More...
#include "system.h"
#include <rpmio_internal.h>
#include <poptIO.h>
#include <rpmbc.h>
#include <rpmhkp.h>
#include <rpmtag.h>
#include <rpmtypes.h>
#include <rpmevr.h>
#include <rpmdb.h>
#include <rpmtxn.h>
#include <rpmxar.h>
#include <pkgio.h>
#include "signature.h"
#include <rpmts.h>
#include "rpmgi.h"
#include <rpmversion.h>
#include <rpmcli.h>
#include "debug.h"
Go to the source code of this file.
Macros | |
#define | _RPMHKP_INTERNAL /* XXX internal prototypes. */ |
#define | _RPMEVR_INTERNAL /* XXX RPMSENSE_KEYRING */ |
#define | _RPMDB_INTERNAL /* XXX db_txn */ |
#define | _RPMTS_INTERNAL /* XXX ts->hkp */ |
Functions | |
static int | manageFile (FD_t *fdp, const char **fnp, int flags, int rc) |
static int | copyFile (FD_t *sfdp, const char **sfnp, FD_t *tfdp, const char **tfnp) |
Copy header+payload, calculating digest(s) on the fly. More... | |
static int | getSignid (Header sigh, rpmSigTag sigtag, unsigned char *signid) |
Retrieve signer fingerprint from an OpenPGP signature tag. More... | |
static int | rpmReSign (rpmts ts, QVA_t qva, const char **argv) |
Create/modify elements in signature header. More... | |
rpmRC | rpmcliImportPubkey (const rpmts ts, const unsigned char *pkt, ssize_t pktlen) |
Import public key packet(s). More... | |
static int | rpmcliImportPubkeys (const rpmts ts, QVA_t qva, const char **argv) |
Import public key(s). More... | |
static rpmRC | readFile (FD_t fd, const char *fn) |
int | rpmVerifySignatures (QVA_t qva, rpmts ts, void *_fd, const char *fn) |
Check package and header signatures. More... | |
int | rpmcliSign (rpmts ts, QVA_t qva, const char **argv) |
Create/Modify/Check elements from signature header. More... | |
Variables | |
int | _print_pkts = 0 |
Verify the signature of a package.
Definition in file rpmchecksig.c.
#define _RPMDB_INTERNAL /* XXX db_txn */ |
Definition at line 19 of file rpmchecksig.c.
#define _RPMEVR_INTERNAL /* XXX RPMSENSE_KEYRING */ |
Definition at line 17 of file rpmchecksig.c.
#define _RPMHKP_INTERNAL /* XXX internal prototypes. */ |
Definition at line 12 of file rpmchecksig.c.
#define _RPMTS_INTERNAL /* XXX ts->hkp */ |
Definition at line 26 of file rpmchecksig.c.
Copy header+payload, calculating digest(s) on the fly.
Definition at line 110 of file rpmchecksig.c.
References _, Fflush(), Fread(), Fstrerror(), Fwrite(), manageFile(), rpmlog(), and RPMLOG_ERR.
Referenced by rpmReSign().
Retrieve signer fingerprint from an OpenPGP signature tag.
sigh | signature header |
sigtag | signature tag |
signid | signer fingerprint |
Definition at line 159 of file rpmchecksig.c.
References _free(), alloca(), _HE_s::c, headerGet(), _HE_s::p, pgpDigFree(), pgpDigNew(), pgpPktLen(), PGPPUBKEYALGO_UNKNOWN, rpmDataType_u::ptr, rpmhkpLoadSignature(), RPMVSF_DEFAULT, _HE_s::tag, and rpmDataType_u::ui8p.
Referenced by rpmReSign().
|
static |
Definition at line 51 of file rpmchecksig.c.
References _, Fclose(), fdFree(), fdLink(), Ferror(), Fopen(), Fstrerror(), rpmlog(), RPMLOG_ERR, and rpmTempFile().
Referenced by copyFile(), and rpmReSign().
Definition at line 940 of file rpmchecksig.c.
References _, _free(), alloca(), rpmDataType_u::argv, _HE_s::c, fdGetDig(), fdGetXAR(), fdStealDigest(), Ferror(), Fread(), Fstrerror(), headerFree(), headerGet(), headerGetMagic(), headerIsEntry(), headerSizeof(), _HE_s::p, PGPARMOR_PUBKEY, pgpArmorUnwrap(), PGPHASHALGO_SHA1, rpmDataType_u::ptr, RPM_STRING_ARRAY_TYPE, RPMDIGEST_NONE, rpmDigestInit(), rpmDigestUpdate(), rpmiobAppend(), rpmiobFree(), rpmiobNew(), rpmlog(), RPMLOG_ERR, rpmpkgRead(), RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMTAG_HEADERIMMUTABLE, RPMTAG_PUBKEYS, rpmxarNext(), rpmxarPull(), _HE_s::t, and _HE_s::tag.
Referenced by rpmVerifySignatures().
Import public key packet(s).
ts | transaction set |
pkt | pgp pubkey packet(s) |
pktlen | pgp pubkey length |
Definition at line 515 of file rpmchecksig.c.
References _free(), _rpmhkpDumpDig(), alloca(), _HE_s::append, rpmDataType_u::argv, _HE_s::c, d, headerFree(), headerGetMagic(), headerNew(), headerPut(), headerReload(), headerSprintf(), headerUnload(), _HE_s::p, pgpDigFree(), pgpDigNew(), pgpGetPubkey(), pgpGrabPkts(), PGPHASHALGO_SHA1, pgpHexStr(), pgpPktLen(), PGPPUBKEYALGO_UNKNOWN, pgpPubkeyFingerprint(), rpmDataType_u::ptr, RPM_BIN_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, RPM_UINT32_TYPE, rpmdbAdd(), RPMDIGEST_NONE, rpmDigestFinal(), rpmDigestInit(), rpmDigestUpdate(), rpmHeaderFormats, rpmhkpFree(), rpmhkpLink(), rpmhkpLoadKey(), rpmhkpNew(), rpmhkpValidate(), RPMRC_FAIL, RPMRC_NOKEY, RPMRC_NOTFOUND, RPMRC_NOTTRUSTED, RPMRC_OK, RPMSENSE_EQUAL, RPMTAG_ARCH, RPMTAG_BUILDHOST, RPMTAG_BUILDTIME, RPMTAG_DESCRIPTION, RPMTAG_GROUP, RPMTAG_HEADERIMMUTABLE, RPMTAG_INSTALLTIME, RPMTAG_LICENSE, RPMTAG_NAME, RPMTAG_OS, RPMTAG_PACKAGECOLOR, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_PUBKEYS, RPMTAG_RELEASE, RPMTAG_RPMVERSION, RPMTAG_SHA1HEADER, RPMTAG_SIZE, RPMTAG_SOURCERPM, RPMTAG_SUMMARY, RPMTAG_VERSION, rpmtsGetRdb(), rpmtsGetTid(), rpmtsOpenDB(), rpmtxnAbort(), rpmtxnBegin(), rpmtxnCheckpoint(), rpmtxnCommit(), RPMVERSION, RPMVSF_DEFAULT, stpcpy(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, rpmDataType_u::ui32p, v, xmalloc, xstrdup(), and zero.
Referenced by rpmcliImportPubkeys(), and rpmts_PgpImportPubkey().
Import public key(s).
ts | transaction set |
qva | mode flags and parameters |
argv | array of pubkey file names (NULL terminated) |
Definition at line 873 of file rpmchecksig.c.
References _, _free(), i, PGPARMOR_PUBKEY, pgpReadPkts(), rpmcliImportPubkey(), rpmExpand(), rpmlog(), RPMLOG_ERR, RPMRC_OK, and rpmtsClean().
Referenced by rpmcliSign().
Create/Modify/Check elements from signature header.
ts | transaction set |
qva | mode flags and parameters |
argv | array of arguments (NULL terminated) |
Definition at line 1320 of file rpmchecksig.c.
References _, Fclose(), Ferror(), Fopen(), Fstrerror(), FTS_COMFOLLOW, FTS_LOGICAL, FTS_NOSTAT, rpmQVKArguments_s::qva_mode, rpmQVKArguments_s::qva_source, rpmcliImportPubkeys(), RPMDBI_ARGLIST, RPMDBI_FTSWALK, RPMGI_NOHEADER, RPMGI_NONE, rpmgiFree(), rpmgiHdrPath(), rpmgiNew(), rpmgiNext(), rpmgiRc(), rpmgiSetArgs(), rpmioFtsOpts, rpmlog(), RPMLOG_ERR, RPMQV_FTSWALK, RPMRC_NOTFOUND, RPMRC_OK, rpmReSign(), RPMSIGN_ADD_SIGNATURE, RPMSIGN_CHK_SIGNATURE, RPMSIGN_DEL_SIGNATURE, RPMSIGN_IMPORT_PUBKEY, RPMSIGN_NEW_SIGNATURE, RPMSIGN_NONE, and rpmVerifySignatures().
Referenced by main().
Create/modify elements in signature header.
ts | transaction set |
qva | mode flags and parameters |
argv | array of package file names (NULL terminated) |
Definition at line 193 of file rpmchecksig.c.
References _, _free(), alloca(), copyFile(), Fstrerror(), FTS_COMFOLLOW, FTS_LOGICAL, FTS_NOSTAT, getSignid(), headerCopyLoad(), headerDel(), headerFini(), headerFree(), headerGet(), headerInit(), headerLink(), headerNew(), headerNext(), headerPut(), headerReload(), i, manageFile(), mode, _HE_s::p, rpmQVKArguments_s::passPhrase, pgpHexStr(), rpmDataType_u::ptr, rpmQVKArguments_s::qva_mode, rpmQVKArguments_s::qva_source, Rename(), rpmAddSignature(), RPMDBI_ARGLIST, RPMDBI_FTSWALK, RPMGI_NOHEADER, RPMGI_NONE, rpmgiFree(), rpmgiHdrPath(), rpmgiNew(), rpmgiNext(), rpmgiRc(), rpmgiSetArgs(), rpmioFtsOpts, rpmlog(), RPMLOG_ERR, RPMLOG_WARNING, rpmpkgRead(), rpmpkgWrite(), RPMQV_FTSWALK, RPMRC_NOTFOUND, RPMRC_OK, RPMSIGN_DEL_SIGNATURE, RPMSIGTAG_BADSHA1_1, RPMSIGTAG_BADSHA1_2, RPMSIGTAG_DSA, RPMSIGTAG_ECDSA, RPMSIGTAG_GPG, RPMSIGTAG_LEMD5_1, RPMSIGTAG_LEMD5_2, RPMSIGTAG_MD5, RPMSIGTAG_PGP, RPMSIGTAG_PGP5, RPMSIGTAG_RSA, RPMSIGTAG_SHA1, RPMSIGTAG_SIZE, RPMTAG_HEADERSIGNATURES, stpcpy(), _HE_s::tag, and Unlink().
Referenced by rpmcliSign().
Check package and header signatures.
qva | parsed query/verify options |
ts | transaction set |
_fd | package file handle |
fn | package file name |
Definition at line 1051 of file rpmchecksig.c.
References _, _free(), alloca(), b, _HE_s::c, fdInitDigest(), fdSetDig(), headerFini(), headerFree(), headerGet(), headerInit(), headerIsEntry(), headerNext(), _HE_s::p, pgpDigClean(), pgpGetSignature(), PGPHASHALGO_MD5, pgpPktLen(), pgpSetSig(), rpmDataType_u::ptr, rpmQVKArguments_s::qva_flags, readFile(), rpmhkpLoadSignature(), rpmIsVerbose, rpmlog(), RPMLOG_ERR, RPMLOG_NOTICE, rpmpkgRead(), RPMRC_OK, RPMSIGTAG_DSA, RPMSIGTAG_ECDSA, RPMSIGTAG_MD5, RPMSIGTAG_RSA, RPMSIGTAG_SHA1, RPMSIGTAG_SIZE, rpmtsCleanDig(), rpmtsDig(), rpmVerifySignature(), stpcpy(), _HE_s::t, _HE_s::tag, rpmDataType_u::ui8p, VERIFY_DIGEST, and VERIFY_SIGNATURE.
Referenced by rpmcliSign().
int _print_pkts = 0 |
Definition at line 47 of file rpmchecksig.c.