rpmpgp.c File Reference
RPMIO. | SIGNATURE.

Routines to handle RFC-2440 detached signatures. More...

`#include "system.h"`
`#include <rpmiotypes.h>`
`#include <rpmio.h>`
`#include <rpmbc.h>`
`#include "debug.h"`
Include dependency graph for rpmpgp.c:

Go to the source code of this file.

## Data Structures

struct | pgpPkt_s

## Macros

#define | _RPMIOB_INTERNAL
#define | _RPMPGP_INTERNAL
#define | TOKEQ(_s, _tok) (!strncmp((_s), (_tok), sizeof(_tok)-1))

## Functions

static void | pgpPrtNL (void)
static void | pgpPrtInt (const char *pre, int i)
static void | pgpPrtStr (const char *pre, const char *s)
static void | pgpPrtHex (const char *pre, const rpmuint8_t *p, size_t plen)
void | pgpPrtVal (const char *pre, pgpValTbl vs, rpmuint8_t val)
| Print an OpenPGP value. More...
int | pgpPrtSubType (const rpmuint8_t *h, size_t hlen, pgpSigType sigtype)
| Print/parse an OpenPGP subtype packet. More...
static int | pgpPrtSigParams (const pgpPkt pp, pgpPubkeyAlgo pubkey_algo, pgpSigType sigtype, const rpmuint8_t *p)
int | pgpPrtSig (const pgpPkt pp)
| Print/parse an OpenPGP signature packet. More...
static const rpmuint8_t * | pgpPrtPubkeyParams (const pgpPkt pp, pgpPubkeyAlgo pubkey_algo, const rpmuint8_t *p)
static const rpmuint8_t * | pgpPrtSeckeyParams (const pgpPkt pp, rpmuint8_t pubkey_algo, const rpmuint8_t *p)
int | pgpPrtKey (const pgpPkt pp)
| Print/parse an OpenPGP key packet. More...
int | pgpPrtUserID (const pgpPkt pp)
| Print/parse an OpenPGP userid packet. More...
int | pgpPrtComment (const pgpPkt pp)
| Print/parse an OpenPGP comment packet. More...
int | pgpPktLen (const rpmuint8_t *pkt, size_t pleft, pgpPkt pp)
| Return lenth of a OpenPGP packet. More...
int | pgpPubkeyFingerprint (const rpmuint8_t *pkt, size_t pktlen, rpmuint8_t *keyid)
| Calculate OpenPGP public key fingerprint. More...
int | pgpExtractPubkeyFingerprint (const char *b64pkt, rpmuint8_t *keyid)
| Extract OpenPGP public key fingerprint from base64 encoded packet. More...
int | pgpPrtPkt (const rpmuint8_t *pkt, size_t pleft)
| Print/parse next OpenPGP packet. More...
void | pgpDigClean (pgpDig dig)
| Release (malloc'd) data from container. More...
static void | pgpDigFini (void *__dig)
static pgpDig | digGetPool (rpmioPool pool)
pgpDig | pgpDigNew (pgpVSFlags vsflags)
| Create a container for parsed OpenPGP packates. More...
pgpDigParams | pgpGetSignature (pgpDig dig)
| Return OpenPGP signature parameters. More...
pgpDigParams | pgpGetPubkey (pgpDig dig)
| Return OpenPGP pubkey parameters. More...
rpmuint32_t | pgpGetSigtag (pgpDig dig)
| Get signature tag. More...
rpmuint32_t | pgpGetSigtype (pgpDig dig)
| Get signature tag type. More...
const void * | pgpGetSig (pgpDig dig)
| Get signature tag data, i.e. More...
rpmuint32_t | pgpGetSiglen (pgpDig dig)
| Get signature tag data length, i.e. More...
int | pgpSetSig (pgpDig dig, rpmuint32_t sigtag, rpmuint32_t sigtype, const void *sig, rpmuint32_t siglen)
| Set signature tag info, i.e. More...
void * | pgpStatsAccumulator (pgpDig dig, int opx)
| Return pgpDig container accumulator structure. More...
int | pgpSetFindPubkey (pgpDig dig, int(*findPubkey)(void *ts, void *dig), void *_ts)
| Set find pubkey vector. More...
int | pgpFindPubkey (pgpDig dig)
| Call find pubkey vector. More...
static int | pgpGrabPkts (const rpmuint8_t *pkts, size_t pktlen, rpmuint8_t ***pppkts, int *pnpkts)
int | pgpPrtPkts (const rpmuint8_t *pkts, size_t pktlen, pgpDig dig, int printing)
| Print/parse a OpenPGP packet(s). More...
pgpArmor | pgpReadPkts (const char *fn, rpmuint8_t **pkt, size_t *pktlen)
| Parse armored OpenPGP packets from a file. More...
char * | pgpArmorWrap (rpmuint8_t atype, const unsigned char *s, size_t ns)
| Wrap a OpenPGP packets in ascii armor for transport. More...
pgpHashAlgo | pgpHashAlgoStringToNumber (const char *name, size_t name_len)
| Convert a hash algorithm "foo" to the internal PGPHASHALGO_FOO number. More...

## Variables

int | _pgp_debug = 0
int | _pgp_print = 0
pgpImplVecs_t * | pgpImplVecs
static pgpDigParams | _digp = NULL
struct pgpValTbl_s | pgpSigTypeTbl []
struct pgpValTbl_s | pgpPubkeyTbl []
struct pgpValTbl_s | pgpSymkeyTbl []
| Symmetric key (string, value) pairs. More...
struct pgpValTbl_s | pgpCompressionTbl []
| Compression (string, value) pairs. More...
struct pgpValTbl_s | pgpHashTbl []
| Hash (string, value) pairs. More...
struct pgpValTbl_s | pgpKeyServerPrefsTbl []
struct pgpValTbl_s | pgpSubTypeTbl []
| Subtype (string, value) pairs. More...
struct pgpValTbl_s | pgpTagTbl []
struct pgpValTbl_s | pgpArmorTbl []
| Armor (string, value) pairs. More...
struct pgpValTbl_s | pgpArmorKeyTbl []
| Armor key (string, value) pairs. More...
static const char * | pgpSigRSA []
static const char * | pgpSigDSA []
static const char * | pgpPublicRSA []
static const char * | pgpPublicDSA []
static const char * | pgpPublicELGAMAL []
pgpVSFlags | pgpDigVSFlags
| Disabler bits(s) for signature/digest checking. More...
rpmioPool | _digPool

## Detailed Description

Routines to handle RFC-2440 detached signatures.

Definition in file rpmpgp.c.

## Macro Definition Documentation

#define _RPMIOB_INTERNAL

Definition at line 8 of file rpmpgp.c.

#define _RPMPGP_INTERNAL

Definition at line 13 of file rpmpgp.c.

#define TOKEQ | ( |  | _s,
|  |  | _tok
| ) |  | (!strncmp((_s), (_tok), sizeof(_tok)-1))

Referenced by pgpReadPkts().

## Function Documentation

static pgpDig digGetPool | ( | rpmioPool | pool | ) |

static

Definition at line 1093 of file rpmpgp.c.

References _digPool, _pgp_debug, pgpDigFini(), rpmioGetPool(), and rpmioNewPool().

Referenced by pgpDigNew().

static void pgpDigFini | ( | void * | __dig | ) |

static

Definition at line 1048 of file rpmpgp.c.

References _free(), pgpDigClean(), pgpImplFree(), and rpmDigestFinal().

Referenced by digGetPool().

static int pgpGrabPkts | ( | const rpmuint8_t * | pkts,
|  | size_t | pktlen,
|  | rpmuint8_t *** | pppkts,
|  | int * | pnpkts
| ) |  |

static

Definition at line 1195 of file rpmpgp.c.

References _free(), alloca(), pgpPktLen(), pgpPkt_s::pktlen, and xcalloc().

Referenced by pgpPrtPkts().

static void pgpPrtHex | ( | const char * | pre,
|  | const rpmuint8_t * | p,
|  | size_t | plen
| ) |  |

static

Definition at line 259 of file rpmpgp.c.

References _pgp_print, and pgpHexStr().

Referenced by pgpPrtComment(), pgpPrtPkt(), pgpPrtSeckeyParams(), pgpPrtSig(), and pgpPrtSubType().

static void pgpPrtInt | ( | const char * | pre,
|  | int | i
| ) |  |

static

Definition at line 239 of file rpmpgp.c.

References _pgp_print.

Referenced by pgpPrtSeckeyParams().

static void pgpPrtNL | ( | void |  | ) |

static

Definition at line 231 of file rpmpgp.c.

References _pgp_print.

Referenced by pgpPrtComment(), pgpPrtKey(), pgpPrtPkt(), pgpPrtPubkeyParams(), pgpPrtSeckeyParams(), pgpPrtSig(), pgpPrtSigParams(), pgpPrtSubType(), and pgpPrtUserID().

static const rpmuint8_t* pgpPrtPubkeyParams | ( | const pgpPkt | pp,
|  | pgpPubkeyAlgo | pubkey_algo,
|  | const rpmuint8_t * | p
| ) |  |

static

Definition at line 614 of file rpmpgp.c.

References _pgp_print, pgpPkt_s::h, pgpPkt_s::hlen, pgpImplMpiItem(), pgpMpiLen(), pgpMpiStr(), pgpPrtNL(), pgpPrtStr(), PGPPUBKEYALGO_DSA, PGPPUBKEYALGO_ELGAMAL_ENCRYPT, PGPPUBKEYALGO_RSA, pgpPublicDSA, pgpPublicELGAMAL, and pgpPublicRSA.

Referenced by pgpPrtKey().

static const rpmuint8_t* pgpPrtSeckeyParams | ( | const pgpPkt | pp,
|  | rpmuint8_t | pubkey_algo,
|  | const rpmuint8_t * | p
| ) |  |

static

Definition at line 672 of file rpmpgp.c.

References _pgp_print, pgpPkt_s::h, pgpPkt_s::hlen, pgpMpiLen(), pgpMpiStr(), pgpPrtHex(), pgpPrtInt(), pgpPrtNL(), pgpPrtStr(), pgpPrtVal(), PGPPUBKEYALGO_DSA, PGPPUBKEYALGO_ELGAMAL_ENCRYPT, and PGPPUBKEYALGO_RSA.

Referenced by pgpPrtKey().

static int pgpPrtSigParams | ( | const pgpPkt | pp,
|  | pgpPubkeyAlgo | pubkey_algo,
|  | pgpSigType | sigtype,
|  | const rpmuint8_t * | p
| ) |  |

static

Definition at line 394 of file rpmpgp.c.

References _pgp_print, pgpPkt_s::h, pgpPkt_s::hlen, pgpImplMpiItem(), pgpMpiLen(), pgpMpiStr(), pgpPrtNL(), pgpPrtStr(), PGPPUBKEYALGO_DSA, PGPPUBKEYALGO_RSA, pgpSigDSA, pgpSigRSA, PGPSIGTYPE_BINARY, and PGPSIGTYPE_TEXT.

Referenced by pgpPrtSig().

static void pgpPrtStr | ( | const char * | pre,
|  | const char * | s
| ) |  |

static

Definition at line 249 of file rpmpgp.c.

References _pgp_print.

Referenced by pgpPrtPubkeyParams(), pgpPrtSeckeyParams(), and pgpPrtSigParams().

## Variable Documentation

pgpDigParams _digp = NULL

static

Definition at line 59 of file rpmpgp.c.

Referenced by pgpPrtKey(), pgpPrtPkt(), pgpPrtPkts(), pgpPrtSig(), pgpPrtSubType(), and pgpPrtUserID().

rpmioPool _digPool

Definition at line 1091 of file rpmpgp.c.

Referenced by digGetPool(), and rpmioClean().

int _pgp_debug = 0

Definition at line 26 of file rpmpgp.c.

Referenced by digGetPool(), pgpMpiSet(), pgpPrtSig(), and rpmbcMpiItem().

int _pgp_print = 0

Definition at line 29 of file rpmpgp.c.

Referenced by pgpMpiSet(), pgpPrtComment(), pgpPrtHex(), pgpPrtInt(), pgpPrtKey(), pgpPrtNL(), pgpPrtPkts(), pgpPrtPubkeyParams(), pgpPrtSeckeyParams(), pgpPrtSig(), pgpPrtSigParams(), pgpPrtStr(), pgpPrtSubType(), pgpPrtUserID(), pgpPrtVal(), and rpmbcMpiItem().

pgpVSFlags pgpDigVSFlags

Disabler bits(s) for signature/digest checking.

Definition at line 1013 of file rpmpgp.c.

Referenced by headerCheck(), pgpDigNew(), rpmcliAllArgCallback(), rpmReadPackageFile(), rpmtsSetVSFlags(), and rpmtsVSFlags().

pgpImplVecs_t* pgpImplVecs

Initial value:
=
static pgpDig _dig = NULL

Definition at line 32 of file rpmpgp.c.

Referenced by rpmioAllArgCallback().

struct pgpValTbl_s pgpKeyServerPrefsTbl[]

Initial value:
= {
{ 0x80, "No-modify" },
{ -1, "Unknown key server preference" },
}

Definition at line 139 of file rpmpgp.c.

const char* pgpPublicDSA[]

static

Initial value:
= {
" p =",
" q =",
" g =",
" y =",
NULL,
}

Definition at line 581 of file rpmpgp.c.

Referenced by pgpPrtPubkeyParams().

const char* pgpPublicELGAMAL[]

static

Initial value:
= {
" p =",
" g =",
" y =",
NULL,
}

Definition at line 598 of file rpmpgp.c.

Referenced by pgpPrtPubkeyParams().

const char* pgpPublicRSA[]

static

Initial value:
= {
" n =",
" e =",
NULL,
}

Definition at line 563 of file rpmpgp.c.

Referenced by pgpPrtPubkeyParams().

const char* pgpSigDSA[]

static

Initial value:
= {
" r =",
" s =",
NULL,
}

Definition at line 387 of file rpmpgp.c.

Referenced by pgpPrtSigParams().

const char* pgpSigRSA[]

static

Initial value:
= {
" m**d =",
NULL,
}

Definition at line 381 of file rpmpgp.c.

Referenced by pgpPrtSigParams().