rpm  5.2.1
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
rpmpgp.h File Reference

OpenPGP constants and structures from RFC-2440. More...

#include <string.h>
#include <popt.h>
#include <rpmiotypes.h>
#include <yarn.h>
Include dependency graph for rpmpgp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pgpValTbl_s
 
struct  pgpPktPubkey_s
 5.1. More...
 
struct  pgpPktSigV3_s
 5.2.2. More...
 
struct  pgpPktSigV4_s
 5.2.3. More...
 
union  pgpPktSig_u
 5.2. More...
 
struct  pgpPktSymkey_s
 5.3. More...
 
struct  pgpPktOnepass_s
 5.4. More...
 
struct  pgpPktKeyV3_s
 5.5.1. More...
 
struct  pgpPktKeyV4_s
 The version 4 format is similar to the version 3 format except for the absence of a validity period. More...
 
union  pgpPktKey_u
 5.5.3. More...
 
struct  pgpPktCdata_s
 5.6. More...
 
struct  pgpPktEdata_s
 5.7. More...
 
struct  pgpPktLdata_s
 5.8. More...
 
struct  pgpPktTrust_s
 5.10. More...
 
struct  pgpPktUid_s
 5.11. More...
 
union  pgpPktPre_u
 
struct  pgpImplVecs_s
 

Macros

#define PGPARMOR_ERROR   PGPARMOR_ERR_NO_BEGIN_PGP
 
#define pgpDigUnlink(_dig, _msg)   ((pgpDig)rpmioUnlinkPoolItem((rpmioItem)(_dig), _msg, __FILE__, __LINE__))
 
#define pgpDigLink(_dig, _msg)   ((pgpDig)rpmioLinkPoolItem((rpmioItem)(_dig), _msg, __FILE__, __LINE__))
 
#define pgpDigFree(_dig, _msg)   ((pgpDig)rpmioFreePoolItem((rpmioItem)(_dig), _msg, __FILE__, __LINE__))
 
#define CRC24_INIT   0xb704ce
 
#define CRC24_POLY   0x1864cfb
 

Typedefs

typedef struct pgpValTbl_spgpValTbl
 
typedef enum pgpTag_e pgpTag
 4.3. More...
 
typedef struct pgpPktPubkey_s pgpPktPubkey
 5.1. More...
 
typedef enum pgpSigType_e pgpSigType
 5.2.1. More...
 
typedef enum pgpPubkeyAlgo_e pgpPubkeyAlgo
 9.1. More...
 
typedef enum pgpSymkeyAlgo_e pgpSymkeyAlgo
 9.2. More...
 
typedef enum pgpCompressAlgo_e pgpCompressAlgo
 9.3. More...
 
typedef struct pgpPktSigV3_spgpPktSigV3
 5.2.2. More...
 
typedef struct pgpPktSigV4_spgpPktSigV4
 5.2.3. More...
 
typedef enum pgpSubType_e pgpSubType
 5.2.3.1. More...
 
typedef union pgpPktSig_upgpPktSig
 5.2. More...
 
typedef struct pgpPktSymkey_s pgpPktSymkey
 5.3. More...
 
typedef struct pgpPktOnepass_spgpPktOnepass
 5.4. More...
 
typedef struct pgpPktKeyV3_spgpPktKeyV3
 5.5.1. More...
 
typedef struct pgpPktKeyV4_spgpPktKeyV4
 The version 4 format is similar to the version 3 format except for the absence of a validity period. More...
 
typedef union pgpPktKey_u pgpPktKey
 5.5.3. More...
 
typedef struct pgpPktCdata_s pgpPktCdata
 5.6. More...
 
typedef struct pgpPktEdata_s pgpPktEdata
 5.7. More...
 
typedef struct pgpPktLdata_s pgpPktLdata
 5.8. More...
 
typedef struct pgpPktTrust_s pgpPktTrust
 5.10. More...
 
typedef struct pgpPktUid_s pgpPktUid
 5.11. More...
 
typedef enum pgpArmor_e pgpArmor
 
typedef enum pgpArmorKey_e pgpArmorKey
 
typedef int(* pgpImplSet_t )(DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
 
typedef int(* pgpImplVerify_t )(pgpDig dig)
 
typedef int(* pgpImplMpiItem_t )(const char *pre, pgpDig dig, int itemno, const rpmuint8_t *p, const rpmuint8_t *pend)
 
typedef void(* pgpImplClean_t )(void *impl)
 
typedef void *(* pgpImplFree_t )(void *impl)
 
typedef void *(* pgpImplInit_t )(void)
 
typedef struct pgpImplVecs_s pgpImplVecs_t
 

Enumerations

enum  pgpTag_e {
  PGPTAG_RESERVED = 0, PGPTAG_PUBLIC_SESSION_KEY = 1, PGPTAG_SIGNATURE = 2, PGPTAG_SYMMETRIC_SESSION_KEY = 3,
  PGPTAG_ONEPASS_SIGNATURE = 4, PGPTAG_SECRET_KEY = 5, PGPTAG_PUBLIC_KEY = 6, PGPTAG_SECRET_SUBKEY = 7,
  PGPTAG_COMPRESSED_DATA = 8, PGPTAG_SYMMETRIC_DATA = 9, PGPTAG_MARKER = 10, PGPTAG_LITERAL_DATA = 11,
  PGPTAG_TRUST = 12, PGPTAG_USER_ID = 13, PGPTAG_PUBLIC_SUBKEY = 14, PGPTAG_COMMENT_OLD = 16,
  PGPTAG_PHOTOID = 17, PGPTAG_ENCRYPTED_MDC = 18, PGPTAG_MDC = 19, PGPTAG_PRIVATE_60 = 60,
  PGPTAG_COMMENT = 61, PGPTAG_PRIVATE_62 = 62, PGPTAG_CONTROL = 63
}
 4.3. More...
 
enum  pgpSigType_e {
  PGPSIGTYPE_BINARY = 0x00, PGPSIGTYPE_TEXT = 0x01, PGPSIGTYPE_STANDALONE = 0x02, PGPSIGTYPE_GENERIC_CERT = 0x10,
  PGPSIGTYPE_PERSONA_CERT = 0x11, PGPSIGTYPE_CASUAL_CERT = 0x12, PGPSIGTYPE_POSITIVE_CERT = 0x13, PGPSIGTYPE_SUBKEY_BINDING = 0x18,
  PGPSIGTYPE_SIGNED_KEY = 0x1F, PGPSIGTYPE_KEY_REVOKE = 0x20, PGPSIGTYPE_SUBKEY_REVOKE = 0x28, PGPSIGTYPE_CERT_REVOKE = 0x30,
  PGPSIGTYPE_TIMESTAMP = 0x40, PGPSIGTYPE_CONFIRM = 0x50
}
 5.2.1. More...
 
enum  pgpPubkeyAlgo_e {
  PGPPUBKEYALGO_RSA = 1, PGPPUBKEYALGO_RSA_ENCRYPT = 2, PGPPUBKEYALGO_RSA_SIGN = 3, PGPPUBKEYALGO_ELGAMAL_ENCRYPT = 16,
  PGPPUBKEYALGO_DSA = 17, PGPPUBKEYALGO_EC = 18, PGPPUBKEYALGO_ECDSA = 19, PGPPUBKEYALGO_ELGAMAL = 20,
  PGPPUBKEYALGO_DH = 21
}
 9.1. More...
 
enum  pgpSymkeyAlgo_e {
  PGPSYMKEYALGO_PLAINTEXT = 0, PGPSYMKEYALGO_IDEA = 1, PGPSYMKEYALGO_TRIPLE_DES = 2, PGPSYMKEYALGO_CAST5 = 3,
  PGPSYMKEYALGO_BLOWFISH = 4, PGPSYMKEYALGO_SAFER = 5, PGPSYMKEYALGO_DES_SK = 6, PGPSYMKEYALGO_AES_128 = 7,
  PGPSYMKEYALGO_AES_192 = 8, PGPSYMKEYALGO_AES_256 = 9, PGPSYMKEYALGO_TWOFISH = 10, PGPSYMKEYALGO_NOENCRYPT = 110
}
 9.2. More...
 
enum  pgpCompressAlgo_e { PGPCOMPRESSALGO_NONE = 0, PGPCOMPRESSALGO_ZIP = 1, PGPCOMPRESSALGO_ZLIB = 2, PGPCOMPRESSALGO_BZIP2 = 3 }
 9.3. More...
 
enum  pgpSubType_e {
  PGPSUBTYPE_NONE = 0, PGPSUBTYPE_SIG_CREATE_TIME = 2, PGPSUBTYPE_SIG_EXPIRE_TIME = 3, PGPSUBTYPE_EXPORTABLE_CERT = 4,
  PGPSUBTYPE_TRUST_SIG = 5, PGPSUBTYPE_REGEX = 6, PGPSUBTYPE_REVOCABLE = 7, PGPSUBTYPE_KEY_EXPIRE_TIME = 9,
  PGPSUBTYPE_ARR = 10, PGPSUBTYPE_PREFER_SYMKEY = 11, PGPSUBTYPE_REVOKE_KEY = 12, PGPSUBTYPE_ISSUER_KEYID = 16,
  PGPSUBTYPE_NOTATION = 20, PGPSUBTYPE_PREFER_HASH = 21, PGPSUBTYPE_PREFER_COMPRESS = 22, PGPSUBTYPE_KEYSERVER_PREFERS = 23,
  PGPSUBTYPE_PREFER_KEYSERVER = 24, PGPSUBTYPE_PRIMARY_USERID = 25, PGPSUBTYPE_POLICY_URL = 26, PGPSUBTYPE_KEY_FLAGS = 27,
  PGPSUBTYPE_SIGNER_USERID = 28, PGPSUBTYPE_REVOKE_REASON = 29, PGPSUBTYPE_FEATURES = 30, PGPSUBTYPE_SIG_TARGET = 31,
  PGPSUBTYPE_EMBEDDED_SIG = 32, PGPSUBTYPE_INTERNAL_100 = 100, PGPSUBTYPE_INTERNAL_101 = 101, PGPSUBTYPE_INTERNAL_102 = 102,
  PGPSUBTYPE_INTERNAL_103 = 103, PGPSUBTYPE_INTERNAL_104 = 104, PGPSUBTYPE_INTERNAL_105 = 105, PGPSUBTYPE_INTERNAL_106 = 106,
  PGPSUBTYPE_INTERNAL_107 = 107, PGPSUBTYPE_INTERNAL_108 = 108, PGPSUBTYPE_INTERNAL_109 = 109, PGPSUBTYPE_INTERNAL_110 = 110,
  PGPSUBTYPE_CRITICAL = 128
}
 5.2.3.1. More...
 
enum  pgpArmor_e {
  PGPARMOR_ERR_CRC_CHECK = -7, PGPARMOR_ERR_BODY_DECODE = -6, PGPARMOR_ERR_CRC_DECODE = -5, PGPARMOR_ERR_NO_END_PGP = -4,
  PGPARMOR_ERR_UNKNOWN_PREAMBLE_TAG = -3, PGPARMOR_ERR_UNKNOWN_ARMOR_TYPE = -2, PGPARMOR_ERR_NO_BEGIN_PGP = -1, PGPARMOR_NONE = 0,
  PGPARMOR_MESSAGE = 1, PGPARMOR_PUBKEY = 2, PGPARMOR_SIGNATURE = 3, PGPARMOR_SIGNED_MESSAGE = 4,
  PGPARMOR_FILE = 5, PGPARMOR_PRIVKEY = 6, PGPARMOR_SECKEY = 7
}
 
enum  pgpArmorKey_e {
  PGPARMORKEY_VERSION = 1, PGPARMORKEY_COMMENT = 2, PGPARMORKEY_MESSAGEID = 3, PGPARMORKEY_HASH = 4,
  PGPARMORKEY_CHARSET = 5
}
 

Functions

static unsigned int pgpGrab (const rpmuint8_t *s, size_t nbytes)
 Return (native-endian) integer from big-endian representation. More...
 
static unsigned int pgpLen (const rpmuint8_t *s, unsigned int *lenp)
 Return length of an OpenPGP packet. More...
 
static unsigned int pgpMpiBits (const rpmuint8_t *p)
 Return no. More...
 
static unsigned int pgpMpiLen (const rpmuint8_t *p)
 Return no. More...
 
static char * pgpHexCvt (char *t, const rpmuint8_t *s, size_t nbytes)
 Convert to hex. More...
 
static char * pgpHexStr (const rpmuint8_t *p, size_t plen)
 Return hex formatted representation of bytes. More...
 
static const char * pgpMpiStr (const rpmuint8_t *p)
 Return hex formatted representation of a multiprecision integer. More...
 
static const char * pgpValStr (pgpValTbl vs, rpmuint8_t val)
 Return string representation of am OpenPGP value. More...
 
static int pgpValTok (pgpValTbl vs, const char *s, const char *se)
 Return value of an OpenPGP string. More...
 
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...
 
int pgpPrtSig (const pgpPkt pp)
 Print/parse an OpenPGP signature packet. More...
 
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 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 pgpPktLen (const rpmuint8_t *pkt, size_t pleft, pgpPkt pp)
 Return lenth of a OpenPGP packet. More...
 
int pgpPrtPkt (const rpmuint8_t *pkt, size_t pleft)
 Print/parse next OpenPGP packet. More...
 
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...
 
pgpDig pgpDigUnlink (pgpDig dig, const char *msg)
 Unreference a signature parameters instance. More...
 
pgpDig pgpDigLink (pgpDig dig, const char *msg)
 Reference a signature parameters instance. More...
 
pgpDig pgpDigFree (pgpDig dig)
 Destroy a container for parsed OpenPGP packates. More...
 
pgpDig pgpDigNew (pgpVSFlags vsflags)
 Create a container for parsed OpenPGP packates. More...
 
void pgpDigClean (pgpDig dig)
 Release (malloc'd) data from container. More...
 
pgpDigParams pgpGetPubkey (const pgpDig dig)
 Return OpenPGP pubkey parameters. More...
 
pgpDigParams pgpGetSignature (const pgpDig dig)
 Return OpenPGP signature parameters. More...
 
rpmuint32_t pgpGetSigtag (const pgpDig dig)
 Get signature tag. More...
 
rpmuint32_t pgpGetSigtype (const pgpDig dig)
 Get signature tag type. More...
 
const void * pgpGetSig (const pgpDig dig)
 Get signature tag data, i.e. More...
 
rpmuint32_t pgpGetSiglen (const 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 pgpIsPkt (const rpmuint8_t *p, pgpTag *tagp)
 Is buffer at beginning of an OpenPGP packet? More...
 
static unsigned int pgpCRC (const rpmuint8_t *octets, size_t len)
 Return CRC of a buffer. More...
 
static int pgpImplSetRSA (DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
 
static int pgpImplVerifyRSA (pgpDig dig)
 
static int pgpImplSetDSA (DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
 
static int pgpImplVerifyDSA (pgpDig dig)
 
static int pgpImplSetECDSA (DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)
 
static int pgpImplVerifyECDSA (pgpDig dig)
 
static int pgpImplMpiItem (const char *pre, pgpDig dig, int itemno, const rpmuint8_t *p, const rpmuint8_t *pend)
 
static void pgpImplClean (void *impl)
 
static void * pgpImplFree (void *impl)
 
static void * pgpImplInit (void)
 

Variables

struct pgpValTbl_s pgpTagTbl []
 
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 pgpSubTypeTbl []
 Subtype (string, value) pairs. More...
 
struct pgpValTbl_s pgpArmorTbl []
 Armor (string, value) pairs. More...
 
struct pgpValTbl_s pgpArmorKeyTbl []
 Armor key (string, value) pairs. More...
 
pgpVSFlags pgpDigVSFlags
 Disabler bits(s) for signature/digest checking. More...
 
pgpImplVecs_tpgpImplVecs
 

Detailed Description

OpenPGP constants and structures from RFC-2440.

Text from RFC-2440 in comments is Copyright (C) The Internet Society (1998). All Rights Reserved.

Definition in file rpmpgp.h.

Macro Definition Documentation

#define CRC24_INIT   0xb704ce

Definition at line 1561 of file rpmpgp.h.

Referenced by pgpCRC().

#define CRC24_POLY   0x1864cfb

Definition at line 1562 of file rpmpgp.h.

Referenced by pgpCRC().

#define PGPARMOR_ERROR   PGPARMOR_ERR_NO_BEGIN_PGP

Definition at line 993 of file rpmpgp.h.

#define pgpDigFree (   _dig,
  _msg 
)    ((pgpDig)rpmioFreePoolItem((rpmioItem)(_dig), _msg, __FILE__, __LINE__))

Definition at line 1389 of file rpmpgp.h.

#define pgpDigLink (   _dig,
  _msg 
)    ((pgpDig)rpmioLinkPoolItem((rpmioItem)(_dig), _msg, __FILE__, __LINE__))

Definition at line 1378 of file rpmpgp.h.

#define pgpDigUnlink (   _dig,
  _msg 
)    ((pgpDig)rpmioUnlinkPoolItem((rpmioItem)(_dig), _msg, __FILE__, __LINE__))

Definition at line 1366 of file rpmpgp.h.

Typedef Documentation

typedef void(* pgpImplClean_t)(void *impl)

Definition at line 1607 of file rpmpgp.h.

typedef void*(* pgpImplFree_t)(void *impl)

Definition at line 1612 of file rpmpgp.h.

typedef void*(* pgpImplInit_t)(void)

Definition at line 1617 of file rpmpgp.h.

typedef int(* pgpImplMpiItem_t)(const char *pre, pgpDig dig, int itemno, const rpmuint8_t *p,const rpmuint8_t *pend)

Definition at line 1600 of file rpmpgp.h.

typedef int(* pgpImplSet_t)(DIGEST_CTX ctx, pgpDig dig, pgpDigParams sigp)

Definition at line 1590 of file rpmpgp.h.

typedef struct pgpImplVecs_s pgpImplVecs_t
typedef int(* pgpImplVerify_t)(pgpDig dig)

Definition at line 1595 of file rpmpgp.h.

typedef struct pgpValTbl_s * pgpValTbl

Function Documentation

static void pgpImplClean ( void *  impl)
inlinestatic

Definition at line 1709 of file rpmpgp.h.

References pgpImplVecs_s::_pgpClean.

Referenced by pgpDigClean().

static void* pgpImplFree ( void *  impl)
inlinestatic

Definition at line 1721 of file rpmpgp.h.

References pgpImplVecs_s::_pgpFree.

Referenced by pgpDigFini().

static void* pgpImplInit ( void  )
inlinestatic

Definition at line 1730 of file rpmpgp.h.

References pgpImplVecs_s::_pgpInit.

Referenced by pgpDigNew().

static int pgpImplMpiItem ( const char *  pre,
pgpDig  dig,
int  itemno,
const rpmuint8_t p,
const rpmuint8_t pend 
)
inlinestatic

Definition at line 1699 of file rpmpgp.h.

References pgpImplVecs_s::_pgpMpiItem.

Referenced by pgpPrtPubkeyParams(), and pgpPrtSigParams().

static int pgpImplSetDSA ( DIGEST_CTX  ctx,
pgpDig  dig,
pgpDigParams  sigp 
)
inlinestatic

Definition at line 1663 of file rpmpgp.h.

References pgpImplVecs_s::_pgpSetDSA.

Referenced by rpmnsProbeSignature(), and verifyDSA().

static int pgpImplSetECDSA ( DIGEST_CTX  ctx,
pgpDig  dig,
pgpDigParams  sigp 
)
inlinestatic

Definition at line 1681 of file rpmpgp.h.

References pgpImplVecs_s::_pgpSetECDSA.

static int pgpImplSetRSA ( DIGEST_CTX  ctx,
pgpDig  dig,
pgpDigParams  sigp 
)
inlinestatic

Definition at line 1645 of file rpmpgp.h.

References pgpImplVecs_s::_pgpSetRSA.

Referenced by rpmnsProbeSignature(), and verifyRSA().

static int pgpImplVerifyDSA ( pgpDig  dig)
inlinestatic

Definition at line 1672 of file rpmpgp.h.

References pgpImplVecs_s::_pgpVerifyDSA.

Referenced by rpmnsProbeSignature(), and verifyDSA().

static int pgpImplVerifyECDSA ( pgpDig  dig)
inlinestatic

Definition at line 1690 of file rpmpgp.h.

References pgpImplVecs_s::_pgpVerifyECDSA.

static int pgpImplVerifyRSA ( pgpDig  dig)
inlinestatic

Definition at line 1654 of file rpmpgp.h.

References pgpImplVecs_s::_pgpVerifyRSA.

Referenced by rpmnsProbeSignature(), and verifyRSA().

Variable Documentation

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

Definition at line 32 of file rpmpgp.c.

Referenced by rpmioAllArgCallback().