Main Page Modules Data Structures File List Data Fields Globals Related Pages

# lib/rpmchecksig.c File Reference

Verify the signature of a package. More...

`#include "system.h"`
`#include "rpmio_internal.h"`
`#include <rpmcli.h>`
`#include "rpmdb.h"`
`#include "rpmts.h"`
`#include "rpmlead.h"`
`#include "signature.h"`
`#include "misc.h"`
`#include "debug.h"`

Go to the source code of this file.

## Functions

int | manageFile (FD_t *fdp, const char **fnp, int flags, int rc)
int | copyFile (FD_t *sfdp, const char **sfnp, FD_t *tfdp, const char **tfnp)
| Copy header+payload, calculating digest(s) on the fly. More...
int | getSignid (Header sig, int sigtag, unsigned char *signid)
| Retrieve signer fingerprint from an OpenPGP signature tag. More...
int | rpmReSign (rpmts ts, QVA_t qva, const char **argv)
int | rpmcliImportPubkey (const rpmts ts, const unsigned char *pkt, ssize_t pktlen)
int | rpmcliImportPubkeys (const rpmts ts, QVA_t qva, const char **argv)
int | readFile (FD_t fd, const char *fn, pgpDig dig)
int | rpmVerifySignatures (QVA_t qva, rpmts ts, FD_t fd, const char *fn)
int | rpmcliSign (rpmts ts, QVA_t qva, const char **argv)

## Variables

int | _print_pkts = 0
unsigned char | header_magic [8]

## Detailed Description

Verify the signature of a package.

Definition in file rpmchecksig.c.

## Function Documentation

int copyFile | ( | FD_t * | sfdp,
|  | const char ** | sfnp,
|  | FD_t * | tfdp,
|  | const char ** | tfnp
| ) | `[static]`

| Copy header+payload, calculating digest(s) on the fly. Definition at line 93 of file rpmchecksig.c. References _, Fread, Fstrerror, Fwrite, and manageFile. Referenced by rpmReSign.

int getSignid | ( | Header | sig,
|  | int | sigtag,
|  | unsigned char * | signid
| ) | `[static]`

Retrieve signer fingerprint from an OpenPGP signature tag.

Parameters:

  sig | signature header
  sigtag | signature tag

Return values:

  signid | signer fingerprint

Returns:
  0 on success

Definition at line 138 of file rpmchecksig.c.

References headerFreeData, headerGetEntry, int_32, pgpFreeDig, pgpNewDig, pgpPrtPkts, pgpDig_s::signature, and pgpDigParams_s::signid.

Referenced by rpmReSign.

int manageFile | ( | FD_t * | fdp,
|  | const char ** | fnp,
|  | int | flags,
|  | int | rc
| ) | `[static]`

| Definition at line 31 of file rpmchecksig.c. References _, Fclose, fdFree, fdLink, Ferror, Fopen, Fstrerror, and makeTempFile. Referenced by copyFile, and rpmReSign.

int readFile | ( | FD_t | fd,
|  | const char * | fn,
|  | pgpDig | dig
| ) | `[static]`

Todo:
  If the GPG key was known available, the md5 digest could be skipped.

Definition at line 596 of file rpmchecksig.c.

References _, Fread, Fstrerror, _FDDIGEST_s::hashalgo, _FDDIGEST_s::hashctx, header_magic, HEADER_MAGIC_YES, headerFree, headerFreeData, headerGetEntry, headerIsEntry, headerRead, headerSizeof, int_32, PGPHASHALGO_MD5, PGPHASHALGO_SHA1, RPMDIGEST_NONE, rpmDigestInit, rpmDigestUpdate, and RPMTAG_HEADERIMMUTABLE.

Referenced by rpmVerifySignatures.

int rpmcliImportPubkey | ( | const rpmts | ts,
|  | const unsigned char * | pkt,
|  | ssize_t | pktlen
| ) |

< Lookup type in effect

Definition at line 402 of file rpmchecksig.c.

References _free, b64encode, headerAddEntry, headerAddOrAppendEntry, headerFree, headerNew, headerSprintf, int_32, pgpFreeDig, pgpHexStr, pgpNewDig, pgpPrtPkts, pgpDig_s::pubkey, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, rpmdbAdd, RPMSENSE_EQUAL, RPMSENSE_KEYRING, RPMTAG_BUILDHOST, RPMTAG_BUILDTIME, RPMTAG_DESCRIPTION, RPMTAG_GROUP, RPMTAG_INSTALLTIME, RPMTAG_LICENSE, RPMTAG_NAME, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_PUBKEYS, RPMTAG_RELEASE, RPMTAG_RPMVERSION, RPMTAG_SIZE, RPMTAG_SOURCERPM, RPMTAG_SUMMARY, RPMTAG_VERSION, rpmts, rpmtsGetRdb, rpmtsGetTid, rpmtsOpenDB, pgpDigParams_s::signid, stpcpy, pgpDigParams_s::time, pgpDigParams_s::userid, pgpDigParams_s::version, and xmalloc.

Referenced by rpmcliImportPubkeys, and rpmts_PgpImportPubkey.

int rpmcliSign | ( | rpmts | ts,
|  | QVA_t | qva,
|  | const char ** | argv
| ) |

| Definition at line 994 of file rpmchecksig.c. References Fclose, Ferror, Fopen, rpmcliImportPubkeys, rpmReSign, rpmts, and rpmVerifySignatures. Referenced by main.

int rpmVerifySignatures | ( | QVA_t | qva,
|  | rpmts | ts,
|  | FD_t | fd,
|  | const char * | fn
| ) |

Definition at line 668 of file rpmchecksig.c.

References _, _print_pkts, fdInitDigest, headerFreeIterator, headerInitIterator, headerIsEntry, headerNextIterator, int_32, pgpCleanDig, PGPHASHALGO_MD5, PGPHASHALGO_SHA1, pgpPrtPkts, readFile, readLead, rpmFreeSignature, rpmRC, RPMRC_NOKEY, RPMRC_NOTTRUSTED, RPMRC_OK, rpmReadSignature, rpmts, rpmtsCleanDig, rpmtsDig, rpmtsSetSig, rpmtsSignature, rpmVerifySignature, stpcpy, stpncpy, and pgpDigParams_s::version.

Referenced by rpmcliSign.

## Variable Documentation

int _print_pkts = 0`[static]`

| Definition at line 26 of file rpmchecksig.c. Referenced by rpmVerifySignatures.

unsigned char header_magic[8]`[static]`

Initial value:

     {
            0x8e, 0xad, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00
    }

Definition at line 589 of file rpmchecksig.c.

Referenced by readFile.