rpm  6.0.91
The RPM Package Manager
Macros | Typedefs | Enumerations | Functions
rpmpgp.h File Reference
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <rpm/rpmtypes.h>
#include <rpm/rpmstring.h>
#include <rpm/rpmcrypto.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.

Macros

#define PGP_KEYID_LEN   8
 
#define PGPTAG_PHOTOID   PGPTAG_USER_ATTRIBUTE /* legacy name */
 
#define PGPARMOR_ERROR   PGPARMOR_ERR_NO_BEGIN_PGP
 

Typedefs

typedef struct pgpDigParams_s * pgpDigParams
 
typedef uint8_t pgpKeyID_t[PGP_KEYID_LEN]
 
typedef enum pgpTag_e pgpTag
 
typedef enum pgpSigType_e pgpSigType
 
typedef enum pgpPubkeyAlgo_e pgpPubkeyAlgo
 
typedef enum pgpSymkeyAlgo_e pgpSymkeyAlgo
 
typedef enum pgpCompressAlgo_e pgpCompressAlgo
 
typedef enum pgpHashAlgo_e pgpHashAlgo
 
typedef enum pgpCurveId_e pgpCurveId
 
typedef enum pgpSubType_e pgpSubType
 
typedef enum pgpArmor_e pgpArmor
 
typedef enum pgpArmorKey_e pgpArmorKey
 
typedef enum pgpValType_e pgpValType
 

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_USER_ATTRIBUTE = 17, PGPTAG_ENCRYPTED_MDC = 18, PGPTAG_MDC = 19, PGPTAG_PADDING = 21,
  PGPTAG_PRIVATE_60 = 60, PGPTAG_COMMENT = 61, PGPTAG_PRIVATE_62 = 62, PGPTAG_CONTROL = 63
}
 
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_PRIMARY_BINDING = 0x19, PGPSIGTYPE_SIGNED_KEY = 0x1F, PGPSIGTYPE_KEY_REVOKE = 0x20, PGPSIGTYPE_SUBKEY_REVOKE = 0x28,
  PGPSIGTYPE_CERT_REVOKE = 0x30, PGPSIGTYPE_TIMESTAMP = 0x40, PGPSIGTYPE_THIRD_PARTY = 0x50
}
 
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, PGPPUBKEYALGO_EDDSA = 22, PGPPUBKEYALGO_X25519 = 25, PGPPUBKEYALGO_X448 = 26,
  PGPPUBKEYALGO_ED25519 = 27, PGPPUBKEYALGO_ED448 = 28, PGPPUBKEYALGO_ML_DSA65_ED25519 = 30, PGPPUBKEYALGO_ML_DSA87_ED448 = 31,
  PGPPUBKEYALGO_SLH_DSA_SHAKE_128S = 32, PGPPUBKEYALGO_SLH_DSA_SHAKE_128F = 33, PGPPUBKEYALGO_SLH_DSA_SHAKE_256S = 34, PGPPUBKEYALGO_ML_KEM768_X25519 = 35,
  PGPPUBKEYALGO_ML_KEM1024_X448 = 36
}
 
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_CAMELLIA_128 = 11,
  PGPSYMKEYALGO_CAMELLIA_192 = 12, PGPSYMKEYALGO_CAMELLIA_256 = 13, PGPSYMKEYALGO_NOENCRYPT = 110
}
 
enum  pgpCompressAlgo_e { PGPCOMPRESSALGO_NONE = 0, PGPCOMPRESSALGO_ZIP = 1, PGPCOMPRESSALGO_ZLIB = 2, PGPCOMPRESSALGO_BZIP2 = 3 }
 
enum  pgpHashAlgo_e {
  PGPHASHALGO_MD5 = 1, PGPHASHALGO_SHA1 = 2, PGPHASHALGO_RIPEMD160 = 3, PGPHASHALGO_MD2 = 5,
  PGPHASHALGO_TIGER192 = 6, PGPHASHALGO_HAVAL_5_160 = 7, PGPHASHALGO_SHA256 = 8, PGPHASHALGO_SHA384 = 9,
  PGPHASHALGO_SHA512 = 10, PGPHASHALGO_SHA224 = 11, PGPHASHALGO_SHA3_256 = 12, PGPHASHALGO_SHA3_512 = 14
}
 
enum  pgpCurveId_e {
  PGPCURVE_NIST_P_256 = 1, PGPCURVE_NIST_P_384 = 2, PGPCURVE_NIST_P_521 = 3, PGPCURVE_BRAINPOOL_P256R1 = 4,
  PGPCURVE_BRAINPOOL_P512R1 = 5, PGPCURVE_ED25519 = 6, PGPCURVE_CURVE25519 = 7
}
 
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_EMBEDDED_SIG = 32,
  PGPSUBTYPE_ISSUER_FINGERPRINT = 33, PGPSUBTYPE_INTREC_FINGERPRINT = 35, PGPSUBTYPE_PFERER_AEAD = 39, 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
}
 
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
}
 
enum  pgpValType_e {
  PGPVAL_TAG = 1, PGPVAL_ARMORBLOCK = 2, PGPVAL_ARMORKEY = 3, PGPVAL_SIGTYPE = 4,
  PGPVAL_SUBTYPE = 5, PGPVAL_PUBKEYALGO = 6, PGPVAL_SYMKEYALGO = 7, PGPVAL_COMPRESSALGO = 8,
  PGPVAL_HASHALGO = 9, PGPVAL_SERVERPREFS = 10
}
 

Functions

const char * pgpValString (pgpValType type, uint8_t val)
 
int pgpPubkeyFingerprint (const uint8_t *pkt, size_t pktlen, uint8_t **fp, size_t *fplen)
 
int pgpPubkeyKeyID (const uint8_t *pkt, size_t pktlen, pgpKeyID_t keyid)
 
int pgpPrtParams (const uint8_t *pkts, size_t pktlen, unsigned int pkttype, pgpDigParams *ret)
 
int pgpPrtParams2 (const uint8_t *pkts, size_t pktlen, unsigned int pkttype, pgpDigParams *ret, char **lints)
 
int pgpPrtParamsSubkeys (const uint8_t *pkts, size_t pktlen, pgpDigParams mainkey, pgpDigParams **subkeys, int *subkeysCount)
 
pgpArmor pgpReadPkts (const char *fn, uint8_t **pkt, size_t *pktlen)
 
pgpArmor pgpParsePkts (const char *armor, uint8_t **pkt, size_t *pktlen)
 
int pgpPubKeyCertLen (const uint8_t *pkts, size_t pktslen, size_t *certlen)
 
rpmRC pgpPubKeyLint (const uint8_t *pkts, size_t pktslen, char **explanation)
 
char * pgpArmorWrap (int atype, const unsigned char *s, size_t ns)
 
int pgpDigParamsCmp (pgpDigParams p1, pgpDigParams p2)
 
unsigned int pgpDigParamsAlgo (pgpDigParams digp, unsigned int algotype)
 
const uint8_t * pgpDigParamsSignID (pgpDigParams digp)
 
const char * pgpDigParamsUserID (pgpDigParams digp)
 
int pgpDigParamsVersion (pgpDigParams digp)
 
uint32_t pgpDigParamsCreationTime (pgpDigParams digp)
 
int pgpDigParamsSalt (pgpDigParams digp, const uint8_t **datap, size_t *lenp)
 
pgpDigParams pgpDigParamsFree (pgpDigParams digp)
 
rpmRC pgpVerifySignature (pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx)
 
rpmRC pgpVerifySignature2 (pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx, char **lints)
 
int pgpSignatureType (pgpDigParams sig)
 
char * pgpIdentItem (pgpDigParams digp)
 
rpmRC pgpPubkeyMerge (const uint8_t *pkts1, size_t pkts1len, const uint8_t *pkts2, size_t pkts2len, uint8_t **pktsm, size_t *pktsmlen, int flags)
 

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.

EdDSA algorithm identifier value taken from https://datatracker.ietf.org/doc/draft-ietf-openpgp-rfc4880bis/ This value is used in gnupg since version 2.1.0