rpmio/rpmpgp.c(3)

NAME
rpmio/rpmpgp.c - Routines to handle RFC-2440 detached signatures.

SYNOPSIS

#include 'system.h'
#include 'rpmio_internal.h'
#include 'debug.h'

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

  Functions
void * _free (const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
void pgpPrtNL (void)
void pgpPrtInt (const char *pre, int i)
void pgpPrtStr (const char *pre, const char *s)
void pgpPrtHex (const char *pre, const byte *p, unsigned int plen)
void pgpPrtVal (const char *pre, pgpValTbl vs, byte val)
const char * pgpMpiHex (const byte *p)
void pgpHexSet (const char *pre, int lbits, mp32number *mpn, const byte *p)
int pgpPrtSubType (const byte *h, unsigned int hlen)
int pgpPrtSigParams (pgpTag tag, byte pubkey_algo, byte sigtype, const byte *p, const byte *h, unsigned int hlen)
int pgpPrtSig (pgpTag tag, const byte *h, unsigned int hlen)
const byte * pgpPrtPubkeyParams (byte pubkey_algo, const byte *p, const byte *h, unsigned int hlen)
const byte * pgpPrtSeckeyParams (byte pubkey_algo, const byte *p, const byte *h, unsigned int hlen)
int pgpPrtKey (pgpTag tag, const byte *h, unsigned int hlen)
int pgpPrtUserID (pgpTag tag, const byte *h, unsigned int hlen)
int pgpPrtComment (pgpTag tag, const byte *h, unsigned int hlen)
int pgpPrtPkt (const byte *pkt)
pgpDig_s * pgpNewDig (void)
pgpDig_s * pgpFreeDig (struct pgpDig_s *dig)
int pgpPrtPkts (const byte *pkts, unsigned int plen, struct pgpDig_s *dig, int printing)
pgpArmor pgpReadPkts (const char *fn, const byte **pkt, size_t *pktlen)

  Variables
int _debug = 0
int _print = 0
pgpDig_s * _dig = NULL
pgpDigParams_s * _digp = NULL
pgpValTbl_s pgpSigTypeTbl []
pgpValTbl_s pgpPubkeyTbl []
pgpValTbl_s pgpSymkeyTbl []
pgpValTbl_s pgpCompressionTbl []
pgpValTbl_s pgpHashTbl []
pgpValTbl_s pgpKeyServerPrefsTbl []
pgpValTbl_s pgpSubTypeTbl []
pgpValTbl_s pgpTagTbl []
pgpValTbl_s pgpArmorTbl []
pgpValTbl_s pgpArmorKeyTbl []
const char * pgpSigRSA []
const char * pgpSigDSA []
const char * pgpPublicRSA []
const char * pgpSecretRSA []
const char * pgpPublicDSA []
const char * pgpSecretDSA []
const char * pgpPublicELGAMAL []
const char * pgpSecretELGAMAL []

DETAILED DESCRIPTION

Routines to handle RFC-2440 detached signatures.

Definition in file rpmpgp.c.

DEFINE DOCUMENTATION

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

FUNCTION DOCUMENTATION

  void* _free (const void * p) [inline, static]

Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.

Parameters:

p   memory to free

Returns:
NULL always

Definition at line 251 of file rpmpgp.c.

  struct pgpDig_s* pgpFreeDig (struct pgpDig_s * dig)

Definition at line 995 of file rpmpgp.c.

References _free, pgpDig_s::c, pgpDigParams_s::hash, pgpDig_s::hm, pgpDig_s::m, pgpDig_s::md5, pgpDig_s::md5ctx, pgpDigParams_s::params, pgpDig_s::pubkey, pgpDig_s::r, rpmDigestFinal, pgpDig_s::rsa_pk, pgpDig_s::rsahm, pgpDig_s::s, pgpDig_s::sha1, pgpDig_s::sha1ctx, pgpDig_s::signature, and pgpDigParams_s::userid.

  void pgpHexSet (const char * pre, int lbits, mp32number * mpn, const byte * p) [static]

Definition at line 318 of file rpmpgp.c.

References _debug, _free, _print, pgpMpiBits, pgpMpiHex, and xmalloc.

Referenced by pgpPrtSigParams.

  const char* pgpMpiHex (const byte * p) [static]

Definition at line 309 of file rpmpgp.c.

References pgpHexCvt, and pgpMpiLen.

Referenced by pgpHexSet, pgpPrtPubkeyParams, and pgpPrtSigParams.

  struct pgpDig_s* pgpNewDig (void)

Definition at line 989 of file rpmpgp.c.

References xcalloc.

Referenced by rpmdbAdd, and rpmdbRemove.

  int pgpPrtComment (pgpTag tag, const byte * h, unsigned int hlen)

Definition at line 894 of file rpmpgp.c.

References pgpPrtHex, pgpPrtNL, pgpPrtVal, and pgpTag.

  void pgpPrtHex (const char * pre, const byte * p, unsigned int plen) [static]

Definition at line 286 of file rpmpgp.c.

References _print, and pgpHexStr.

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

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

Definition at line 266 of file rpmpgp.c.

References _print.

Referenced by pgpPrtSeckeyParams.

  int pgpPrtKey (pgpTag tag, const byte * h, unsigned int hlen)

Definition at line 815 of file rpmpgp.c.

References pgpGrab, pgpPrtNL, pgpPrtPubkeyParams, pgpPrtSeckeyParams, pgpPrtVal, pgpTag, PGPTAG_PUBLIC_KEY, PGPTAG_PUBLIC_SUBKEY, pgpPktKeyV4_s::pubkey_algo, pgpDigParams_s::pubkey_algo, pgpPktKeyV3_s::pubkey_algo, pgpDigParams_s::tag, pgpPktKeyV4_s::time, pgpDigParams_s::time, pgpPktKeyV3_s::time, pgpPktKeyV3_s::valid, pgpPktKeyV4_s::version, pgpPktKeyV3_s::version, and pgpDigParams_s::version.

  void pgpPrtNL (void) [static]

Definition at line 258 of file rpmpgp.c.

References _print.

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

  int pgpPrtPkt (const byte * pkt)

Definition at line 920 of file rpmpgp.c.

References pgpGrab, pgpLen, pgpPrtComment, pgpPrtHex, pgpPrtKey, pgpPrtNL, pgpPrtSig, pgpPrtUserID, pgpPrtVal, pgpTag, PGPTAG_COMMENT, PGPTAG_COMMENT_OLD, PGPTAG_COMPRESSED_DATA, PGPTAG_CONTROL, PGPTAG_ENCRYPTED_MDC, PGPTAG_LITERAL_DATA, PGPTAG_MARKER, PGPTAG_MDC, PGPTAG_PHOTOID, PGPTAG_PRIVATE_60, PGPTAG_PRIVATE_62, PGPTAG_PUBLIC_KEY, PGPTAG_PUBLIC_SESSION_KEY, PGPTAG_PUBLIC_SUBKEY, PGPTAG_RESERVED, PGPTAG_SECRET_KEY, PGPTAG_SECRET_SUBKEY, PGPTAG_SIGNATURE, PGPTAG_SYMMETRIC_DATA, PGPTAG_SYMMETRIC_SESSION_KEY, PGPTAG_TRUST, and PGPTAG_USER_ID.

  int pgpPrtPkts (const byte * pkts, unsigned int plen, struct pgpDig_s * dig, int printing)

Definition at line 1038 of file rpmpgp.c.

References _print, pgpPrtPkt, pgpTag, PGPTAG_SIGNATURE, pgpDig_s::pubkey, pgpDig_s::signature, and pgpDigParams_s::tag.

  const byte* pgpPrtPubkeyParams (byte pubkey_algo, const byte * p, const byte * h, unsigned int hlen) [static]

Definition at line 652 of file rpmpgp.c.

References _debug, _print, pgpDig_s::g, pgpDig_s::p, pgpMpiHex, pgpMpiLen, pgpMpiStr, pgpPrtNL, pgpPrtStr, PGPPUBKEYALGO_DSA, PGPPUBKEYALGO_ELGAMAL_ENCRYPT, PGPPUBKEYALGO_RSA, pgpPublicDSA, pgpPublicELGAMAL, pgpPublicRSA, pgpDig_s::q, pgpDig_s::rsa_pk, pgpDigParams_s::signid, and pgpDig_s::y.

Referenced by pgpPrtKey.

  const byte* pgpPrtSeckeyParams (byte pubkey_algo, const byte * p, const byte * h, unsigned int hlen) [static]

Definition at line 741 of file rpmpgp.c.

References pgpMpiLen, pgpMpiStr, pgpPrtHex, pgpPrtInt, pgpPrtNL, pgpPrtStr, pgpPrtVal, PGPPUBKEYALGO_DSA, PGPPUBKEYALGO_ELGAMAL_ENCRYPT, PGPPUBKEYALGO_RSA, pgpSecretDSA, pgpSecretELGAMAL, and pgpSecretRSA.

Referenced by pgpPrtKey.

  int pgpPrtSig (pgpTag tag, const byte * h, unsigned int hlen)

Definition at line 500 of file rpmpgp.c.

References _debug, _print, pgpDigParams_s::hash, pgpPktSigV4_s::hash_algo, pgpDigParams_s::hash_algo, pgpPktSigV3_s::hash_algo, pgpPktSigV4_s::hashlen, pgpDigParams_s::hashlen, pgpPktSigV3_s::hashlen, pgpGrab, pgpHexStr, pgpPrtHex, pgpPrtNL, pgpPrtSigParams, pgpPrtSubType, pgpPrtVal, pgpTag, pgpPktSigV4_s::pubkey_algo, pgpDigParams_s::pubkey_algo, pgpPktSigV3_s::pubkey_algo, pgpDigParams_s::signhash16, pgpPktSigV3_s::signhash16, pgpDigParams_s::signid, pgpPktSigV3_s::signid, pgpPktSigV4_s::sigtype, pgpDigParams_s::sigtype, pgpPktSigV3_s::sigtype, pgpDigParams_s::time, pgpPktSigV3_s::time, pgpPktSigV4_s::version, pgpPktSigV3_s::version, pgpDigParams_s::version, and xmalloc.

  int pgpPrtSigParams (pgpTag tag, byte pubkey_algo, byte sigtype, const byte * p, const byte * h, unsigned int hlen) [static]

Definition at line 444 of file rpmpgp.c.

References _debug, _print, pgpDig_s::c, pgpHexSet, pgpMpiHex, pgpMpiLen, pgpMpiStr, pgpPrtNL, pgpPrtStr, PGPPUBKEYALGO_DSA, PGPPUBKEYALGO_RSA, pgpSigDSA, pgpSigRSA, PGPSIGTYPE_BINARY, PGPSIGTYPE_TEXT, pgpTag, pgpDig_s::r, and pgpDig_s::s.

Referenced by pgpPrtSig.

  void pgpPrtStr (const char * pre, const char * s) [static]

Definition at line 276 of file rpmpgp.c.

References _print.

Referenced by pgpPrtPubkeyParams, pgpPrtSeckeyParams, and pgpPrtSigParams.

  int pgpPrtSubType (const byte * h, unsigned int hlen)

Definition at line 341 of file rpmpgp.c.

References pgpGrab, pgpLen, pgpPrtHex, pgpPrtNL, pgpPrtVal, PGPSUBTYPE_BACKWARD_COMPAT, PGPSUBTYPE_EXPORTABLE_CERT, PGPSUBTYPE_INTERNAL_100, PGPSUBTYPE_INTERNAL_101, PGPSUBTYPE_INTERNAL_102, PGPSUBTYPE_INTERNAL_103, PGPSUBTYPE_INTERNAL_104, PGPSUBTYPE_INTERNAL_105, PGPSUBTYPE_INTERNAL_106, PGPSUBTYPE_INTERNAL_107, PGPSUBTYPE_INTERNAL_108, PGPSUBTYPE_INTERNAL_109, PGPSUBTYPE_INTERNAL_110, PGPSUBTYPE_ISSUER_KEYID, PGPSUBTYPE_KEY_EXPIRE_TIME, PGPSUBTYPE_KEY_FLAGS, PGPSUBTYPE_KEYSERVER_PREFERS, PGPSUBTYPE_NOTATION, PGPSUBTYPE_POLICY_URL, PGPSUBTYPE_PREFER_COMPRESS, PGPSUBTYPE_PREFER_HASH, PGPSUBTYPE_PREFER_KEYSERVER, PGPSUBTYPE_PREFER_SYMKEY, PGPSUBTYPE_PRIMARY_USERID, PGPSUBTYPE_REGEX, PGPSUBTYPE_REVOCABLE, PGPSUBTYPE_REVOKE_KEY, PGPSUBTYPE_REVOKE_REASON, PGPSUBTYPE_SIG_CREATE_TIME, PGPSUBTYPE_SIG_EXPIRE_TIME, PGPSUBTYPE_SIGNER_USERID, PGPSUBTYPE_TRUST_SIG, PGPTAG_PUBLIC_KEY, pgpDigParams_s::signid, pgpDigParams_s::tag, and pgpDigParams_s::time.

  int pgpPrtUserID (pgpTag tag, const byte * h, unsigned int hlen)

Definition at line 878 of file rpmpgp.c.

References pgpPrtNL, pgpPrtVal, pgpTag, pgpDigParams_s::userid, and xmalloc.

  void pgpPrtVal (const char * pre, pgpValTbl vs, byte val)

Definition at line 296 of file rpmpgp.c.

References _print, pgpValStr, and pgpValTbl.

  pgpArmor pgpReadPkts (const char * fn, const byte ** pkt, size_t * pktlen)

Definition at line 1064 of file rpmpgp.c.

References _free, pgpArmor, PGPARMOR_ERROR, PGPARMOR_NONE, PGPARMOR_PUBKEY, pgpCRC, pgpGrab, pgpIsPkt, pgpValTok, and rpmioSlurp.

VARIABLE DOCUMENTATION

  int _debug = 0 [static]

Definition at line 11 of file rpmpgp.c.

Referenced by pgpHexSet, pgpPrtPubkeyParams, pgpPrtSig, and pgpPrtSigParams.

  struct pgpDig_s* _dig = NULL [static]

Definition at line 17 of file rpmpgp.c.

  struct pgpDigParams_s* _digp = NULL [static]

Definition at line 20 of file rpmpgp.c.

  int _print = 0 [static]

Definition at line 14 of file rpmpgp.c.

Referenced by pgpHexSet, pgpPrtHex, pgpPrtInt, pgpPrtNL, pgpPrtPkts, pgpPrtPubkeyParams, pgpPrtSig, pgpPrtSigParams, pgpPrtStr, and pgpPrtVal.

  struct pgpValTbl_s pgpArmorKeyTbl[]

Initial value:

 {
    { PGPARMORKEY_VERSION,      'Version: ' },
    { PGPARMORKEY_COMMENT,      'Comment: ' },
    { PGPARMORKEY_MESSAGEID,    'MessageID: ' },
    { PGPARMORKEY_HASH,         'Hash: ' },
    { PGPARMORKEY_CHARSET,      'Charset: ' },
    { -1,                       'Unknown armor key' }
}

Definition at line 236 of file rpmpgp.c.

  struct pgpValTbl_s pgpArmorTbl[]

Initial value:

 {
    { PGPARMOR_MESSAGE,         'MESSAGE' },
    { PGPARMOR_PUBKEY,          'PUBLIC KEY BLOCK' },
    { PGPARMOR_SIGNATURE,       'SIGNATURE' },
    { PGPARMOR_SIGNED_MESSAGE,  'SIGNED MESSAGE' },
    { PGPARMOR_FILE,            'ARMORED FILE' },
    { PGPARMOR_PRIVKEY,         'PRIVATE KEY BLOCK' },
    { PGPARMOR_SECKEY,          'SECRET KEY BLOCK' },
    { -1,                       'Unknown armor block' }
}

Definition at line 225 of file rpmpgp.c.

  struct pgpValTbl_s pgpCompressionTbl[]

Initial value:

 {
    { PGPCOMPRESSALGO_NONE,     'Uncompressed' },
    { PGPCOMPRESSALGO_ZIP,      'ZIP' },
    { PGPCOMPRESSALGO_ZLIB,     'ZLIB' },
    { -1,                       'Unknown compression algorithm' },
}

Definition at line 138 of file rpmpgp.c.

  struct pgpValTbl_s pgpHashTbl[]

Initial value:

 {
    { PGPHASHALGO_MD5,          'MD5' },
    { PGPHASHALGO_SHA1,         'SHA1' },
    { PGPHASHALGO_RIPEMD160,    'RIPEMD160' },
    { PGPHASHALGO_MD2,          'MD2' },
    { PGPHASHALGO_TIGER192,     'TIGER192' },
    { PGPHASHALGO_HAVAL_5_160,  'HAVAL-5-160' },
    { -1,                       'Unknown hash algorithm' },
}

Definition at line 145 of file rpmpgp.c.

  struct pgpValTbl_s pgpKeyServerPrefsTbl[]

Initial value:

 {
    { 0x80,                     'No-modify' },
    { -1,                       'Unknown key server preference' },
}

Definition at line 157 of file rpmpgp.c.

  struct pgpValTbl_s pgpPubkeyTbl[]

Initial value:

 {
    { PGPPUBKEYALGO_RSA,        'RSA' },
    { PGPPUBKEYALGO_RSA_ENCRYPT,'RSA(Encrypt-Only)' },
    { PGPPUBKEYALGO_RSA_SIGN,   'RSA(Sign-Only)' },
    { PGPPUBKEYALGO_ELGAMAL_ENCRYPT,'Elgamal(Encrypt-Only)' },
    { PGPPUBKEYALGO_DSA,        'DSA' },
    { PGPPUBKEYALGO_EC,         'Elliptic Curve' },
    { PGPPUBKEYALGO_ECDSA,      'ECDSA' },
    { PGPPUBKEYALGO_ELGAMAL,    'Elgamal' },
    { PGPPUBKEYALGO_DH,         'Diffie-Hellman (X9.42)' },
    { -1,                       'Unknown public key algorithm' },
}

Definition at line 110 of file rpmpgp.c.

  const char* pgpPublicDSA[] [static]

Initial value:

 {
    '    p =',
    '    q =',
    '    g =',
    '    y =',
    NULL,
}

Definition at line 623 of file rpmpgp.c.

Referenced by pgpPrtPubkeyParams.

  const char* pgpPublicELGAMAL[] [static]

Initial value:

 {
    '    p =',
    '    g =',
    '    y =',
    NULL,
}

Definition at line 638 of file rpmpgp.c.

Referenced by pgpPrtPubkeyParams.

  const char* pgpPublicRSA[] [static]

Initial value:

 {
    '    n =',
    '    e =',
    NULL,
}

Definition at line 607 of file rpmpgp.c.

Referenced by pgpPrtPubkeyParams.

  const char* pgpSecretDSA[] [static]

Initial value:

 {
    '    x =',
    NULL,
}

Definition at line 632 of file rpmpgp.c.

Referenced by pgpPrtSeckeyParams.

  const char* pgpSecretELGAMAL[] [static]

Initial value:

 {
    '    x =',
    NULL,
}

Definition at line 646 of file rpmpgp.c.

Referenced by pgpPrtSeckeyParams.

  const char* pgpSecretRSA[] [static]

Initial value:

 {
    '    d =',
    '    p =',
    '    q =',
    '    u =',
    NULL,
}

Definition at line 614 of file rpmpgp.c.

Referenced by pgpPrtSeckeyParams.

  const char* pgpSigDSA[] [static]

Initial value:

 {
    '    r =',
    '    s =',
    NULL,
}

Definition at line 437 of file rpmpgp.c.

Referenced by pgpPrtSigParams.

  const char* pgpSigRSA[] [static]

Initial value:

 {
    ' m**d =',
    NULL,
}

Definition at line 431 of file rpmpgp.c.

Referenced by pgpPrtSigParams.

  struct pgpValTbl_s pgpSigTypeTbl[]

Initial value:

 {
    { PGPSIGTYPE_BINARY,        'Binary document signature' },
    { PGPSIGTYPE_TEXT,          'Text document signature' },
    { PGPSIGTYPE_STANDALONE,    'Standalone signature' },
    { PGPSIGTYPE_GENERIC_CERT,  'Generic certification of a User ID and Public Key' },
    { PGPSIGTYPE_PERSONA_CERT,  'Persona certification of a User ID and Public Key' },
    { PGPSIGTYPE_CASUAL_CERT,   'Casual certification of a User ID and Public Key' },
    { PGPSIGTYPE_POSITIVE_CERT, 'Positive certification of a User ID and Public Key' },
    { PGPSIGTYPE_SUBKEY_BINDING,'Subkey Binding Signature' },
    { PGPSIGTYPE_SIGNED_KEY,    'Signature directly on a key' },
    { PGPSIGTYPE_KEY_REVOKE,    'Key revocation signature' },
    { PGPSIGTYPE_SUBKEY_REVOKE, 'Subkey revocation signature' },
    { PGPSIGTYPE_CERT_REVOKE,   'Certification revocation signature' },
    { PGPSIGTYPE_TIMESTAMP,     'Timestamp signature' },
    { -1,                       'Unknown signature type' },
}

Definition at line 93 of file rpmpgp.c.

  struct pgpValTbl_s pgpSubTypeTbl[]

Definition at line 163 of file rpmpgp.c.

  struct pgpValTbl_s pgpSymkeyTbl[]

Initial value:

 {
    { PGPSYMKEYALGO_PLAINTEXT,  'Plaintext' },
    { PGPSYMKEYALGO_IDEA,       'IDEA' },
    { PGPSYMKEYALGO_TRIPLE_DES, '3DES' },
    { PGPSYMKEYALGO_CAST5,      'CAST5' },
    { PGPSYMKEYALGO_BLOWFISH,   'BLOWFISH' },
    { PGPSYMKEYALGO_SAFER,      'SAFER' },
    { PGPSYMKEYALGO_DES_SK,     'DES/SK' },
    { PGPSYMKEYALGO_AES_128,    'AES(128-bit key)' },
    { PGPSYMKEYALGO_AES_192,    'AES(192-bit key)' },
    { PGPSYMKEYALGO_AES_256,    'AES(256-bit key)' },
    { PGPSYMKEYALGO_TWOFISH,    'TWOFISH' },
    { -1,                       'Unknown symmetric key algorithm' },
}

Definition at line 123 of file rpmpgp.c.

  struct pgpValTbl_s pgpTagTbl[]

Initial value:

 {
    { PGPTAG_PUBLIC_SESSION_KEY,'Public-Key Encrypted Session Key' },
    { PGPTAG_SIGNATURE,         'Signature' },
    { PGPTAG_SYMMETRIC_SESSION_KEY,'Symmetric-Key Encrypted Session Key' },
    { PGPTAG_ONEPASS_SIGNATURE, 'One-Pass Signature' },
    { PGPTAG_SECRET_KEY,        'Secret Key' },
    { PGPTAG_PUBLIC_KEY,        'Public Key' },
    { PGPTAG_SECRET_SUBKEY,     'Secret Subkey' },
    { PGPTAG_COMPRESSED_DATA,   'Compressed Data' },
    { PGPTAG_SYMMETRIC_DATA,    'Symmetrically Encrypted Data' },
    { PGPTAG_MARKER,            'Marker' },
    { PGPTAG_LITERAL_DATA,      'Literal Data' },
    { PGPTAG_TRUST,             'Trust' },
    { PGPTAG_USER_ID,           'User ID' },
    { PGPTAG_PUBLIC_SUBKEY,     'Public Subkey' },
    { PGPTAG_COMMENT_OLD,       'Comment (from OpenPGP draft)' },
    { PGPTAG_PHOTOID,           'PGP's photo ID' },
    { PGPTAG_ENCRYPTED_MDC,     'Integrity protected encrypted data' },
    { PGPTAG_MDC,               'Manipulaion detection code packet' },
    { PGPTAG_PRIVATE_60,        'Private #60' },
    { PGPTAG_COMMENT,           'Comment' },
    { PGPTAG_PRIVATE_62,        'Private #62' },
    { PGPTAG_CONTROL,           'Control (GPG)' },
    { -1,                       'Unknown packet tag' },
}

Definition at line 199 of file rpmpgp.c.

AUTHOR

Generated automatically by Doxygen for rpm from the source code.