rpm  5.2.1
Data Structures | Macros | Functions | Variables
rpmpgp.c File Reference

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_tpgpPrtPubkeyParams (const pgpPkt pp, pgpPubkeyAlgo pubkey_algo, const rpmuint8_t *p)
 
static const rpmuint8_tpgpPrtSeckeyParams (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_tpgpImplVecs
 
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
static const rpmuint8_t* pgpPrtPubkeyParams ( const pgpPkt  pp,
pgpPubkeyAlgo  pubkey_algo,
const rpmuint8_t p 
)
static
static const rpmuint8_t* pgpPrtSeckeyParams ( const pgpPkt  pp,
rpmuint8_t  pubkey_algo,
const rpmuint8_t p 
)
static
static int pgpPrtSigParams ( const pgpPkt  pp,
pgpPubkeyAlgo  pubkey_algo,
pgpSigType  sigtype,
const rpmuint8_t p 
)
static
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
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().