rpmpgp.h File Reference
RPMPGP.

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_s * | pgpValTbl
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_s * | pgpPktSigV3
| 5.2.2. More...
typedef struct pgpPktSigV4_s * | pgpPktSigV4
| 5.2.3. More...
typedef enum pgpSubType_e | pgpSubType
| 5.2.3.1. More...
typedef union pgpPktSig_u * | pgpPktSig
| 5.2. More...
typedef struct pgpPktSymkey_s | pgpPktSymkey
| 5.3. More...
typedef struct pgpPktOnepass_s * | pgpPktOnepass
| 5.4. More...
typedef struct pgpPktKeyV3_s * | pgpPktKeyV3
| 5.5.1. More...
typedef struct pgpPktKeyV4_s * | pgpPktKeyV4
| 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_t * | pgpImplVecs

## 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 | ) |

inline static

Definition at line 1709 of file rpmpgp.h.

References pgpImplVecs_s::_pgpClean.

Referenced by pgpDigClean().

static void* pgpImplFree | ( | void * | impl | ) |

inline static

Definition at line 1721 of file rpmpgp.h.

References pgpImplVecs_s::_pgpFree.

Referenced by pgpDigFini().

static void* pgpImplInit | ( | void |  | ) |

inline static

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
| ) |  |

inline static

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
| ) |  |

inline static

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
| ) |  |

inline static

Definition at line 1681 of file rpmpgp.h.

References pgpImplVecs_s::_pgpSetECDSA.

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

inline static

Definition at line 1645 of file rpmpgp.h.

References pgpImplVecs_s::_pgpSetRSA.

Referenced by rpmnsProbeSignature(), and verifyRSA().

static int pgpImplVerifyDSA | ( | pgpDig | dig | ) |

inline static

Definition at line 1672 of file rpmpgp.h.

References pgpImplVecs_s::_pgpVerifyDSA.

Referenced by rpmnsProbeSignature(), and verifyDSA().

static int pgpImplVerifyECDSA | ( | pgpDig | dig | ) |

inline static

Definition at line 1690 of file rpmpgp.h.

References pgpImplVecs_s::_pgpVerifyECDSA.

static int pgpImplVerifyRSA | ( | pgpDig | dig | ) |

inline static

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().